C++ 是否用另一个处理消息的函数替换WndProc?

C++ 是否用另一个处理消息的函数替换WndProc?,c++,winapi,event-handling,wndproc,C++,Winapi,Event Handling,Wndproc,我是按标题说的去问的。可能吗 由于MSG已经包含了我自制事件处理程序所需的所有内容,我想也许我可以制作一个。我问这个主要是为了摆脱解释型转换,这样我就可以在窗口类中使用内部函数和类来提高性能。我还想知道,是否有可能只是得到味精单独和做任何我想用它 基本上,是否有其他方法获取窗口消息,然后对其进行处理,与本文中的一般循环不同 编辑: 目前,我正在使用GetMessage()函数获取MSG结构,并在我自己的事件处理程序中使用它,但是我并没有获得我想要的所有消息。还有什么我该做的吗 提前谢谢你 目前,

我是按标题说的去问的。可能吗

由于
MSG
已经包含了我自制事件处理程序所需的所有内容,我想也许我可以制作一个。我问这个主要是为了摆脱解释型转换,这样我就可以在窗口类中使用内部函数和类来提高性能。我还想知道,是否有可能只是得到味精单独和做任何我想用它

基本上,是否有其他方法获取窗口消息,然后对其进行处理,与本文中的一般循环不同

编辑: 目前,我正在使用GetMessage()函数获取
MSG
结构,并在我自己的事件处理程序中使用它,但是我并没有获得我想要的所有消息。还有什么我该做的吗

提前谢谢你

目前,我正在使用GetMessage()函数获取MSG结构

这就是问题所在,GetMessage()只检索已发布到消息队列的消息。它不会检测与SendMessage()一起发送的邮件。它绕过消息队列并直接调用窗口过程

因此,您必须使用WndProc查看窗口的所有消息

进入队列并因此由GetMessage()返回的已发布消息的子集是一个小的子集。简而言之,鼠标和键盘的输入通知消息和低优先级消息(WM_PAINT、WM_TIMER、WM_QUIT)。始终发送WM_激活

替换窗口的WDNPROC当然是一种常见的技术,它被称为“.C++ C++类库包装器使用它来将消息映射到C++方法。最好不要重新创建该轮。< /P> 目前,我正在使用GetMessage()函数获取MSG结构

这就是问题所在,GetMessage()只检索发布到消息队列的消息。它不检测与SendMessage()一起发送的消息。SendMessage()绕过消息队列并直接调用窗口过程

因此,您必须使用WndProc查看窗口的所有消息

进入队列并因此由GetMessage()返回的已发布消息的子集很小。简而言之,鼠标和键盘的输入通知消息以及低优先级消息(WM_PAINT、WM_TIMER、WM_QUIT)。WM_ACTIVATE始终被发送


替换窗口的WndProc当然是一种常见的技术,它被称为”。任何C++类库包装器都使用它来将消息映射到C++方法。最好不要再发明那个轮子。

听起来你在寻找一种更模块化的、可能是面向对象的Windows编程方式。如果你愿意和“托管”C++一起使用,你可以使用.NET…如果你不想与.NET打交道,那么除了其他的.MFC和.NET,它们的核心仍然使用消息循环,它只是从你那里抽象出来,变成一个事件接口,所以你看不到它。消息循环基本上是处理窗口消息的方式,尽管如我所说,您可以将其抽象为外观更漂亮的事件design@David这实际上是我最初的想法,但是使用C++和较低级别的WiAPI提供了更好的性能,这是最重要的。我不太确定。GetMessage()将消息数据从Windows消息队列加载到消息结构中。它就在那里-你拥有它,你可以随心所欲地使用它,包括破坏你的应用程序与操作系统的交互:)@IInspectable-是的,我也不太明白这个问题,尤其是对“性能”的引用——检索消息和调用windprocs/events的开销通常会被GUI组件的重新绘制等工作所淹没。听起来你在寻找一种更模块化的、可能是面向对象的方式来编程Windows。如果你愿意和“托管”C++一起使用,你可以使用.NET…如果你不想与.NET打交道,那么除了其他的.MFC和.NET,它们的核心仍然使用消息循环,它只是从你那里抽象出来,变成一个事件接口,所以你看不到它。消息循环基本上是处理窗口消息的方式,尽管如我所说,您可以将其抽象为外观更漂亮的事件design@David这实际上是我最初的想法,但是使用C++和较低级别的WiAPI提供了更好的性能,这是最重要的。我不太确定。GetMessage()将消息数据从Windows消息队列加载到消息结构中。它就在那里-你拥有它,你可以随心所欲地使用它,包括破坏你的应用程序与操作系统的交互:)@IInspectable-是的,我也不太明白这个问题,尤其是对“性能”的引用——检索消息和调用windprocs/events的开销通常会被GUI组件的重新绘制等工作所淹没。