ON_COMMAND
специально используется для обработки командного сообщения (например, WM_COMMAND
), например, нажатия кнопки / пункта меню / кнопки панели инструментов.
ON_MESSAGE
является более общим и может использоваться для любого сообщения Windows. Обычно он используется для реже обрабатываемых сообщений, для которых не предоставлены конкретные макросы карты сообщений. Вы также можете использовать ON_MESSAGE
для обработки ON_COMMAND
сообщений, но вам придется самостоятельно извлекать информацию о сообщениях (то есть идентификатор команды).
Пример:
Смотрите здесь:
В карте сообщений:
ON_MESSAGE( WM_COMMAND, OnMyCommand )
Обработчик:
LRESULT CMyWnd::OnMyCommand( WPARAM wParam, LPARAM lParam )
{
// ... Handle message here
int commandId = LOWORD(wParam);
switch(commandId){
case ID_HELLOCOMMAND:
MessageBox(0, "Hello there!", "ID_HELLO_COMMAND", MB_OK);
break;
// ... other commands here
}
return 0L;
}
Отказ от ответственности: Из-за механизма накачки сообщений MFC вам, возможно, придется сделать немного больше, чем показано выше. Лучший человек, чтобы спросить: Джефф Просиз