继承的文本框控件怎么响应EN_CHANGE等消息
继承的文本框控件如何响应EN_CHANGE等消息?
我从CEdit继承了一个CMyEdit类,想在这个类里填写它的一些消息。我在消息映射表里写的是MESSAGE_HANDLER(EN_CHANGE, OnChange),但是文本框有字符键入时并没有响应OnChange函数,请问如何让它响应EN_CHANGE,EN_VSCROLL,EM_LINESCROLL等这些消息?
------解决方案--------------------
EN_CHANGE是能过WM_NOTIFY发给父窗体的,你想在CEdit本身接收这个的话要先让父窗体反射WM_NOTIFY.
------解决方案--------------------
ON_CONTROL_REFLECT(EN_CHANGE, OnChange)
试试他
使用消息反射宏 ON_CONTROL_REFLECT_EX ,而不是 ON_CONTROL_REFLECT。因为 ON_CONTROL_REFLECT无返回值,而ON_CONTROL_REFLECT_EX,返回False的时候,父窗口会获得控制权,从而再次处理消息。
当然,如果使用 ON_CONTROL_REFLECT,可以调用GetParent()->OnCmdMsg来调用父窗口的消息分发。