Здравствуйте, Xsyst, Вы писали:
X>Привет!
X>Прошу заранее не пинать, если уже обсуждалось.
X>Совсем недавно начал использовать WTL, собственно вопрос в следующем: есть диалог, как в классе диалога обработать установку/потерю фокуса на контроле? Что нужно добавить в карту сообщений? В MFC wizard создает примерно следующий код: ON_EN_SETFOCUS(IDC_EDIT, &CMainDlg::OnEnSetfocusEdit). C WTL чего-то туплю.
X>Спасибо.
Если для эдита, то так
1. В карту сообщений добавить:
COMMAND_CODE_HANDLER_EX(EN_SETFOCUS, OnEnSetFocus)
или
COMMAND_HANDLER_EX(IDC_EDIT1, EN_SETFOCUS, OnEnSetFocus)
2.В класс диалога добавить:
void OnEnSetFocus(UINT notifyCode, int id, HWND wndCtl)
.
Для других контролов необх. использовать др. notifyCode (CBN_SETFOCUS, BN_SETFOCUS и т.п.)
Здравствуйте, qwerty2006, Вы писали:
Q>Если для эдита, то так
Q>1. В карту сообщений добавить:
Q>Q>COMMAND_CODE_HANDLER_EX(EN_SETFOCUS, OnEnSetFocus)
Q>
Q>или
Q>Q>COMMAND_HANDLER_EX(IDC_EDIT1, EN_SETFOCUS, OnEnSetFocus)
Q>
Q>2.В класс диалога добавить:
Q>Q>void OnEnSetFocus(UINT notifyCode, int id, HWND wndCtl)
Q>
Q>.
Q>Для других контролов необх. использовать др. notifyCode (CBN_SETFOCUS, BN_SETFOCUS и т.п.)
Вообщем понятно где ошибка была: я писал COMMAND_HANDLER(IDC_EDIT,
WM_SETFOCUS, OnSetFocus), а надо было COMMAND_HANDLER(IDC_EDIT,
EN_SETFOCUS, OnSetFocus). Спасибо за ответ.