MFC 更換視窗過程

2021-07-10 19:31:19 字數 1447 閱讀 4567

更換視窗過程就是攔截訊息,專業術語叫做視窗」子類化」技術.

下面用編輯框做例子.如圖:

1.新增乙個c++類

右鍵單擊專案->新增->c++類,如圖所示:

2.在新建類的標頭檔案中新增相關變數和函式

protected:

//新的視窗過程,格式一定得這樣寫.

static lresult apientry neweditproc(hwnd hwnd, uint message, wparam wparam, lparam lparam);

protected:

hwnd m_holdedit;//儲存舊的視窗控制代碼

long m_loldproc;//舊的視窗過程

public:

//更換視窗過程

bool changeproc(hwnd holdedit);

//恢復視窗過程

bool renewproc();``

3.在新建類cpp檔案中實現函式體

bool cnewedit::changeproc(hwnd holdedit)

while (false);

return bret;

}bool cnewedit::renewproc()

while (false);

return bret;

}lresult apientry cnewedit::neweditproc(hwnd hwnd, uint message, wparam wparam, lparam lparam)

break;}}

//處理完需要截獲(改變)的訊息後接著返回舊的視窗過程

return callwindowproc((wndproc)pnewedit->m_loldproc,hwnd,message,wparam,lparam);

}

4.更換視窗過程

//更換視窗過程,傳入的是需要更換的視窗控制代碼

g_newedit.changeproc(getdlgitem(idc_edit)->getsafehwnd());

//g_newedit是全域性變數

5.恢復視窗過程

//恢復視窗過程

g_newedit.renewproc();

6.除了手動恢復,還可以在新建類的析構函式和對話方塊的wm_destroy訊息函式中進行恢復.

現在就可以攔截不是0-9的訊息了,鉤子函式也可用實現訊息攔截.這個以後講.

MFC視窗建立過程

本文針對單文件模式的mfc程式進行分析。一步步說明,如何建立視窗並顯示。首先我們建立乙個單文件的mfc程式 test。csingledoctemplate pdoctemplate pdoctemplate new csingledoctemplate idr mainframe,runtime c...

MFC 使用MFC建立視窗

標頭檔案 mfc是乙個封裝了windowsapi且物件導向的c 類庫,同時也是乙個應用程式的框架結構。另外,並非所有mfc提供的函式都是類的成員,mfc也以 全域性函式的形式,為使用者提供了各類字首為afx的函式,可供使用者在必要時隨時隨地進行呼叫。由mfc建立的應用,我們不能夠直接看到其程式的入口...

MFC視窗訊息

mfc應用程式中處理訊息的順序 1.afxwndproc 該函式負責接收訊息,找到訊息所屬的cwnd物件,然後呼叫afxcallwndproc 2.afxcallwndproc 該函式負責儲存訊息 儲存的內容主要是訊息識別符號和訊息引數 用程式以後使用,然後呼叫windowproc 函式 3.win...