常見的訊息對映格式總結

2022-08-29 21:15:33 字數 2893 閱讀 9724

在mfc中想要完成訊息對映,需要在begin_message_map和end_message_map兩個巨集之間進行訊息對映宣告才行, 例如:

//開始訊息對映的定義(必須用在類實現中) 

begin_message_map(cmyclass, cbase)

...on_control_reflect(cbn_dropdown, &cmyclass::oncbndropdown)

on_wm_mousemove()

...//結束訊息對映的定義(必須用在類實現中)

end_message_map()

常見訊息對映格式

現在對常見的訊息對映格式和宣告進行總結如下:

標準訊息

標準訊息開頭是以wm_開始的, 形如wm_close,對這種訊息其格式如下,是否有形參和具體訊息有關係。

對映格式:

on_wm_close()

函式宣告:

afx_msg void onclose()

命令訊息

命令訊息是通過wm_command 形式進行傳遞的,它可以響應選單命令,工具欄命令,按鈕命令等。

訊息對映:

on_command(id, memberfxn)

函式宣告:

afx_msg void memberfxn()

通告訊息

通告訊息一般是使用者點選控制項,控制項向父視窗(對話方塊)發出對應的事件訊息,比如cbn_dropdown、bn_clicked等;通告訊息都具有相同的函式宣告,僅訊息對映有所區別,下面列舉出不同控制項的訊息對映。

各控制項的函式宣告:

afx_msg void memberfxn( )

各控制項的訊息對映:

on_control( ,, )
on_bn_paint(,  ) 

on_bn_clicked(, )

on_bn_disable(, )

on_bn_hilite(, )

on_bn_unhilite(, )

on_bn_doubleclicked(,)

on_en_change(,   ) 

on_en_errspace(, )

on_en_hscroll(, )

on_en_killfocus(,)

on_en_maxtext(, )

on_en_setfocus(, )

on_en_update(, )

on_en_vscroll(, )

on_cbn_closeup(,    )

on_cbn_dblclk(, )

on_cbn_dropdown(, )

on_cbn_editchange(, )

on_cbn_editupdate(, )

on_cbn_errspace(, )

on_cbn_killfocus(, )

on_cbn_selchange(, )

on_cbn_selendcancel(,)

on_cbn_selendok(, )

on_cbn_setfocus(, )

on_lbn_dblclk(,    ) 

on_lbn_errspace(, )

on_lbn_killfocus(, )

on_lbn_selchange(, )

on_lbn_setfocus(, )

狀態更新訊息

狀態更新訊息主要應用更新選單項和工具欄按鈕,其訊息對映和函式宣告如下:

訊息對映:

on_update_command_ui(id, memberfxn)

函式宣告:

afx_msg void memberfxn(ccmdui *pcmdui);

自定義訊息

mfc提供了自定義訊息的函式對映介面,便於使用者定義自己的訊息,其函式對映入口和函式宣告如下:

訊息對映:

on_message(message, memberfxn)

函式宣告:

afx_msg lresult memberfxn(wparam, lparam);

訊息反射

訊息反射是指父視窗在收到控制項訊息(通告訊息,標準訊息)後,再傳遞給子控制項本身來處理,父視窗不處理,其格式如下:

對於wm_command 形式的:

//訊息對映:

on_control_reflect( wnotifycode, memberfxn )

//函式宣告:

afx_msg void memberfxn ( );

對於wm_notify形式的:

//訊息對映:

on_notify_reflect(wnotifycode, memberfxn)

//函式宣告:

afx_msg void memberfxn (nmhdr * pnotifystruct, lresult* result);

更多資訊見windows控制項訊息反射

vs2008新增訊息對映的方法

訊息對映 學習總結

訊息對映和命令傳遞是緊密相連的兩部分。就像執行時型別識別和動態建立,後者都要在前者搭建的框架上執行。在訊息對映和命令傳遞中,訊息對映表的建立是基礎,命令的傳遞路線是核心,讓我跟隨書中的足跡,記下自己學習中的心得。訊息對映 的關鍵,是建立起一張訊息攀爬的線路網,即訊息對映表 message map 以...

從MFC訊息對映巨集分析MFC訊息對映的實現

在mfc中,我們可以找到如下三個巨集 declare massage map begine massage map class,bassclass end massage map 下面來分析這三個巨集 1 declare message map 作用 為乙個訊息響應類宣告必需的成員變數和成員函式。d...

MFC 訊息對映的實現

訊息對映的實現 windows訊息概述 windows應用程式的輸入由windows系統以訊息的形式傳送給應用程式的視窗。這些視窗通過視窗過程來接收和處理訊息,然後把控制返還給windows。訊息的分類 佇列訊息和非佇列訊息 從訊息的傳送途徑上看,訊息分兩種 佇列訊息和非佇列訊息。佇列訊息送到系統訊...