Windows是否知道哪些消息属于每个特定窗口(如果知道它是如何知道的?)或者它是否只是发送消息,应用程序是否可以获取所需的消息?
谢谢大家的回复。当有人投票而没有解释时,我确实喜欢它。
答案 0 :(得分:0)
即使是这些高级的,64位的日子,Windows应用程序最终还是处于一个深刻的黑暗点,仍然包含一个窗口消息处理循环。进程'主消息“pump”负责将消息从队列中拉出,并通过(通常是)SendMessage API的hWnd参数(即方法的第一个参数)将它们引导到正确的窗口。
在一个应用程序中,像click事件这样的东西最终会被转换为一个消息到窗口,如果该窗口决定不处理该消息,则将其传递给父窗口链,直到一个选择,基于其他参数,来处理它。或者,消息的窗口接收者可以向父窗口WM_PARENT_NOTIFTY明确通知,刚刚收到的消息 it 导致父母应该知道的事情发生。例如,考虑如何在颜色选择器对话框中更改颜色可能需要通知其父级已经进行了颜色更改。在大多数应用程序中有无数这样的链接依赖关系解释了你所讨论的很多编排。
显然,要获得正确的窗口处理程序来接收,比如鼠标点击之类的东西,低级系统处理程序必须弄清楚鼠标点击时的位置,并且窗口管理器必须翻译指向z顺序中最高的窗口,以便在单击鼠标时推断该窗口是活动应用程序的一部分 - 最终使该应用程序和该窗口成为“WM_CLICK”消息的目标。
这是一个相当简单的插图,我确定可能有相关的细节(坑洼?:))我省略了,但我认为它提供了提出的基本问题的图片。我希望有所帮助。