如何在子线程中创建对话框

hblqhyz 2012-03-24 10:35:01
DWORD WINAPI ThreadProc1(LPVOID lpParameter)//线程函数1
{
CaaaDlg g;//CaaaDlg是基于CDialog的对话框类,上面有各种控件
g.DoModal();

return 0;
}

编译时就出错了! 网上说在子线程中需要向主线程发送消息,然后由主线程来创建对话框,但这样一来,分明就成了主线程创建的对话框了,而不是由子线程创建的了;我需要真正地由子线程创建出对话框使用,因为这个对话框中将放入一个webbrowser控件,如果由主线程创建出对话框后再放入webbrowser的话,当装载网页时就会阻塞主线程界面,让用户不能进行操作了,所以这个对话框一定要由子线程来创建 !请教高人:如何在子线程中创建对话框?
...全文
398 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
向立天 2012-03-28
  • 打赏
  • 举报
回复
你这么操作应该是没有问题
出问题应该是其他相关操作引起的
wang_jian_ping 2012-03-28
  • 打赏
  • 举报
回复
爷们儿,你都DoModal()了,不管怎样,你已经把主窗口给屏了吧
hblqhyz 2012-03-25
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 kaile 的回复:]
子线程发消息,让主线程来处理弹出对话框操作
[/Quote]
但这样一来,建出的对话框本质上还是主线程的窗口啊,如果在这个窗口中放上一个webbrowser,岂不把主线程界面给阻塞了吗?我的目的,是要真正的由子线程创建出属于他自己的窗体,好在上面放webbrowser,这样主线程界面可以正常操作,不致被阻塞!
dong364 2012-03-25
  • 打赏
  • 举报
回复
发消息给主对话框,让主对话框创建非模态子对话框,然后show出来,这样就不会干扰主对话框的其他消息响应
Kaile 2012-03-25
  • 打赏
  • 举报
回复
hblqhyz 2012-03-25
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 kaile 的回复:]
你在对话框中放一个浏览器控件,浏览器访问一个比较慢的网站,比如欧洲的一个网站,在浏览器没有完全打开时,相信你的对话框还可以最小化,所以你的担心不存在
[/Quote]

我的项目要求在webbrowser.Navigate的全程中都不能丝毫阻塞主线程界面,因为用户会在主线程界面上不停地进行操作,因此,必须完全用子线程来创建出这个对话框来盛装webbrowser,这样无论webbrowser装载有多慢,都与主线程界面无关了!
Kaile 2012-03-25
  • 打赏
  • 举报
回复
你在对话框中放一个浏览器控件,浏览器访问一个比较慢的网站,比如欧洲的一个网站,在浏览器没有完全打开时,相信你的对话框还可以最小化,所以你的担心不存在
Kaile 2012-03-24
  • 打赏
  • 举报
回复
子线程发消息,让主线程来处理弹出对话框操作
Lactoferrin 2012-03-24
  • 打赏
  • 举报
回复
什么编译错误

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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