2012-03-22 125 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