是不是每个线程如果有消息循环,只能有一个消息循环?该怎么处理(2)

 我来答
涯诗独6995
2013-11-27 · 超过70用户采纳过TA的回答
知道答主
回答量:187
采纳率:0%
帮助的人:164万
展开全部
MAKEINTRESOURCE(IDD_ABOUT), hwnd,AboutDlgProc);后,DialogBox()函数会创建一个新线程,这个新线程再创建对话框,并且负责维护对话框的消息队列,当对话框结束,新线程结束,DialogBox()返回,主线程执行DialogBox()结束。 因为我确定对话框有自己的消息队列,但是对话框的消息队列中的消息是谁处理的,我不清楚。所以请大家解惑 ------解决方案-------------------------------------------------------- DialogBox(GetModuleHandle(NULL), MAKEINTRESOURCE(IDD_ABOUT), hwnd,AboutDlgProc); 这个应该没有创建新的线程, 只是创建一个消息循环来实现消息的处理, 消息是AboutDlgProc处理的. 是1个线程2个消息队列了. 你可以用Process View这类工具看一下, 当About Dialog弹出后, 进程的线程数仍然是1. ------解决方案-------------------------------------------------------- 一个UI线程只有一个消息队列。 ------解决方案-------------------------------------------------------- 一个线程只能有一个消息队列(PostMessage 消息队列) 非模式对话框的消息也是在主线程的消息循环中处理的 对于模式对话框,其先禁止主窗口,然后自己建立一个 消息循环 处理过程,进行消息处理。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式