Изменение текста в Edit
От: Аноним  
Дата: 13.07.09 12:18
Оценка:
Требутся отслеживать измения текста в контроле 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 не отлавливается. Как быть?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.