一个有意思的小问题,这个代码是基于MFC创建的对话框,在OnTimer定时器中,我执行了KillTimer。
请问定时器是否被关闭了
BOOL CMFCApplication2Dlg::OnInitDialog()
{
CDialogEx::OnInitDialog();
// 将“关于...”菜单项添加到系统菜单中。
// IDM_ABOUTBOX 必须在系统命令范围内。
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != nullptr)
{
BOOL bNameValid;
CString strAboutMenu;
bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
ASSERT(bNameValid);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// 设置此对话框的图标。 当应用程序主窗口不是对话框时,框架将自动
// 执行此操作
SetIcon(m_hIcon, TRUE); // 设置大图标
SetIcon(m_hIcon, FALSE); // 设置小图标
// TODO: 在此添加额外的初始化代码
SetTimer(1,1000,NULL);
return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
}
void CMFCApplication2Dlg::OnTimer(UINT_PTR nIDEvent)
{
if (nIDEvent == 1)
{
// 测试模态对话框是否会阻塞定时器主窗口
KillTimer(1);
CMFCApplication2Dlg dlg;
dlg.DoModal();
}
CDialogEx::OnTimer(nIDEvent);
}