BorlanD Russian Сommunity

На этом уроке изучим системное меню. Сейчас мы с вами посмотрим, как можно в вашем приложении изменить системное меню. Это меню, как известно, появляется при нажатии на иконке в левом верхнем углу вашего приложения.

Часто для небольшого приложения вполне достаточно изменения только этого меню (если вам всего надо добавить только 1-2 пункта в ваше приложение). Для изменения этого меню мы должны использовать API-функцию InsertMenu. Также нам пригодится API-функция GetSystemMenu - она возвращает указатель на системное меню.

 

Вот конкретный пример кода:

 

menu:=GetSystemMenu(Handle, False);

            InsertMenu(menu, 5, MF_ByPosition, 1000, 'About');

 

Этот код надо поместить, например, в обработчик нажатия кнопки (при нажатии на которую и будет добавляться в системное меню новый пункт). Разумеется, переменная menu типа HMENU должна быть до этого определена.

 

Код определения:

 

var

            menu: HMENU;

 

Параметры у функции InsertMenu следующие: первый - это указатель на системное меню. Его мы получили через API-функцию GetSystemMenu. Второй - это номер позиции, на которую наш новый пункт меню вставится (нумерация идет с нуля). Значение третьего параметра (MF_ByPosition) говорит о том, что второй параметр интерпретируется именно как номер позиции для нового пункта меню. Четвертый - это идентификатор меню (мы задали для него значение 1000). И, наконец, пятый - это заголовок нового пункта меню.

При запуске программы и нажатии на кнопку с добавленный в ее обработчик кодом в системном меню появится новый пункт:

Сейчас при выборе этого пункта ничего не происходит. Давайте добавим обработчик. Для этого вносим объявление нового обработчика в соответствующее место кода нашей формы.

 

Код обработчика:

 

type

            rocedure SystemMenu(var Msg:TMessage); Message WM_SysCommand;

  

Далее пишем сам обработчик:

 

procedure TForm1.SystemMenu(var Msg:TMessage);

begin

            if Msg.wParam=1000 Then //если выбрали меню с идентификатором 1000

            ShowMessage('О программе ...');

end;

 

Теперь при выборе нашего пункта меню естественно появится messagebox "О программе ...".

Всё на этом урок закончен.

Просмотров: 959 | Категория: Delphi 7 | Дата: 11.05.2008