使用WTL的消息反射封装CEdit实现监听控件文本改变事件

消息反射机制可以使对消息的处理都集中在控件类中,以CEdit的EN_CHANGE消息为例:

 1 /*MyEdit.h*/
 2 class CMyEdit:public CWindowImpl<CMyEdit, CEdit> {
 3     BEGIN_MSG_MAP(CMyEdit)
 4         REFLECTED_COMMAND_CODE_HANDLER(EN_CHANGE, OnTextChange)
 5         DEFAULT_REFLECTION_HANDLER()
 6     END_MSG_MAP()
 7  
 8     LRESULT OnTextChange(UINT code, UINT id, HWND hCtrl, BOOL &bHandled) {
 9         MessageBox("TextChanged");
10         return 0;
11     }
12 }
为了能让消息反射到控件,控件的父窗口的消息映射中还需要加上:
1 BEGIN_MSG_MAP(CxxxDlg)
2     ....
3     REFLECT_NOTIFICATIONS()
4 END_MSG_MAP() 

 

转自:https://www.cnblogs.com/mforestlaw/p/3289461.html

posted @ 2020-12-01 19:15  洛洛沙  阅读(227)  评论(0)    收藏  举报