一个对话框中有两个按钮,一个执行循环while从数据库中的某一段不断读出数据;另一个就是退出。
问题如题。
网上看了些,获取WM_CLOSE,GetMessage ......不怎么会用,也不知道好用不,希望大虾们帮帮忙,呵呵

解决方案 »

  1.   

    在while中写上:GetMessage,形成消息循环才行。
      

  2.   

    能说的具体点吗?我比较菜。
    while(!(m_pRecordset->adoEOF))&&GetMessage(&msg,NULL,0,0)))这样就ok了?
      

  3.   

    消息循环总知道吧,写在while里面
      

  4.   

    if(GetMessage(&&msg,NULL,NULL,NULL))   

    TranslateMessage(&&msg);  
    DispatchMessage(&&msg);   
      

  5.   

    你的退出是程序还是退出循环?
    如果是退出程序,那么直接向应用程序发WM_QUIT就可以了
    示例代码:
    AfxGetApp()->PostThreadMessage(WM_QUIT,0,0);
    如果是退出循环,那就在你的对话框类里面定义一个全局变量
    在while里面每次循环判断一下这个全局变量,如果满足条件就break
    而你的那个退出按钮就只需要设置这个变量就可以了
      

  6.   

    你while从数据库中的某一段不断读出数据,应该是在线程函数里做的吧,简单一点设置一个标记就行了,线程里每次循环判断一下这个标记,如果满足条件就退出while混淆。而你的退出按钮就是来更改这个标记的。
      

  7.   

    如果是退出循环,那就在你的对话框类里面定义一个全局变量
    在while里面每次循环判断一下这个全局变量,如果满足条件就break
    而你的那个退出按钮就只需要设置这个变量就可以了
    ==========
    没用的,当while在执行时,你如何改变这个全局变量的值啊?又不是多线程
      

  8.   

    把GetMessage(&msg,NULL,0,0){.....}写在while循环里面?
      

  9.   

    如果在主线程里搞while,界面不卡吗??
      

  10.   

    to shenyi0106(飞机党飞行员) :我的程序中不止一个对话框,他只是一个读取数据库数据的对话框。我想是退出这个程序,并且这个循环也得退了。
      

  11.   

    to:VisualEleven(Eleven【兔子党组织部长】) :简单一点设置一个标记就行了???有这么简单?好像一循环就不管其他的变量了
      

  12.   

    设一个标志量,初始化为FALSE,在while循环中判断如果为TRUE就break,当你退出对话框之前,先把这个标志量设为TRUE,这样while循环就能退出了
      

  13.   

    建议另开线程执行循环while,建立使用CreateEvent建立局部变量hHandle,在while中使用WaitForSingleObject(hHandle, 0),如果返回值为WAIT_OBJECT_0则退出线程,在退出按钮处理函数中使用SetEvent 激活hHandle
      

  14.   

    如果在主线程里搞while,界面不卡吗??
    ===========
    不卡吧,有消息循环怎么会卡呢
      

  15.   

    if(GetMessage(&&msg,NULL,NULL,NULL))   
    {  
    TranslateMessage(&&msg);  
    DispatchMessage(&&msg);   
      

  16.   

    不能在主线程里 while,要单独开线程,类似这样
    while(!bClose)
    {
       .... 做你的工作
    }
    在另一个退出按钮那里,控制bClose=true即可退出
      

  17.   

    if( !::IsWindow( this->GetSafeHwnd() ) )
    {
          break;
    }