Скажите, как организовать message reflection в WTL ?
У меня есть диалог, на нём EDIT контрол. Я хочу обрабатывать сообщение WM_CTLCOLOREDIT. В MFC всё легко ... А здесь :/
Вот кусок класса контрола:
class CMyEdit : public CWindowImpl<CMyEdit, CEdit>, public COwnerDraw<CMyEdit>
{
public:
DECLARE_WND_SUPERCLASS(NULL, CEdit::GetWndClassName())
BEGIN_MSG_MAP(CMyEdit)
//MESSAGE_HANDLER(OCM_CTLCOLOREDIT, OnCtlColor)
MESSAGE_HANDLER(WM_CTLCOLOREDIT, OnCtlColor)
END_MSG_MAP()
LRESULT OnCtlColor(UINT uMsg, WPARAM, LPARAM, BOOL& bHandled);
====
Вот карта сообщений в классе дилога:
BEGIN_MSG_MAP(CMainDlg)
MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
COMMAND_ID_HANDLER(ID_APP_ABOUT, OnAppAbout)
COMMAND_ID_HANDLER(IDOK, OnOK)
COMMAND_ID_HANDLER(IDCANCEL, OnCancel)
//REFLECT_NOTIFICATIONS()
CHAIN_MSG_MAP_MEMBER(m_edit)
END_MSG_MAP()
protected:
CMyEdit m_edit;
====
Если оставить всё как есть, то OnCtlColor вызывается и всё казалось бы хорошо, но.. если добавить ещё один едит-контрол, не сабкласенный, простой.. то обрабатывается и его WM_CTLCOLOREDIT
Пытался делать по-правильному — через REFLECT_NOTIFICATIONS() и MESSAGE_HANDLER(OCM_CTLCOLOREDIT,) , но сообщения(любые!) даже в карту контрола не доходят
Помогите