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