每个窗口Win32 api不同的类?

时间:2012-03-22 23:02:28

标签: c++ oop winapi

我最近开始使用win32 api并尝试做一些事情。 我有一个项目,将使用约4-5个窗口。我想将其中的每一个分成不同的cpp文件,其中每个文件都有自己的消息Loop。如何在窗口之间传递信息?(是否存在某种入口点?)我正在case WM_CREATE:期间创建所有窗口,并且我会根据需要显示它们。

我想尝试一个漂亮的OOP设计,但遇到麻烦,我的主要问题是Windows之间的通信。我在C#和C ++方面有相当多的经验,除此之外,win32 api不是问题。

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:1)

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

SendMessage

PostMessage