Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2003.01.27;
Скачать: [xml.tar.bz2];

Вниз

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 вся ветка

Форум: "WinAPI";
Текущий архив: 2003.01.27;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.01 c
3-86625
VID
2003-01-10 01:21
2003.01.27
DBGridEh: подсветка ячейки(не строки!)


1-86908
Chizh
2003-01-15 22:43
2003.01.27
Как в CheckListBox по нажатию кнопки выделить все Items ы?


14-87057
white@donses.ru
2003-01-07 14:46
2003.01.27
Помогите запустить программу с таблицей PARADOX на другом компе


1-86788
HappyNewYearToAll
2003-01-16 14:34
2003.01.27
Memo


1-86829
trotski
2003-01-16 17:59
2003.01.27
array of shortint





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский