|
Вопрос # 779/ вопрос открыт / |
|
Как сделать так, чтобы в моей программе на панели задач при нажатии правой кнопки мыши на кнопку с моей программой НЕ выводилось стандартное "Свернуть", "Закрыть",..., а чтобы выводилось только например, "О программе" и при нажатии этого меню совершалось действие?
 |
Вопрос задал: Кирилл Х Ю (статус: Посетитель)
Вопрос отправлен: 23 июля 2007, 14:57
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: Вадим К
Здравствуйте, Кирилл Х Ю!
Для этого нужно две вещи - первое - узнать хендл меню. Потом используя апи функции можно манипулировать им.
узнать хендл - это просто GetSystemMenu (Application.Handle, False).
Но надо знать, что кнопка на панели задач может соответсвовать как Application (Невидимое окно), так и главной форме.
Добавить пункт AppendMenu (хендл, MF_SEPARATOR, 0, \'\');
удалить DeleteMenu (хендл,номер в списке,MF_BYPOSITION)
в приложении смотрите наброски кода
Приложение: Переключить в обычный режим- Unit OMenu;
-
- Interface
-
- Uses SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Dialogs, Menus;
-
- Type
- TForm1 = Class (TForm)
- Procedure FormCreate (Sender : TObject);
- Private {Private declarations}
- Public {Public declarations}
- Procedure WinMsg (Var Msg : TMsg; Var Handled : Boolean);
- Procedure DoWhatEever;
- End;
-
- Var Form1 : TForm1;
-
- Implementation
- {$R *.DFM}
-
-
-
- Procedure Tform1.WinMsg (Var Msg : TMsg; Var Handled : Boolean);
- Begin
- If Msg.Message = WM_SYSCOMMAND Then
- If Msg.WParam = ItemID Then DoWhatEver;
- End;
-
- Procedure TForm1.FormCreate (Sender : TObject);
- Begin
- Application.OnMessage := WinMsg;
- AppendMenu (GetSystemMenu (Form1.Handle, False), MF_SEPARATOR, 0, '');
- AppendMenu (GetSystemMenu (Form1.Handle, False), MF_BYPOSITION, ItemID, '&My menu');
- AppendMenu (GetSystemMenu (Application.Handle, False), MF_SEPARATOR, 0, '');
- AppendMenu (GetSystemMenu (Application.Handle, False), MF_BYPOSITION, ItemID,'&My menu
minimized');
- End;
-
- Procedure TForm1.DoWhatEver;
- Begin
-
- End;
-
- End.
 |
Ответ отправил: Вадим К (статус: Академик)
Время отправки: 23 июля 2007, 15:31
Оценка за ответ: 5
|
Мини-форум вопроса
Мини-форум пуст.
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|