Главная Всё о Delphi Регистрация

Вход

Приветствую Вас Гость | RSSВоскресенье, 12.05.2024, 03:28
Меню сайта

Категории каталога
Начинающим [44]
Материалы для начинающих
Трюки [2]
Трюки
Разное [94]
Материалы на разные темы

Наш опрос
Оцените мой сайт
Всего ответов: 63

Каталог статей
Главная » Статьи » Начинающим

Урок 18. Системное меню

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


Часто для небольшого приложения вполне достаточно изменения только этого меню (если вам всего надо добавить только 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 "О программе ...".


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

Категория: Начинающим | Добавил: Дубин (14.08.2007) | Автор: Дубин Михаил Олегович
Просмотров: 758 | Комментарии: 3 | Рейтинг: 0.0/0 |

Всего комментариев: 2
2 &&&  
0
Полностью ссогласен, очень полезный урок, только хотел бы поинтересоваться, для чего "inherited;" ??

1 steck  
0
Очёнь нужный урок,мне понравился....

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа

Поиск

Друзья сайта

Статистика

Рейтинг@Mail.ru

Реклама

Copyright MyCorp © 2024Сайт управляется системой uCoz