[問題] Dialog 包 class, CALLBACK Proc 處理
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
VC2010
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
Win32 API
問題敘述:
算是 Design Pattern 經驗不夠。我要做的事很簡單,用 class 包含以下動作
DialogBox
CALLBACK DlgProc
EndBox
卡在設定 CALLBACK DlgProc 那裡死很慘
錯誤結果(Wrong Output):
'UintDlgWnd::UintDlgProc': 函式呼叫遺漏引數清單,請用
'&UintDlgWnd::UintDlgProc' 建立成員的指標
程式碼(Code):(請善用置底文網頁, 記得排版)
class UintDlgWnd{
private:
BOOL CALLBACK UintDlgProc(HWND hwnd, UINT Message,
WPARAM wParam, LPARAM lParam);
public:
int CreateDlg(UINT ResID);
};
int UintDlgWnd::CreateDlg( UINT ResID )
{
return DialogBox(GetModuleHandle(NULL),
MAKEINTRESOURCE(ResID), NULL, this->UintDlgProc);
}
BOOL CALLBACK UintDlgWnd::UintDlgProc( HWND hwnd, UINT Message, WPARAM
wParam, LPARAM lParam )
{
/* do somethihg */
}
補充說明(Supplement):
想過的替代方案有兩個
(1) friend CALLBACK DlgProc < 這大概不能真的解決吧 >
(2) class 裡不寫 DlgProc, 以 *DlgProc 做函式指標,
真正的 DlgProc 直接寫到外面, class member 直接指到外面去。
其他進階問題:
(1) 一開始想過先做一個 Base VirDlgClass ,
在 DlgProc 那裡用純虛擬函式, 不過還是卡死, 這種設計應較佳?
(2) 不知道有沒有書專門講視窗程式設計怎麼包 class ? (這是最想知道的)
Win32 聖經是翻完二、三遍, 不過每次要刻的時候就讓人懷念 C++ class 的特性。
是沒有要開發完整的 windows class 體系出來,講概念、相關的一些 DP 就行。
一個小 sample 動不動就要用 MFC 或安裝其他 library 感覺就沒很好,
深入淺出那本只講概述原理(是很深入沒錯啦);Open Source 又太大;
用 C 刻整個變數命名很亂,真的是..一言難盡。
謝謝各位先進不吝指教,小弟感激不盡。
--
「自從我學了 C# , 人都變聰明 , 考試都考一百分」
「自從我學了 VB , 皮膚都變好 , 人也變漂亮了 」
「自從我學了 Java , 明顯變壯 , 個子也變高了 」
「自從我學了 C++ , 內分泌失調 , 頭都禿了... 」
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 180.177.76.161
→
07/26 22:45, , 1F
07/26 22:45, 1F
→
07/26 22:54, , 2F
07/26 22:54, 2F
推
07/29 10:50, , 3F
07/29 10:50, 3F
→
07/29 10:51, , 4F
07/29 10:51, 4F
→
07/29 14:55, , 5F
07/29 14:55, 5F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章