Я использую 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);
}
Я также попробовал это, но это подчеркивает «IDC_P» в CALLBACK, и сказал это Аргумент типа «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, но я надеюсь, что этот пост по крайней мере помог вам.
Других решений пока нет …