Главная страница
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.019 c
7-46176
dkDimon
2002-07-13 22:44
2002.11.14
Отключение Пуска и клавиатуры


3-45669
foks
2002-10-18 13:24
2002.11.14
Фильтр в LoocupBox


1-45958
Sergey_Elf
2002-11-04 13:38
2002.11.14
Tdatetimepicker при попытке ввода года вылетает exception


1-45942
stilet
2002-11-04 08:56
2002.11.14
подскажите, как показать все дирректории диска в виде дерева?


6-46031
Akella
2002-09-16 12:19
2002.11.14
ПОМОГИТЕ!!! (Пароль для прокси программно)