Создание пользовательского пункта системного меню на C
Способ 1 Выбор системного меню приложения
обрабатывается сообщением wm_syscommand. Нужно выполнить два действия:
записать новый пункт меню и предусмотреть реакцию на его выбор.
Создается пункт меню с помощью функции appendmenu. Можно создать
разделитель или строку меню, задав соответствующий флаг. По причине
того, что может быть создан не один пункт меню, для его идентификации
надо создать переменную (в данном случае idsysabout) и символьную
строку, отображающую наименование пункта меню. Далее надо перехватить
нужное сообщение. Это можно сделать аналогично предыдущему примеру,
задав в заголовочном файле карту сообщений. Содержимое файла unit1.h
ничем не отличается от предыдущего, а функция wmsys сможет распознать
щелчок на созданном пункте меню, получив на входе в поле cmdtype
заданное значение. В данном примере появится окно-сообщение с
дополнительной информацией. Однако ничто не мешает написать, например,
какую-либо игру или калькулятор и вызвать их при выборе
пользовательского пункта меню. Осуществляется перехват данного типа
сообщения, поэтому для проведения стандартной обработки любого другого
системного сообщения надо не забывать вызвать метод dispatch.
void
__fastcall tform1::wmsys(twmsyscommand& message) { if
(message.cmdtype == idsysabout) showmessage("Этот пункт меню
сделан мной"); else tform:: dispatch(&message); }
Способ
2 Выше описано создание пункта системного меню с помощью карты
сообщений. Эту же задачу можно выполнить другим способом. Объект
application имеет возможность производить обработку собственных
сообщений в пользовательской функции-обработчике. Эта функция имеет
следующее описание: