如何在关闭对话框时可以从while循环中跳出来 一个对话框中有两个按钮,一个执行循环while从数据库中的某一段不断读出数据;另一个就是退出。问题如题。网上看了些,获取WM_CLOSE,GetMessage ......不怎么会用,也不知道好用不,希望大虾们帮帮忙,呵呵 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在while中写上:GetMessage,形成消息循环才行。 能说的具体点吗?我比较菜。while(!(m_pRecordset->adoEOF))&&GetMessage(&msg,NULL,0,0)))这样就ok了? 消息循环总知道吧,写在while里面 if(GetMessage(&&msg,NULL,NULL,NULL)) { TranslateMessage(&&msg); DispatchMessage(&&msg); } 你的退出是程序还是退出循环?如果是退出程序,那么直接向应用程序发WM_QUIT就可以了示例代码:AfxGetApp()->PostThreadMessage(WM_QUIT,0,0);如果是退出循环,那就在你的对话框类里面定义一个全局变量在while里面每次循环判断一下这个全局变量,如果满足条件就break而你的那个退出按钮就只需要设置这个变量就可以了 你while从数据库中的某一段不断读出数据,应该是在线程函数里做的吧,简单一点设置一个标记就行了,线程里每次循环判断一下这个标记,如果满足条件就退出while混淆。而你的退出按钮就是来更改这个标记的。 如果是退出循环,那就在你的对话框类里面定义一个全局变量在while里面每次循环判断一下这个全局变量,如果满足条件就break而你的那个退出按钮就只需要设置这个变量就可以了==========没用的,当while在执行时,你如何改变这个全局变量的值啊?又不是多线程 把GetMessage(&msg,NULL,0,0){.....}写在while循环里面? 如果在主线程里搞while,界面不卡吗?? to shenyi0106(飞机党飞行员) :我的程序中不止一个对话框,他只是一个读取数据库数据的对话框。我想是退出这个程序,并且这个循环也得退了。 to:VisualEleven(Eleven【兔子党组织部长】) :简单一点设置一个标记就行了???有这么简单?好像一循环就不管其他的变量了 设一个标志量,初始化为FALSE,在while循环中判断如果为TRUE就break,当你退出对话框之前,先把这个标志量设为TRUE,这样while循环就能退出了 建议另开线程执行循环while,建立使用CreateEvent建立局部变量hHandle,在while中使用WaitForSingleObject(hHandle, 0),如果返回值为WAIT_OBJECT_0则退出线程,在退出按钮处理函数中使用SetEvent 激活hHandle 如果在主线程里搞while,界面不卡吗??===========不卡吧,有消息循环怎么会卡呢 if(GetMessage(&&msg,NULL,NULL,NULL)) { TranslateMessage(&&msg); DispatchMessage(&&msg); } 不能在主线程里 while,要单独开线程,类似这样while(!bClose){ .... 做你的工作}在另一个退出按钮那里,控制bClose=true即可退出 if( !::IsWindow( this->GetSafeHwnd() ) ){ break;} 在继承自Cscrollview的视图中画矩形,在滚动时矩形花掉,有很多线条痕迹 关于《深入浅出mfc》 怎么根据IP得到主机名或是域名 求助:在哪里可以找到pageheap的使用说明呀 *** 当toolbar左/右边停靠的时候,我想显示两列的按钮,请问怎么弄?*** 请教CDHtmlDialog中引用html资源,加载路径的问题。 com技术内幕的第十章:如何编译idl文件(先20分试探)? ocx注册时的问题 CString的转化问题,odbc的一个问题 [求助]关于VS2005无法调试的问题 关于透明位图显示,对BitBlt不甚理解的地方。 怎么disable单文本窗口右上中间按钮
while(!(m_pRecordset->adoEOF))&&GetMessage(&msg,NULL,0,0)))这样就ok了?
{
TranslateMessage(&&msg);
DispatchMessage(&&msg);
}
如果是退出程序,那么直接向应用程序发WM_QUIT就可以了
示例代码:
AfxGetApp()->PostThreadMessage(WM_QUIT,0,0);
如果是退出循环,那就在你的对话框类里面定义一个全局变量
在while里面每次循环判断一下这个全局变量,如果满足条件就break
而你的那个退出按钮就只需要设置这个变量就可以了
在while里面每次循环判断一下这个全局变量,如果满足条件就break
而你的那个退出按钮就只需要设置这个变量就可以了
==========
没用的,当while在执行时,你如何改变这个全局变量的值啊?又不是多线程
===========
不卡吧,有消息循环怎么会卡呢
{
TranslateMessage(&&msg);
DispatchMessage(&&msg);
}
while(!bClose)
{
.... 做你的工作
}
在另一个退出按钮那里,控制bClose=true即可退出
{
break;
}