Windows消息与事件

时间:2012-05-23 11:00:57

标签: windows winapi events message

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

由于

1 个答案:

答案 0 :(得分:3)

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

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

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

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

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

因此,执行摘要是:

  1. 输入事件会导致消息。
  2. GUI框架将消息转换为事件。
  3. 您实现事件处理程序以响应这些事件。