[英]MFC Message flow for controls?
在MFC中,假设我有一个对话框,在这个框中,它有一个子CListCtrl,然后我用鼠标点击这个CListCtrl,我们知道最终WM_LBUTTONDOWN消息被发送到CListCtrl。 我的问题是:这个WM_LBUTTONDOWN消息是如何到达那里的? 两种可能性:
哪一个是真的?
谢谢。
输入消息永远不会发送到窗口。 它们被发布到与窗口关联的消息队列中,等待通过其中一个消息检索功能( GetMessage , PeekMessage等)进行检索。
根据对话框是模态还是无模式 ,通过嵌套模态循环(对于模态对话框)或应用程序的消息循环来检索消息。 然后将消息传递给DispatchMessage ,以查找收件人(从鼠标指针下方最顶层的可见窗口开始,既不禁用也不透明),并调用关联窗口的窗口过程。 窗口过程可以决定它是否处理消息。 窗口过程通常调用DefWindowProc来执行默认处理(如果它不处理消息)。
总结:应用程序的消息循环(或嵌套的模态消息循环)首先看到消息,并指示窗口管理器将消息传递给相应的接收者。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.