我正在开展一个MFC\C++ SDI
项目,我希望在计时器事件中关闭MainFrame
类的所有子窗口。
我已为Timer编写代码,并使用PostMessage()关闭应用程序。
我正在使用下面的代码。
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);
}
但是如果任何子窗口像任何对话框一样打开并且经过的时间结束了。
然后使用PostMessage()
调用WM_CLOSE
函数。但在关闭我的申请时,我在doccore.h
获得了例外。
我无法理解为什么应用程序会发生这种情况。
我也尝试了exit(0)
,PostQuitMessage(0)
和WM_DESTROY
但结果相同。
这是我得到断言的函数。
所以,任何人都可以帮助我。
抱歉英语不好。
提前谢谢。