我看到深入淺出mfc,里面說每一個視窗類都有一個成員視窗程序函式,所以要用hook把他們都變為同一個視窗程序函式,那么問題來了,為什么要這么做?
從win32層面考慮,如果我注冊兩個視窗類,分別使用不同的視窗程序函式,系統該如何呼叫呢?這個我不清楚,我想,要么就是系統自動識別,該調誰就調誰,但是訊息結構體中并未有目標視窗的資訊,系統如何得知該調哪個函式?
所以,要么就是是系統始終只調一個視窗程序函式,那么既然如此,mfc中又何必大費周張把各視窗的程序函式都改為afxwinproc?
uj5u.com熱心網友回復:
MSG中的hWnd就是目標視窗CreateWindowEx創建視窗時會與傳入的注冊的視窗類關聯起來
uj5u.com熱心網友回復:
"系統該如何呼叫呢"哪個視窗 Activated ,就調 哪個
uj5u.com熱心網友回復:
注冊視窗類時的輸入的哪個引數,就是哪個結構,里面有一項就是指向了視窗函式。說明你還沒看明白《深入淺出MFC》
uj5u.com熱心網友回復:
先把win32 api創建視窗搞清楚uj5u.com熱心網友回復:
每個視窗類 都有一個 winproc ,你甚至 可以 注冊一個視窗類 ,而創建 2個 視窗,這時 2個視窗 就會 公用 一個 winproc
uj5u.com熱心網友回復:
WndProc(HWND,message,wPArama,lParam)每個視窗類關聯一個視窗程序,每個創建的視窗需要一個視窗類,因此,每個hWnd會和一個WndProc關聯
系統在某個視窗接收到訊息,它會知道是什么視窗的訊息、訊息是什么,從而將訊息放進對應的訊息佇列
你的主程式的訊息回圈從自己的訊息佇列提取訊息(GetMessage或者PeekMessage)然后回呼對應的視窗函式
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/88132.html
標籤:基礎類
