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

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

/*MyEdit.h*/
class CMyEdit:public CWindowImpl<CMyEdit, CEdit> {
    BEGIN_MSG_MAP(CMyEdit)
        REFLECTED_COMMAND_CODE_HANDLER(EN_CHANGE, OnTextChange)
        DEFAULT_REFLECTION_HANDLER()
    END_MSG_MAP()
 
    LRESULT OnTextChange(UINT code, UINT id, HWND hCtrl, BOOL &bHandled) {
        MessageBox("TextChanged");
        return 0;
    }
}

为了能让消息反射到控件,控件的父窗口的消息映射中还需要加上:
BEGIN_MSG_MAP(CxxxDlg)
    ....
    REFLECT_NOTIFICATIONS()
END_MSG_MAP() 
原文地址:https://www.cnblogs.com/mforestlaw/p/3289461.html