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

Вниз

Проблема с системным меню   Найти похожие ветки 

 
Anar   (2002-10-30 16:30) [0]

Как правильно поместить свой пункт в системное меню?
Если написать:


...
procedure SystemMenu(var Msg:TMessage);message WM_SysCommand;
...
implementation

const IDM_New=$C0;
{$R *.dfm}

procedure TForm1.SystemMenu(var Msg:TMessage);
begin
If Msg.WParam=IDM_New then ShowMessage("My menu item selected.");
Inherited;
end;

procedure TForm1.FormCreate(Sender: TObject);
Var SM:Hmenu;
begin
SM:=GetSystemMenu(Application.Handle,False);
InsertMenu(SM,UINT(3),MF_ByPosition,IDM_New,"My menu");
end;
...


в системном меню появляется пункт "My menu", но при его нажатии ничего не происходит, хотя должно выводиться сообщение "My meu item selected."

В чём глюк?


 
Song   (2002-10-30 16:36) [1]

WM_COMMAND


 
Anar   (2002-10-31 14:37) [2]

А ты сам пробовал? Почему-то не помогает.
Внимательно посмотри на код, может чё то не то.
Вообще кто про это может что-нидь сказать?


 
Arcus   (2002-10-31 15:50) [3]

Попробуй так
if Msg.WParam and $FFF0 =

Насчет маски уточни в хелпе. Для стандартных команд из системного меню нужна именно такая.


 
Anar   (2002-11-01 15:34) [4]

Опять не помогает!
Ну что за глюк...:(
Почему так... Уже всё попробовал. Ничего! ZERO Effect.
МАСТЕРА, ВЫ ДОЛЖНЫ ЗНАТЬ ОТВЕТ! ОТЗОВИТЕСЬ!


 
Marcus   (2002-11-01 17:14) [5]

procedure WMSysCommand(var Message: TWMSysCommand); message WM_SYSCOMMAND;

procedure TMyForm.WMSysCommand(var Message: TWMSysCommand);
begin
if (Message.CmdType = IDM_New) then
...
end;


 
KME   (2002-11-01 17:18) [6]

Зайди на www.delphixfiles.narod.ru


 
Anar   (2002-11-03 00:47) [7]

На сайте этом взяли просто Handle, а не Application.Handle, в связи с чем, программа добавляет пункт только в системное меню заголовка программы.

А метод который предложил Marcus к сожалению тоже не работает.
Ну что за ерунда? Неужели никто раньше с этим не сталкивался?


 
Ученик   (2002-11-03 10:17) [8]

function TForm1.DoMessage(var Message : TMessage) : Boolean;
begin
if (Message.Msg = WM_SYSCOMMAND) and (Message.WParam = IDM_New) then begin
ShowMessage("My menu item selected.");
Result := True
end else
Result := False
end;

procedure TForm1.FormCreate(Sender: TObject);
Var
SM:Hmenu;
begin
SM:=GetSystemMenu(Application.Handle,False);
InsertMenu(SM,UINT(3),MF_ByPosition,IDM_New,"My menu");
Application.HookMainWindow(DoMessage)
end;


 
Alex4444444444   (2002-11-03 12:29) [9]

Mozhet, GetSystemMenu(Handle,...) ?
Application.Handle <> MainForm.Handle !
I eshe: luchshe, navernoe, dobavlyat" item ne v OnCreate,
a perepisat" (v smysle, override) TForm1.CreateWnd, t.k.
inache vse propadet posle RecreateWnd.


 
Anar   (2002-11-03 17:02) [10]

Спасибо Ученик!
Всё получилось!



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

Форум: "Основная";
Текущий архив: 2002.11.14;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.008 c
8-46003
PycUS
2002-07-01 22:11
2002.11.14
Звуки


14-46105
blackman
2002-10-22 23:10
2002.11.14
Кто и сколько времени пишет программы на DELPHI ?


3-45786
Ээх
2002-10-24 22:37
2002.11.14
Я с помощью sql запроса делаю выборку из 2,3, ... n таблиц в DBGr


7-46161
kofman
2002-09-10 20:38
2002.11.14
Как получить список запущенных приложений


1-45796
Vadia
2002-11-03 15:49
2002.11.14
Печать TMemo





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