作者QQ29 (我愛阿蓉)
看板C_and_CPP
標題[問題] win32 關於proc函式
時間Mon Dec 28 19:24:10 2009
請教各位
我一直很不解
假如我有個"主視窗" 和一個 "button"
主視窗我利用wc.lpfnWndProc = MainWndProc; 註冊這callback函式
hWnd = CreateWindowEx(...) <=這邊有個hWndParent參數設定NULL
我理解上應該就是主視窗沒有parent 所以傳入null...
而在button的視窗註冊如以下
wc.lpfnWndProc = BtnWndProc; // Callback function
而我在他的WM_CREATE 會呼叫的函式中寫
CreateWindow(...) 這邊的hWndParent我填上BtnWndProc收到的 hwnd
不解的是 這個hwnd 是哪來的???
我一直想不透 每個視窗都有Proc
函式 而他是以什麼方式定義說我要呼叫哪一個Proc函式
是哪個函式有跟系統說 我現在這視窗的message是送給哪個proc function
我認為是createWindow(裡面填的hwnd) 但是這hwnd是從 上面講的Proc函式傳進來的(傳
進來是啥??)
讓我百思不解....
而且為啥createWindow要再WM_CREATE裡面做呢?
如果我填了hWndParent 而沒有標上WS_CHILD又會怎麼樣= =
現在有點混亂~~
主要就是想問 到底是怎麼知道我該處發哪個Proc函式@@
另外又有一個疑惑...
wc.lpszClassName 有設定class name
可是...CreateWindow( LPCTSTR lpClassName,
怎麼又設定一次class name了.....
整個架構好混亂 請指點迷津...
謝謝各位
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 219.87.64.222
※ 編輯: QQ29 來自: 122.147.15.66 (12/28 20:01)
→ johnhmj:CreateWindow只要呼叫一次就好了呀~ =_=||| 12/28 20:57
→ johnhmj:利用 ShowWindow 顯示視窗~ 12/28 20:58
→ johnhmj:GetMessage 跑迴圈收訊息~ 12/28 20:59
→ johnhmj:編譯軟體可以產生視窗程式碼,請參考那個就可以了。 12/28 21:02
→ johnhmj:RegisterClass 告知作業系統有這個視窗的存在~ 12/28 21:07
→ johnhmj:CreateWindow 是視窗本身的部分~ 12/28 21:07
→ johnhmj:所以還要再設定一次 name~ 12/28 21:08