Листинг 1.27.
Обработка выбора пользовательских пунктов в системном меню
procedure TForm1.WMSysCommand(var Message: TWMSysCommand);
begin
if Message.CmdType = 10001 then
//Увеличение масштаба
ChangeScale(120, 100)
else if Message.CmdType = 10002 then
//Уменьшение масштаба
ChangeScale(80, 100)
else
//Обработка по умолчанию
DefWindowProc(Handle, Message.Msg, Message.CmdType,
65536 * Message.YPos + Message.XPos);
end;
Обратите внимание на то, что числовые значения, которые переданы в функцию AppendMenu, используются для определения, какой именно пункт меню выбран. Чтобы меню вело себя обычным образом, все поступающие от него команды должны быть обработаны. Поэтому для всех команд, реакция на которые не заложена в реализованном нами обработчике, вызывается обработчик по умолчанию (функция DefWindowProc).