2011-10-04 78 views
1

我們可以使用這個作爲最後一個參數與CreateWindow並獲得一個指向WndProc中的應用對象是這樣的:獲取應用對象的指針

if(message == WM_CREATE) 
{ 
    CREATESTRUCT* cs = (CREATESTRUCT*)lParam; 
    pApp = (DemoApp*)cs->lpCreateParams; 
    return 0; 
} 

什麼是最好的方式在Dialog Message Proc中訪問這個指針?是製作全局指針的解決方案嗎?

回答

2

你得到額外的初始化數據與WM_INITDIALOG,看到WM_INITDIALOG message

lParam的

額外的初始化數據。該數據傳遞到系統 作爲lParam參數在調用CreateDialogIndirectParamCreateDialogParamDialogBoxIndirectParam,或用於創建對話框DialogBoxParam功能 。對於屬性表,該參數是 指向用於創建頁面的PROPSHEETPAGE結構的指針。如果使用其他對話框創建功能,則此 參數爲零。

也就是說,你可以通過lParamCreateDialogParam參數,並在對話框PROC將WM_INITDIALOG消息接收它。

+0

這看起來可能是我需要的。如果我從我的WndProc調用它,我傳遞WM_CREATE的lParam並以相同的方式獲取指針。但是如果我從WndProc外部調用它會怎麼樣。換句話說,我如何直接從MyClass *轉換爲LPARAM? – user974967

+0

MyClass * pMyClass = ...; CreateDialogParam(...,pMyClass,...); - 這是你需要的嗎?在DialogProc中,你將'lParam'返回到'MyClass *'。 –

+0

好的。我不確定是否需要reinterpert_cast <>將MyClass *轉換爲LPARAM並將其轉換回來。謝謝。 – user974967