Ускорители и меню

С помощью ускорителя это то же самое, при выборе пункта меню: оба действия вызывают системы для отправки сообщения WM_COMMAND или WM_SYSCOMMAND в соответствующую процедуру окна. WM_COMMAND сообщение содержит идентификатор, который рассматривает процедуру окна для определения источника сообщения. Если ускоритель сообщения WM_COMMAND, идентификатор это ускорителя. Аналогично если элемент меню сообщения WM_COMMAND, идентификатор является пункт меню. Потому что ускоритель предоставляет ярлык для выбора команды меню, приложение обычно назначает тот же идентификатор для ускорителя и соответствующий пункт меню.

Приложение обрабатывает сообщение WM_COMMAND ускоритель точно так же, как соответствующего сообщения WM_COMMAND пункта меню. Однако WM_COMMAND сообщение содержит флаг, который указывает, происходит ли сообщение от ускорителя или пункт меню, в случае, если ускорителей должны обрабатываться по-разному от их соответствующих пунктов меню. WM_SYSCOMMAND сообщение не содержит этот флаг.

Идентификатор определяет, создает ли ускоритель сообщения WM_COMMAND или WM_SYSCOMMAND. Если идентификатор содержит то же значение элемента меню в меню системы, ускоритель генерирует сообщения о WM_SYSCOMMAND. В противном случае ускоритель генерирует сообщения WM_COMMAND.

Если ускоритель имеет тот же идентификатор, что элемент меню и пункт меню отображается серым цветом или отключена, ускоритель отключена и не создает сообщения WM_COMMAND или WM_SYSCOMMAND. Кроме того ускоритель не приводит сообщение команды, если соответствующее окно свернуто.

Когда пользователь использует ускоритель, соответствующий элемент меню, процедура окна получает сообщения WM_INITMENU и WM_INITMENUPOPUP , как будто пользователь выбрал пункт меню. Сведения о том, как для обработки этих сообщений содержатся в разделе меню.

Ускорителя, соответствующий элемент меню должны быть включены в текст пункта меню.