我开发了一个应用程序,在用户使用鼠标和键盘完成任何移动的一段时间后关闭。当应用程序的主屏幕打开时,程序正常工作,程序没有任何异常退出。在一个场景中,我的主屏幕打开,在主屏幕上点击按钮,另一个对话框打开,用户没有从键盘或鼠标输入,在这种情况下,应用程序关闭,异常。这是代码。
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)
被调用,那么它会给出异常。即使另一个对话框打开,我也可以毫无例外地关闭应用程序。
请帮我急。谢谢。
doccore.h中出现错误
请检查图像
答案 0 :(得分:1)
ASSERT( AfxGetMainWnd()!=NULL );
AfxGetMainWnd()->SendMessage(WM_CLOSE);