2012-03-22 42 views
0

我最近开始使用win32 API,并试图做一些事情。 我有一个项目是要使用4-5个窗口。我想把它们分别放到不同的cpp文件中,每个文件都有自己的消息循环。我如何在窗口之间传递信息?(是否有某种入口点?)此刻我在case WM_CREATE:期间创建了所有窗口,并根据需要显示了它们。Win32 API每个窗口的不同类?

我想有一个很好的OOP设计,但有麻烦,我的主要问题是Windows之间的沟通。我在C#和C++方面拥有相当丰富的经验,除此之外,win32 api不会成为问题。

感谢您的帮助!

+0

您可能还想看看Get/SetWindowLongPtr函数(特别是GWL_USERDATA字段)。这给你一个地方为每个窗口存储一个'this'指针。 – Skizz 2012-03-22 23:47:06

回答

2

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

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

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

+0

'WM_APP + x',实际上是(应用程序消息)。 ** WM_USER + x'范围用于**私人窗口类中**。 – MSalters 2012-03-23 08:32:13

+0

@ MSalters你是对的,谢谢!在我的辩护中,我已经完成了相当多的几年;) – 2012-03-23 09:51:57