Главная страница
    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.055 c
1-86825
UE
2003-01-16 05:27
2003.01.27
Как вставлять текст в приложения?


14-87035
Феликс
2003-01-03 21:40
2003.01.27
---|Ветка была без названия|---


14-87114
Rouse_
2003-01-09 22:36
2003.01.27
Чу?! Слышу хохот!!! Шутов не потерять!!!!


1-86790
Тень
2003-01-15 17:08
2003.01.27
Разметка в QReport ???


7-87178
Геннадий
2002-11-12 17:29
2003.01.27
Чтение/запись сектора диска





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский