Re: Отражённые сообщения в WTL
От: template  
Дата: 01.05.03 19:21
Оценка: 3 (1)
Здравствуйте, Yurets.
Нужно подправить
Y>
Y>class CMyEdit : public CWindowImpl<CMyEdit, CEdit>, public COwnerDraw<CMyEdit>
Y>{
Y>public:
Y>    DECLARE_WND_SUPERCLASS(NULL, CEdit::GetWndClassName())

Y>    BEGIN_MSG_MAP(CMyEdit)
Y>        MESSAGE_HANDLER(OCM_CTLCOLOREDIT, OnCtlColor) // вот так правильно
Y>        //MESSAGE_HANDLER(WM_CTLCOLOREDIT, OnCtlColor)
Y>    END_MSG_MAP()

Y>    LRESULT OnCtlColor(UINT uMsg, WPARAM, LPARAM, BOOL& bHandled);
Y>

Y>====

Y>Вот карта сообщений в классе дилога:



Y>
Y>    BEGIN_MSG_MAP(CMainDlg)
Y>        MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
Y>        COMMAND_ID_HANDLER(ID_APP_ABOUT, OnAppAbout)
Y>        COMMAND_ID_HANDLER(IDOK, OnOK)
Y>        COMMAND_ID_HANDLER(IDCANCEL, OnCancel)
Y>        REFLECT_NOTIFICATIONS() //необходимо как воздух
Y>        //CHAIN_MSG_MAP_MEMBER(m_edit) // убрать иначе будут посылаться все необработанные сообщения в карту этого члена
Y>    END_MSG_MAP()

Y>protected:
Y>    CMyEdit    m_edit;

    LRESULT OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
    {
                    ....
        m_edit.SubclassWindow(GetDlgItem(IDC_EDIT1)); // вот чего нехватало !!!!
Y>

Y>====
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.