MFC自定義訊息傳送和介面掛載

2021-10-10 12:37:50 字數 2894 閱讀 9634

有部分類的定義在mfc靜態拆分視窗中:

1、在 cmainframe.h 中,新增自定義訊息巨集
//wm_user 是使用者自定義訊息的乙個起始值

//wm_user+100是為了區分系統訊息和使用者訊息,避免衝突

#define nm_a (wm_user + 100)

#define nm_b (wm_user + 101)

#define nm_c (wm_user + 102)

#define nm_d (wm_user + 103)

#define nm_e (wm_user + 104)

2、將自定義訊息寫到 cmainframe.cpp 分界巨集中
//on_message響應的是自定義訊息

//產生nm_x訊息,自動呼叫onmychange函式

on_message

(nm_a, onmychange)

on_message

(nm_b, onmychange)

on_message

(nm_c, onmychange)

on_message

(nm_d, onmychange)

on_message

(nm_e, onmychange)

3、在 mainframe.h 中宣告自定義訊息處理函式onmychange()方法
//自定義訊息處理函式

private

: afx_msg lresult onmychange

(wparam wparam, lparam lparam)

;

在mainframe.cpp中實現onmychange方法

lresult cmainframe::

onmychange

(wparam wparam, lparam lparam)

4、在selectview中傳送自定義訊息

在重寫後的cselectview::ontvnselchanged()方法內對接收到的引數進行判斷,並使用傳送訊息的方法 ::postmessage 將對應的訊息傳送到mainframe.cpp 中的 cmainframe::onmychange()

if

(str ==

text

("個人資訊"))

5、根據不同的訊息引數掛載不通同介面

在mainframe.cpp中的cmainframe::onmychange()中實現掛載

lresult cmainframe::

onmychange

(wparam wparam, lparam lparam)

return0;

}

6、編譯執行

7、有關掛載介面**和涉及到的函式詳解

1、掛載介面**

這一部分的**不需要記,需要用到的時候直接找就可以

//先在上下文中找到cuserdlg這個視窗類

context.m_pnewviewclass =

runtime_class

(cuserdlg)

;//進行記錄

context.m_pcurrentframe =

this

;//獲取到第一行第二列(這裡行和列是從0開始)

context.m_plastview =

(cformview *

)m_spliter.

getpane(0

,1);

//刪除這部分內容

m_spliter.

deleteview(0

,1);

//重新建立視窗

m_spliter.

createview(0

,1,runtime_class

(cuserdlg)

,csize

(600

,500),

&context)

; cuserdlg *pnewview =

(cuserdlg *

)m_spliter.

getpane(0

,1);

//啟用布局

m_spliter.

recalclayout()

;//呼叫初始化**

pnewview-

>

oninitialupdate()

;//啟用顯示視窗

m_spliter.

setactivepane(0

,1);

2、::postmessage函式::postmessage(afxgetmainwnd()->getsafehwnd(), nm_a, (wparam)nm_a, (lparam)0);

//需要包含框架類標頭檔案#include "mainfrm.h" 

//cwnd::postmessage 將乙個訊息放入視窗的訊息佇列

//afxgetmainwnd():框架視窗物件的指標

//afxgetmainwnd()->getsafehwnd():獲取返回視窗的控制代碼,cwnd::getsafehwnd

//nm_a:傳送自定義訊息

//(wparam)nm_a:指定了附加的訊息資訊

//(lparam)0:指定了附加的訊息資訊,此引數這裡沒有意義

MFC自定義訊息

訊息機制是windows的典型執行機制,在mfc中有很多的訊息如wm btn 等。但是在有些情況下我們需要自定義一些訊息去做一些我們需要的功能,mfc的嚮導不能幫助我們做到這一點,我們可以通過新增相應的 去完成這個功能。新增自定義訊息操作如下 1.建立mfc工程,如基於對話方塊的應用程式,test。...

MFC自定義訊息

訊息機制是windows的典型執行機制,在mfc中有很多的訊息如wm btn 等。但是在有些情況下我們需要自定義一些訊息去做一些我們需要的功能,mfc的嚮導不能幫助我們做到這一點,我們可以通過新增相應的 去完成這個功能。新增自定義訊息操作如下 1.建立mfc工程,如基於對話方塊的應用程式,test。...

MFC自定義訊息

訊息機制是windows的典型執行機制,在mfc中有很多的訊息如wm btn 等。但是在有些情況下我們需要自定義一些訊息去做一些我們需要的功能,mfc的嚮導不能幫助我們做到這一點,我們可以通過新增相應的 去完成這個功能。新增自定義訊息操作如下 1.建立mfc工程,如基於對話方塊的應用程式,test。...