为什么是线程,加入不通过消息的消息

 我来答
月亮似水e5
2018-03-04 · TA获得超过412个赞
知道小有建树答主
回答量:464
采纳率:14%
帮助的人:45.3万
展开全部
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

提交
取消

辅 助

模 式