是不是每个线程如果有消息循环,只能有一个消息循环?该怎么处理(2)
1个回答
展开全部
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 消息队列)
非模式对话框的消息也是在主线程的消息循环中处理的
对于模式对话框,其先禁止主窗口,然后自己建立一个 消息循环 处理过程,进行消息处理。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询