我想在OnTimer()
函数内执行时显示模态对话框。
如下例所示:
void OnTimer(UINT_PTR timer)
{
if(timer == 1){
...
MainFrame.DoModal();
...
}
return;
}
虽然它成功显示了对话框,但任务栏没有显示应用按钮。
如下图所示:
dynamic array of dynamically allocated structs
原因是什么?如何解决这个问题?
下面是完整的代码:(前5秒显示正常模态对话框,其中任务栏上有app按钮。之后,它显示计时器中的模态对话框,任务栏上没有app按钮)< / p>
#include <afxwin.h>
#include "resource.h"
class CMainDlg : public CDialog
{
public:
CMainDlg(CWnd *wnd = NULL):CDialog(IDD_DIALOG2, wnd){}
CString title;
BOOL OnInitDialog()
{
CDialog::OnInitDialog();
return TRUE;
}
};
class CSpashDlg : public CDialog
{
public:
CSpashDlg(CWnd *wnd = NULL):CDialog(IDD_DIALOG1, wnd){}
CMainDlg MainFrame;
BOOL OnInitDialog()
{
CDialog::OnInitDialog();
SetTimer(1, 5000, 0);
return TRUE;
}
void OnTimer(UINT_PTR timer)
{
if(timer == 1){
KillTimer(timer);
PostMessage(WM_COMMAND, IDCANCEL);
MainFrame.DoModal();
DestroyWindow();
}
return;
}
DECLARE_MESSAGE_MAP()
};
BEGIN_MESSAGE_MAP(CSpashDlg, CDialog)
ON_WM_TIMER()
END_MESSAGE_MAP()
class MyApp : public CWinApp
{
public:
BOOL InitInstance()
{
CWinApp::InitInstance();
CSpashDlg Frame;
Frame.DoModal();
return true;
}
} a_app;