自己做了一个Wait函数
有自己的消息泵可是主窗口关闭它却不知道
结果程序进程关不了如何改进呀??

解决方案 »

  1.   

    void CSIM::Wait(int nDelay)
    {
    DWORD nStartTime = GetTickCount();
    while(true)
    {
    DWORD nEndTime = GetTickCount();
    if(nEndTime - nStartTime > (DWORD)nDelay)
    break; //消息泵
    MSG rMsg;

    //无消息返回
    if(!PeekMessage(&rMsg, NULL, 0, 0, PM_NOREMOVE))
    {
    continue;
    }
    else
    {
    //消息处理
    if(!rMsg.message || !AfxGetApp()->PumpMessage())
    {
    PostQuitMessage(0); 
    break;
    }
    }
    }
    }
      

  2.   

    PeekMessage()收到退出消息会失败吗?
      

  3.   

    void CSIM::Wait(int nDelay)
    {
    DWORD nStartTime = GetTickCount();
    while(true)
    {
    DWORD nEndTime = GetTickCount();
    if(nEndTime - nStartTime > (DWORD)nDelay)
    break; //消息泵
    MSG rMsg;

    //无消息返回
    PostQuitMessage(0);
    if(!PeekMessage(&rMsg, NULL, 0, 0, PM_NOREMOVE))
    {
    AfxMessageBox("1");
    continue;
    }
    else
    {
    AfxMessageBox("2");
    //消息处理
    if(!rMsg.message || !AfxGetApp()->PumpMessage())
    {
    PostQuitMessage(0); 
    break;
    }
    }
    }
    }try it
      

  4.   

    PostQuitMessage(0)不就退出了吗??
    我的Wait又不要退出