Текущий архив: 2005.03.20;
Скачать: CL | DM;
Вниз
Как создать меню с помощью Win API? Найти похожие ветки
← →
oleg_SYS © (2005-02-04 10:03) [0]У меня почему-то получается меню размером где-то 5X10 и мне не удаётся узнать выбранный пункт меню. В чём ошибка?
…
procedure MenuSelect(var msg : TMessage); message wm_MenuSelect;
…
var
h : integer;
…
procedure TForm1.MenuSelect;
var
d : array[0..49] of Char;
begin
GetMenuString(h,msg.WParam,d,50,0);
form1.Caption:=strpas(d);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
f : integer;
begin
h := CreateMenu;
AppendMenu(h,MF_STRING,123456,"MyText");
if TrackPopupMenu(h,TPM_CENTERALIGN or TPM_LEFTBUTTON or TPM_RETURNCMD,50,50,0,form1.Handle,nil) then
ShowMessage(‘Выбран пункт меню: " + Form1.Caption);
DestroyMenu(h);
end;
…
← →
alpet (2005-02-04 12:41) [1]Для меню надо делать обработчики сообщений.
Функция TrackPopupMenu всего лишь выводит его, и ждет пока пользователь не выберет какой нибудь пункт.
После этого в форму посылается сообщение WM_COMMAND, и в параметре wParam находится индетификатор элемента меню.
Функцию обработки сообщения надо создать в классе формы:
TForm1 = class (TForm)
...
public
procedure OnCommand (var msg: TMessage); message WM_COMMAND;
end;
В реализации этой функции можно обработать выбор тех или иных пунктов:
procedure OnCommand (var msg: TMessage);
begin
if (LoWord (msg.wParam) = MI_ID01) then
// Код ...
end;
Страницы: 1 вся ветка
Текущий архив: 2005.03.20;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.052 c