0

我是 MFC 和 Windows 消息传递概念的新手。Windows消息和事件之间有什么区别或相似之处?比如当用户按下一个键或控件的关闭按钮时,它会是消息还是事件?

谢谢

4

1 回答 1

4

当用户按下一个键或执行任何其他形式的输入时,系统会将消息放入消息队列中。然后,您的应用程序必须在其消息循环中提取这些消息,并处理它们。

许多 UI 框架会为您处理这些消息并将它们转换为事件。请注意,您谈论的事件不是 Windows 定义的任何意义上的事件。事件的使用是指在您使用的任何编程语言/框架中定义的概念。Windows 事件用于线程同步。

顶级消息循环可能如下所示:

MSG msg;
while(GetMessage(&msg, NULL, 0, 0) > 0)
{
    TranslateMessage(&msg);
    DispatchMessage(&msg);
}

调用DispatchMessage导致调用窗口过程。GUI 框架通常实现该窗口过程并将消息转换为事件。

因此,执行摘要是:

  1. 输入事件导致消息。
  2. GUI 框架将消息转换为事件。
  3. 您实现事件处理程序来响应这些事件。
于 2012-05-23T11:19:13.470 回答