使用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