MFC \ C ++:使用PostMessage后程序给出异常(WM_CLOSE)

时间:2014-01-15 09:59:15

标签: c++ winapi visual-c++ mfc

我正在开展一个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但结果相同。

这是我得到断言的函数。

enter image description here

所以,任何人都可以帮助我。

抱歉英语不好。

提前谢谢。

0 个答案:

没有答案