我开发了一个应用程序,当用户使用鼠标和键盘没有做任何 Action 时,该应用程序会在一定时间后关闭。当我的应用程序主屏幕打开时,程序运行正常,程序无一异常(exception)地退出。在我的主屏幕打开并且单击主屏幕中的按钮的情况下,另一个对话框打开,并且用户没有从键盘或鼠标提供任何输入,在这种情况下应用程序关闭异常。这是代码。
void CMainFrame::OnTimer(UINT_PTR nIDEvent)
{
LASTINPUTINFO li;
li.cbSize = sizeof(LASTINPUTINFO);
::GetLastInputInfo(&li);
// Calculate the time elapsed in seconds.
DWORD te = ::GetTickCount();
int elapsed = (te - li.dwTime) / 1000;
TRACE(_T("\n%d"),elapsed);
if(m_nAutoLogOffTime < elapsed)
{
switch (m_nAutoLogOffTime)
{
case AUTO_LOGOF_1MIN:
PostMessage(WM_CLOSE);
break;
case AUTO_LOGOF_3MIN:
PostMessage(WM_CLOSE);
break;
case AUTO_LOGOF_10MIN:
PostMessage(WM_CLOSE);
break;
}
}
CFrameWnd::OnTimer(nIDEvent);
}
所以如果我在与 MainFrame 不同的窗口中,并且如果调用 PostMessage(WM_CLOSE)
则它会给出异常。所以我可以无一异常(exception)地关闭应用程序吗,即使另一个对话框是打开的。
请帮我解决紧急问题。提前致谢。
错误出现在 doccore.h
请检查图像
最佳答案
ASSERT( AfxGetMainWnd()!=NULL );
AfxGetMainWnd()->SendMessage(WM_CLOSE);
关于c++ - 如何关闭应用程序,包括所有打开的子窗口,MFC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21113884/