Здравствуйте, Аноним, Вы писали:
А>Требутся отслеживать измения текста в контроле 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>)
COMMAND_CODE_HANDLER(EN_CHANGE, OnEnChange)
А> //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 не отлавливается. Как быть?
Как-то так