2012-08-13 69 views
0

我有一個運行WndProc的win32包裝類(我使用靜態wndproc將消息轉發給WndProc成員函數)。從Win32包裝器的另一個類中調用函數WndProc

我也有另一個應用程序類創建我的win32包裝類的實例。

我希望應用程序類的用戶能夠編寫自己的代表事件的函數,如OnMouseClick()或OnMouseMove(),但爲了這個工作,我需要調用事件函數來自win32包裝類的Wndproc(它不知道應用程序類)。

這樣做的最好方法是什麼?我是否應該將指向每個事件函數的指針發送給我的win32包裝類,並通過指針調用它?或者,還有更好的方法?

+0

Windows的標準功能,它被稱爲「子窗口」。在谷歌查詢中鍵入並採取第一個命中。 – 2012-08-13 21:41:36

回答

0

你的類的結構及其目的不明確。然而,包裝類的典型recommnded結構如下:當它接收其靜態的WndProc處理程序的Windows事件

class BaseClass 
{ 
public: 
    virtual void OnMouseClick(...) { } // Empty body 
    virtual void OnMouseMove(...) { } // Empty body 
}; 

class AppClass : public BaseClass 
{ 
public: 
    void OnMouseClick(...) { AppCode } 
    void OnMouseMove(...) { AppCode } 
}; 

基類調用虛方法。這觸發了應用程序代碼的執行。

+0

我明白這一點,這是我的項目的一部分。然而,我在問如何處理一個名爲D3DWindow的單獨的win32包裝類,但是在BaseClass中實例化了。 D3DWindow沒有OnMouseclick/OnMouseMove()的知識,並且我正在尋求一種使這項工作成功的好方法。 – 2012-08-13 20:49:26

+0

然後你最好解釋你需要什麼。 – 2012-08-13 20:51:18