有关非模态的对话框的问题

jxc123 2006-10-19 08:45:01
我有一段程序代码如下:
CWaitDlg *dlg ;
dlg=new CWaitDlg();
dlg->Create(IDD_WAIT,this);
dlg->MoveWindow(380,260,266,250);
dlg->ShowWindow(SW_SHOW);
dlg->UpdateWindow();
Sleep(10000);
其中的CWaitDlg是一个等待对话框,我的目的是当程序连接远程主机端口时,启用等待窗口,远程连接结束时(无论成功与否)关闭等待对话框,但上面的代码放在OnInitDialog()中时能成功执行,但放在某一个按钮的执行程序中就会出现程序未响应,整个程序停止,要等待一段时间才能恢复,因为我做的是通过网络远程连接主机的程序,当连接时需要等待,但不知为什么,每次连接,除非IP地址和密码都正确,否则程序无法响应,就跟加入Sleep(10000)这个函数效果一样,请问有什么办法可以解决这类问题吗?
...全文
184 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
jxc123 2006-11-08
  • 打赏
  • 举报
回复
对不起 最近很忙 马上结贴
mynamelj 2006-10-20
  • 打赏
  • 举报
回复
要结束线程,只要当条件满足直接return 0;
jxc123 2006-10-20
  • 打赏
  • 举报
回复
非常感谢大家,我还想问一下,如果将等待对话框和进行网络测试的函数放在一个新开的线程里,当我不需要再等的时候,可不可以通过等待对话框发送命令结束这个新开的线程呢,能否给个例子,谢谢
东文-桑晨 2006-10-19
  • 打赏
  • 举报
回复
Mark
zhucde 2006-10-19
  • 打赏
  • 举报
回复
这种问题都是靠新开线程来解决,放在主线程里会阻塞主线程的运行.
lixiaosan 2006-10-19
  • 打赏
  • 举报
回复
应该是开一个worker thread,来进行连接网络的测试,这样才不会造成主线程界面的阻塞。

当然,等待对话框也应该在线程中了。。
mynamelj 2006-10-19
  • 打赏
  • 举报
回复
最好不要使用睡眠这样会使程序咀赛。
再一个原因是,可能你不知道要等多久才关闭这个窗口,所以你不该使用睡眠。

你可以把CWaitDlg *dlg定义为成员,当你的某种条件成立之后你再可以dlg->DestroyWindow()。
王国凡 2006-10-19
  • 打赏
  • 举报
回复
使用多线程, 在另一个线程中显示那个等待窗口.

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧