Собственные меню и сообщение WM_MENUCHAR 


Меню, а не собственные меню, могут установить мнемонический знак меню, вставляя символ подчеркивания рядом с буквой в строке меню. Это дает возможность пользователю выбрать меню, нажимая ALT и букву мнемонического знака. Но в собственных меню Вы не сможете установить мнемонический знак меню этим способом. Вместо этого  ваше приложение должно обработать сообщение WM_MENUCHAR, чтобы обеспечить собственные меню мнемоникой.

Сообщение WM_MENUCHAR  отправляется тогда, когда пользователь вводит с клавиатуры мнемонический знак меню, который не соответствует ни одной предопределенной мнемонике текущего меню. Значение, содержавшее в wParam определяет символ ASCII, который соответствует клавише пользователя, нажатой с клавишей ALT. Младшее слово wParam устанавливает тип выбранного меню и может быть одним из ниже перечисленных значений:

Значение Предназначение
MF_POPUP Если текущее меню является подменю.
MF_SYSMENU Если меню является системным меню.

Старшее слово wParam содержит дескриптор  текущего меню. Окно с собственными меню может обработать WM_MENUCHAR как ниже указано:

   case WM_MENUCHAR:
      nIndex = Индекс пункта меню обуславливается выбором символа,
               который был введен с клавиатуры и дескриптором
               потока меню.
      return MAKELRESULT(nIndex, 2);

Двойка в старшем слове возвращаемого значения сообщает системе, что младшее слово возвращаемого значения содержит для выбора пункта меню индекс, отсчитываемый от нуля.

Ниже следующее константы соответствуют возможным возвращаемым значениям из сообщения WM_MENUCHAR.

Константа Значение Предназначение
MNC_IGNORE 0 Система должна отвергнуть символ нажатый пользователем и создать короткий гудок системного динамика компьютера.
MNC_CLOSE 1 Система должна закрыть активное меню.
MNC_EXECUTE 2 Система должна выбрать пункт, определяемый в младшем слове возвращаемого значения. Окно владелец получает сообщение WM_COMMAND.
MNC_SELECT 3 Система должна выбрать пункт, определяемый в младшем слове возвращаемого значения.

Назад в оглавление
На главную страницу

Hosted by uCoz