FAQ:WinAPI VCPP:обработчик сообщения для нескольких элементов
Материал из Весельчак У
Как сделать обработчик сообщения для нескольких элементов управления сразу?
Без помощи визарда (Wizard) это можно сделать переопределением виртуальной функции OnCommand():
BOOL CMyDialog::OnCommand(WPARAM wParam, LPARAM lParam)
{
//командное сообщение
WORD wMess=(wParam >> 16);
//ID элемента управления
int nID=(int)(wParam &0x0000ffff));
//хендл элемента управления
HWND hW=(HWND)lParam;
// смотрим, какой элемент управления
switch (nID)
{
//CButton (кнопки, переключатели, флажки)
case ID_BN1:
case ID_BN2:
case ID_BN3:
{
//смотрим, какое сообщение
switch (wMess)
{
case BN_CLICKED:
{
...
}
break;
}
}
break;
//CEdit
case ID_ED1:
case ID_ED2:
case ID_ED3:
case ID_ED4:
{
// смотрим, какое сообщение
switch (wMess)
{
case EN_CHANGE:
{
...
}
break;
case EN_KILLFOCUS:
{
...
}
break;
}
}
break;
}
return CDialog::OnCommand(wParam, lParam);
}