Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.01.27;
Скачать: CL | DM;

Вниз

System Menu   Найти похожие ветки 

 
bent   (2002-12-11 07:10) [0]

Как вазвать системное меню окна? Иещё один вопрос: Можно ли добавить свой пункт в меню приложения(то, которое появляется, когда мы на кнопке приложения на таскбаре правой кнопкой тыркнем) и как это сделать?


 
Song ©   (2002-12-11 08:36) [1]

Что значит "вызвать"?
Добавить пункт - InsertMenuItem()


 
apay ©   (2002-12-11 09:13) [2]

Получить его:
var
SysMenu: HMENU;
...
SysMenu := GetSystemMenu( FormX.Handle, False );


переделываем его:
(см. "Menu Functions" в WinAPI help )
с помощью WinAPI >

Отобразить его:
TrackPopupMenuEx( SysMenu, ... );

P.S.
WinAPI help иногда и читать полезно!!!


 
bent   (2002-12-11 18:24) [3]

Теперь ещё один вопрос. Меню появляется, но в WinAPI help пишут: "... The window does not receive a WM_COMMAND message from the menu until the function returns." А функция возвращает значение только после токо, как мы кликнем на какой-нибудь пункт в меню, так что форма не реагирует на WM_COMMAND, посылаемые ей меню. Так чёж делать-то?


 
apay ©   (2002-12-11 21:34) [4]

WinAPI help иногда и читать полезно!!!
от системного меню идут WM_SYSCOMMAND


 
bent   (2002-12-11 22:05) [5]

To apay © (11.12.02 21:34)
Да какая разница, форма то всё равно не риагирует


 
Юрий Зотов ©   (2002-12-11 23:23) [6]

type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
procedure WMSysCommand(var Msg: TWMSysCommand); message WM_SYSCOMMAND;
end;

...

const
SC_MyMenuItem = WM_USER + 1;

procedure TForm1.FormCreate(Sender: TObject);
begin
AppendMenu(GetSystemMenu(Handle, FALSE), MF_SEPARATOR, 0, "");
AppendMenu(GetSystemMenu(Handle, FALSE), MF_STRING, SC_MyMenuItem, "Hello!")
end;

procedure TForm1.WMSysCommand(var Msg: TWMSysCommand);
begin
if Msg.CmdType = SC_MyMenuItem then ShowMessage("Hello!") else inherited
end;


 
bent   (2002-12-12 07:19) [7]

To Юрий Зотов © (11.12.02 23:23)
Да добовлять пункт я умею, мне надо, чтобы форма реагировала на стандартные сообщения,но Win Help пишут:"The window does not receive a WM_COMMAND message from the menu until the function (TrackPopupMenuEx()) returns." Может есть какой-то другой срособ
отобразить системное меню?


 
Юрий Зотов ©   (2002-12-12 11:03) [8]

Читаем исходный вопрос.

1. Как вызвать системное меню окна?
Ответ был дан - TrackPopupMenu(Ex).

2. Можно ли добавить свой пункт в меню приложения ... и как это сделать?
Ответ тоже был дан, в виде работающего примера.

Что же еще нужно-то? При чем тут WM_COMMAND и стандартные сообщения? Неясно.

Вы бы рассказали о задаче подробнее. Что-нибудь придумаем.


 
bent   (2002-12-12 15:50) [9]

Я создаю форму без CaptionBar(вместо CaptionBar - label). И мне нужно, чтобы этот Label был похож на CaptionBar. И я хочу, чтобы при нажатие правой кнопки мыши на label"e появлялось системное меню формы со стандартными пунктами и при выборе одно из пунктов, приложение выполняло стандартное действие, соответствующее этому пункту меню(например при выборе пункта "свернуть" приложение сворачивалось в TaskBar).


 
Cobalt ©   (2002-12-13 01:22) [10]

a-la apay ©
английский тоже неплохо учить вместе с русским
hWnd

Identifies the window that owns the shortcut menu. This window receives all messages from the menu. The window does not receive a WM_COMMAND message from the menu until the function returns.
------------------------------
Указывает окно, которое владеет шорткатами меню. Это окно получает все сообщения от меню (типа WM_MEASUREITEM and WM_DRAWITEM messages). Окно не получает сообщение WM_COMMAND от меню до тех пор, пока ф-ия не возвратит результат.

В общем, форма не будет замораживаться, потому, что (подозреваю), в этой ф-ии есть цикл приема-обработки сообщений. Имелось в виду, что как только один из пунктов будет выбран, то ф-ия вернет результат и в очереди будет сообщение WM_COMMAND.


 
bent   (2002-12-13 07:18) [11]

Подождите, я чё-то не чё не понял. Что ине нужно сделать?



Страницы: 1 вся ветка

Текущий архив: 2003.01.27;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.021 c
1-86784
БД
2003-01-18 08:25
2003.01.27
Plese help me now!


14-87025
bkv
2003-01-10 17:04
2003.01.27
Повышение кваллификации и сертификация.


6-87007
Troll
2002-12-01 19:58
2003.01.27
что с ВебМонием???


8-86974
AlexT1000
2002-10-11 14:15
2003.01.27
Графические фильтры!


1-86757
Rulezz
2003-01-17 16:27
2003.01.27
как проверить контрольную сумму файла???