每个窗口的Win32 api类不同

Win32 api different classes per window?

本文关键字:api Win32 窗口      更新时间:2023-10-16

ive最近开始使用win32api,我正在尝试做一些事情。我有一个项目,将使用大约4-5个窗口。我想将其中的每一个分离到一个不同的cpp文件中,每个文件都有自己的消息循环。如何将信息从一个窗口传递到另一个窗口?(有什么入口点吗?)目前我正在case WM_CREATE:期间创建所有窗口,并根据需要显示它们。

我试图有一个很好的OOP设计,但遇到了麻烦,我的主要问题是窗口之间的通信。我在C#和C++方面有相当多的经验,除此之外,win32api也不是问题。

谢谢你的帮助!

我认为您不想要每个窗口的消息循环,除非您希望每个窗口都在自己的线程中。您可能需要一个窗口过程

每个窗口类都有自己的窗口过程,在将其传递给RegisterClass之前,您可以通过设置WNDCLASS结构的lpfnWndProc字段来注册该过程。完成后,可以在使用CreateWindow创建新窗口时使用该类。

在您的情况下,您可能希望实现窗口过程,使其接受自定义消息(WM_APP + x),然后使用PostMessage(用于异步通信)或SendMessage(用于同步通信)在窗口之间传递自定义消息。如有必要,可以为不同的窗口创建单独的窗口类和窗口过程。单个消息循环能够将消息泵送到所有这些过程。

窗口间通信的经典方式是发送/张贴消息:

SendMessage

PostMessage