Программирование для IBM OS/2© Александр Фролов, Григорий ФроловТом 25, М.: Диалог-МИФИ, 1993, 286 стр. 3.3. Обработка сообщения WM_COMMANDСообщение с кодом WM_COMMAND передается в функцию главного окна приложения, когда пользователь выбирает одну из строк меню верхнего уровня. Первый параметр сообщения содержит код выбранной строки, поэтому обработку сообщения WM_COMMAND можно выполнять, например, так (фрагмент кода взят из приложения MENUAPP):
case WM_COMMAND :
{
switch(LOUSHORT(mp1))
{
case IDM_FILE_NEW:
case IDM_FILE_OPEN:
. . .
case IDM_HELP_KEYS:
{
WinMessageBox (HWND_DESKTOP, hWnd,
"Функция не реализована",
szAppTitle, 0, MB_INFORMATION | MB_OK);
break;
}
case IDM_HELP_ABOUT:
{
WinMessageBox (HWND_DESKTOP, hWnd,
"Приложение MenuApp, (C) Frolov A., 1996",
szAppTitle, 0, MB_INFORMATION | MB_OK);
break;
}
case IDM_FILE_EXIT:
{
WinPostMsg (hWnd, WM_QUIT , 0L, 0L);
break;
}
}
return(WinDefWindowProc (hWnd, msg, mp1, mp2));
}
Что же касается второго параметра сообщения WM_COMMAND , то через него передается код источника сообщения WM_COMMAND, а также признак, с помощью которого можно определить, появилось это сообщение в результате действий пользователя мышью или клавиатурой. Заметим, что сообщение WM_COMMAND передается в родительское окно не только от меню, но также и от других органов управления, таких как кнопки, акселераторы и т. д. Однако в приложении MENUAPP источником сообщения WM_COMMAND служит только меню, поэтому вторым параметром этого сообщения мы пренебрегаем. |

