Макросы карты сообщений - PullRequest
       2

Макросы карты сообщений

2 голосов
/ 10 августа 2010

Когда вы используете ON_COMMAND и когда мы используем ON_MESSAGE.В чем различия между ними.

1 Ответ

4 голосов
/ 10 августа 2010

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 вам, возможно, придется сделать немного больше, чем показано выше. Лучший человек, чтобы спросить: Джефф Просиз

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...