Windows消息与事件

Windows消息与事件,windows,winapi,events,message,Windows,Winapi,Events,Message,我不熟悉MFC和Windows消息传递的概念。windows消息和事件之间有什么区别或相似之处?比如说,当用户按下一个键或一个控件的关闭按钮时,它是一条消息还是一个事件 谢谢当用户按键或执行任何其他形式的输入时,系统会将消息放入消息队列中。然后,您的应用程序必须在其消息循环中提取这些消息,并处理它们 许多UI框架将为您处理这些消息并将其转换为事件。请注意,您谈论的事件不是Windows定义的任何意义上的事件。事件的使用是指在您使用的任何编程语言/框架中定义的概念。用于线程同步 顶层消息循环可能如

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


谢谢

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

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

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

MSG msg;
while(GetMessage(&msg, NULL, 0, 0) > 0)
{
    TranslateMessage(&msg);
    DispatchMessage(&msg);
}
调用
DispatchMessage
会导致调用一个窗口过程。GUI框架通常实现该窗口过程并将消息转换为事件

因此,执行摘要是:

  • 输入事件导致消息
  • GUI框架将消息转换为事件
  • 您可以实现事件处理程序来响应这些事件

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

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

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

    MSG msg;
    while(GetMessage(&msg, NULL, 0, 0) > 0)
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    
    调用
    DispatchMessage
    会导致调用一个窗口过程。GUI框架通常实现该窗口过程并将消息转换为事件

    因此,执行摘要是:

  • 输入事件导致消息
  • GUI框架将消息转换为事件
  • 您可以实现事件处理程序来响应这些事件

  • winapi是用C编程语言指定的。C没有任何事件的概念。因此winapi使用消息来实现类似的功能。然后通常会被转换成事件,比如类库。在MFC中使用消息映射宏时的方法调用。避免在没有阅读有关MFC的书籍的情况下尝试MFC,没有MFC你不会成功。Windows中的“事件”一词负载过重。请更具体地说明您所指的活动类型。如果没有上下文,人们通常指的是由
    CreateEvent
    创建的“内核事件”,但您可能指的是其他内容。winapi中的.Net(事件)中的相同概念是在C编程语言中指定的。C没有任何事件的概念。因此winapi使用消息来实现类似的功能。然后通常会被转换成事件,比如类库。在MFC中使用消息映射宏时的方法调用。避免在没有阅读有关MFC的书籍的情况下尝试MFC,没有MFC你不会成功。Windows中的“事件”一词负载过重。请更具体地说明您所指的活动类型。如果没有上下文,人们通常指的是由
    CreateEvent
    创建的“内核事件”,但您可能指的是其他内容。感谢您的回复,.Net(事件)中的相同概念,但是“GUI框架将消息转换为事件”是什么意思?我认为所有消息都将根据消息映射被分派到它们自己的处理程序。那么,这种转换适用于何处呢?或许你可以通过与一些参考文献的链接,解释一下你所说的事件这个术语的确切含义。这样我们就可以确定我们谈论的是同一件事。下面的URL“消息处理和映射”非常好地解释了这些问题:我来自.Net(C#)背景,因此我自然知道这个概念中的事件。事件和事件处理程序,如表单中的按钮或由此“事件”关键字定义的其他自定义事件。问题是我在MFC中看到了windows消息,如WM_CLOSE用于对话框,然后您还可以为CLOSE按钮定义事件处理程序,那么,这是否意味着当用户按下关闭按钮时,会出现一条windows消息和一个单独的事件?感谢您的回复,但是“GUI框架将消息转换为事件”是什么意思?我认为所有消息都将根据消息映射被分派到它们自己的处理程序。那么,这种转换适用于何处呢?或许你可以通过与一些参考文献的链接,解释一下你所说的事件这个术语的确切含义。这样我们就可以确定我们谈论的是同一件事。下面的URL“消息处理和映射”非常好地解释了这些问题:我来自.Net(C#)背景,因此我自然知道这个概念中的事件。事件和事件处理程序,如表单中的按钮或由此“事件”关键字定义的其他自定义事件。问题是我在MFC中看到了windows消息,如WM_CLOSE用于对话框,然后您还可以为CLOSE按钮定义事件处理程序,那么,这是否意味着当用户按下关闭按钮时,会出现一条windows消息和一个单独的事件?