C++(按下按钮1,显示位图"P",2秒,隐藏位图"P")
C++ (press button 1, show bitmap "P", 2sec, hide bitmap "P")
我正在使用C++,我想在对话框中执行此操作。
按下按钮 1,显示位图"P",等待 2 秒,隐藏位图"P",再次按下按钮 1.....
void CPreparationDlg::OnBnClickedButton1()
{
GetDlgItem(IDC_P)->ShowWindow(SW_SHOW);
SetTimer(0, 2000, NULL);
GetDlgItem(IDC_P)->ShowWindow(SW_HIDE);
}
在此对话框中,我分别做了4个按钮和4张不同的图片。按钮为1,2,3,4,图片为IDC_P,IDC_L,IDC_E,IDC_K。
!!!!在我为按钮 1 尝试这些代码后,无法显示位图。我只能做的是展示,但它无法隐藏。
void CPreparationDlg::OnBnClickedButton1()
{
GetDlgItem(IDC_P)->ShowWindow(SW_SHOW);
}
void CPreparationDlg::OnBnClickedButton2()
{
GetDlgItem(IDC_L)->ShowWindow(SW_SHOW);
}
void CPreparationDlg::OnBnClickedButton3()
{
GetDlgItem(IDC_E)->ShowWindow(SW_SHOW);
}
void CPreparationDlg::OnBnClickedButton4()
{
GetDlgItem(IDC_K)->ShowWindow(SW_SHOW);
}
我也尝试过这些,但它在 CALLBACK 中强调了"IDC_P",并说它类型"int"的参数与 HWND 类型的参数不兼容
void CPreparationDlg::OnBnClickedButton1()
{
GetDlgItem(IDC_P)->ShowWindow(SW_SHOW);
UINT TimerId = SetTimer(0, 2000, &TimerProc);
}
VOID CALLBACK TimerProc(HWND hWnd, UINT nMsg, UINT nIDEvent, DWORD dwTime)
{
GetDlgItem(**IDC_P**)->ShowWindow(SW_HIDE);
}
你可以试试:
void CPreparationDlg::OnBnClickedButton1()
{
GetDlgItem(IDC_P)->ShowWindow(SW_SHOW);
Sleep(2000);
GetDlgItem(IDC_P)->ShowWindow(SW_HIDE);
}
但这会使您的应用程序停止,直到 2 秒结束。
您也可以尝试使用 AfxBeginThread
或 CreateThread
创建一个线程来执行这对您来说,因此它不会停止您的应用程序。
但我认为最可行的选择是使用 Windows 计时器,就像您在示例中所做的那样,并在窗口过程中处理WM_TIMER
消息,并不完全精通如何在 MFC 中执行此操作,但我希望这篇文章至少对您有所帮助。
相关文章:
- C / C++ 移位/偏移/向左或向右移动位图?
- 如何在快板的屏幕中显示子位图的绘制?
- CreateDIBSection为同一图像返回不一致的位图位值
- C++ 位图中的 ttc 字体
- 使用 GDI+ 旋转位图,然后转换为 HDC
- 难以从 CImageList 设置菜单项位图
- 如何将位图拉伸到父面板(wxWidgets 自定义)
- 如何使用 freetype2 访问单色位图中的像素状态
- 将位图 (bmp) 转换为具有透明度的 png (Windows c++)
- 安卓工作室 |CPP 文件错误错误: 位图库中对"AndroidBitmap_unlockPixels"的未定义引用
- 位图到垫子/2D 数组
- Gdiplus位图没有Alpha通道
- 如何从路径字符串加载Gdiplus::位图
- 在C++中使用Gdiplus创建透明位图
- 用C++压缩内存中的位图
- C++gdi::内存中的位图到PNG图像
- LoadImage 函数不适用于 ImageMagick 创建的位图图像
- (位图)LoadImage() 返回 NULL,GetLastError() 返回 0
- C++(按下按钮1,显示位图"P",2秒,隐藏位图"P")
- 快板 5 如何隐藏/卸载位图