因为你的死循环已经阻塞了消息队列,所以如果在先执行了死循环,就不会有2的消息,
所以因在循环中用WaitMessage来在不需要处理时响应别的消息

解决方案 »

  1.   

    按下按钮“2”的事件应该已经加入到你的窗口的消息队列中,可以做个试验:
    BOOL stop = FALSE;
    while (!stop)
    {
    if (GetMessage()或PeekMessage(...))记不清,用哪个自己查吧。
    {
    MessageBox("...");
    stop = TRUE;
    }
    }
    当然,WM_CLOSE消息肯定还没有执行。
      

  2.   

    如果你没有给CPU一个SLEEP的机会,他有怎么会有时间来处理你的第二个按扭的消息。
    OnA:
    {
      while(1)
      {
      ;      
      Sleep(10);
      }
    }//就一个死循环
    OnB:
    {
      SendMessage(WM_CLOSE)
    }