92978b58

Извещение от кнопки - 2


typedef struct _COMMANDMSG { USHORT cmd; // идентификатор органа управления USHORT unused; // не используется USHORT source; // источник извещающего сообщения USHORT fMouse; // признак использования мыши } CMDMSG; typedef CMDMSG *PCMDMSG;

#define COMMANDMSG(pmsg) \ ((PCMDMSG)((PBYTE)pmsg + sizeof(MPARAM)))

Обработчик сообщения WM_COMMAND обычно имеет такой вид:

case WM_COMMAND : { switch (COMMANDMSG(&msg) -> cmd) { case BTN1_ID: { // Обработка извещения от кнопки BTN1_ID . . . break; } case BTN2_ID: { // Обработка извещения от кнопки BTN2_ID . . . break; } default: break; } return 0; }

Если сообщение WM_COMMAND может поступать как от меню, так и от кнопок (или других органов управления), необходимо дополнительно анализировать источник сообщения, например, следующим способом:

if(COMMANDMSG (&msg) -> source == CMDSRC_PUSHBUTTON) { // Сообщение от кнопки . . . } else if(COMMANDMSG(&msg) -> source == CMDSRC_MENU) { // Сообщение от меню . . . }

Для извлечения параметров кнопки вы можете также использовать макрокоманды SHORT1FROMMP и SHORT2FROMMP :

cmd = SHORT1FROMMP (mp1); source = SHORT1FROMMP (mp2); fMouse = SHORT1FROMMP (mp2);




Начало  Назад  Вперед