从CFormView类派生的窗口,如何关闭自身?我调用GetParent()->SendMessage(WM_CLOSE);或者DestroyWindow()都会报错,点击“重试”后定位到wincore.cpp的下面函数里:
LRESULT CWnd::Default()
{
// call DefWindowProc with the last message
_AFX_THREAD_STATE* pThreadState = _afxThreadState.GetData();
return DefWindowProc(pThreadState->m_lastSentMsg.message,
pThreadState->m_lastSentMsg.wParam, pThreadState->m_lastSentMsg.lParam);
}
请各位指点

解决方案 »

  1.   

    view是嵌在frame或splitter里边的。你是sdi还是mdi?要关掉的是什么?
      

  2.   

    GetParent()这个是要做什么
    直接SendMessage不行吗
      

  3.   

    mdi,childframe的,要在某种情况下把自己关掉
      

  4.   

    多谢6楼的doctorwing,改成PostMessage()可以了,不过能不能解释下为什么呢,查过很多次,一直都不是很理解SendMessage和PostMessage的区别
      

  5.   

    SendMessage()是直接把消息发送给消息相应函数,有消息相应函数处理完成以后,SendMessage函数才返回。这就造成了消息返送以后,程序流程跳转到相应的消息相应函数中,执行完成了,再返回到SendMessage的下一条语句执行。PostMessage是把消息放到消息队列中,然后理解返回,之后程序自行通过GetMessage函数按照顺序把消息一条一条读取出来。一个顺序的问题