Форум: "Основная";
Текущий архив: 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