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

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.018 c
1-45865
Andrew2
2002-11-05 14:06
2002.11.14
Как после загрузки файла в мемо установить


1-45966
Дмитрий К.К.
2002-11-02 05:42
2002.11.14
Весь ImageList в один файл


1-45798
MsGuns
2002-11-04 19:17
2002.11.14
События OnCreate, OnShow, OnActivate для формы


7-46181
dr.karter
2002-08-29 17:41
2002.11.14
Отключка


3-45761
arkara
2002-10-23 10:50
2002.11.14
Объясните! Загадочные lookup поля в TQuery...