我看过一些资料上说可用一个Timer,但是怎样判断一个按扭是否被按下呢?
或者能用其它什么方法使程序在执行一个长时间的操作时能通过单击“取消”按钮来中止操作呢?谢谢。

解决方案 »

  1.   

    MSG msg;
    for(;;)
    {
      while(::PeekMessage(&msg,NULL,0,0,PM_REMOVE))
     {
        ::TranslateMessage(&msg);
        ::DispatchMessage(&msg);
      }
    ...
    }
      

  2.   

    使用这样的函数: 
        BOOL CheckMessageQueue() 
        { 
         MSG msg; 
         
         while(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)){ 
         if(msg.message==WM_QUIT) 
         return FALSE; 
         TranslateMessage(&msg); 
         DispatchMessage(&msg); 
         } 
         return TRUE; 
        } 
        该函数可以实现DoEvents的效果。但有一点不同,如果该函数返回FALSE,说明用户按下了关闭按钮。