Требутся отслеживать измения текста в контроле Edit.
Как я понимаю надо отслеживать сообщение EN_CHANGE. Но вот незадача, непойму как его поймать.
Код такой
class ATL_NO_VTABLE CFixTextBox :
public CComObjectRootEx<CComSingleThreadModel>,
public CStockPropImpl<CFixTextBox, IBindableImpl<CFixTextBox, _DFixTextBox, &IID__DFixTextBox>, &IID__DFixTextBox, &LIBID_FixForms, /*wMajor =*/ 1, /*wMinor =*/ 0>,
public IPersistStreamInitImpl<CFixTextBox>,
public IOleControlImpl<CFixTextBox>,
public IOleObjectImpl<CFixTextBox>,
public IOleInPlaceActiveObjectImpl<CFixTextBox>,
public IViewObjectExImpl<CFixTextBox>,
public IOleInPlaceObjectWindowlessImpl<CFixTextBox>,
public ISupportErrorInfo,
public IConnectionPointContainerImpl<CFixTextBox>,
public IObjectWithSiteImpl<CFixTextBox>,
public IPersistStorageImpl<CFixTextBox>,
public IPersistPropertyBagImpl<CFixTextBox>,
public ISpecifyPropertyPagesImpl<CFixTextBox>,
public IQuickActivateImpl<CFixTextBox>,
#ifndef _WIN32_WCE
public IDataObjectImpl<CFixTextBox>,
#endif
public IProvideClassInfo2Impl<&CLSID_FixTextBox, &__uuidof(__DFixTextBoxEvents), &LIBID_FixForms, /*wMajor =*/ 1, /*wMinor =*/ 0>,
public IPropertyNotifySinkCP<CFixTextBox>,
public IObjectSafetyImpl<CFixTextBox, INTERFACESAFE_FOR_UNTRUSTED_CALLER>,
public IPerPropertyBrowsingImpl<CFixTextBox>,
public CComCoClass<CFixTextBox, &CLSID_FixTextBox>,
public CComControl<CFixTextBox>,
public CProxy__DFixTextBoxEvents<CFixTextBox>
{
CContainedWindowT<CEditT<CWindow>, CWinTraitsOR<ES_AUTOHSCROLL>> m_ctlEdit;
// пропущено....
BEGIN_MSG_MAP(CFixTextBox)
MESSAGE_HANDLER(WM_CREATE, OnCreate)
MESSAGE_HANDLER(WM_SETFOCUS, OnSetFocus)
MESSAGE_HANDLER(WM_ERASEBKGND, OnEraseBkgnd)
MESSAGE_HANDLER(WM_CTLCOLOREDIT, OnCtlColorEdit)
CHAIN_MSG_MAP(CComControl<CFixTextBox>)
//REFLECT_NOTIFICATIONS()
DEFAULT_REFLECTION_HANDLER()
ALT_MSG_MAP(1)
// Replace this with message map entries for superclassed Edit
REFLECTED_NOTIFY_CODE_HANDLER(EN_CHANGE, OnEnChange)
END_MSG_MAP()
//пропущено...
LRESULT OnEnChange(int idCtrl, LPNMHDR pnmh, BOOL& bHandled)
{
MessageBox(_T("Catched"));
return S_OK;
}
при таком подходе сообщение EN_CHANGED не отлавливается. Как быть?