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

Вниз

Как вставить свой пункт в чужое PopuMenu?   Найти похожие ветки 

 
Димок   (2002-05-15 18:03) [0]

Уважаемые мастера, подскажите, пожалуйста, если это возможно, как вставить свой пункт в чужое PopupMenu. Например, мне надо вставить свой пункт в меню, выскакивающее при нажатие на правую кнопку в чужом TEdit (в совершенно постороннем приложении), там где другие пункты - Вырезать, Копировать, Вставить и т.п.
Спасибо!


 
MBo ©   (2002-05-15 18:13) [1]

GetMenu
InsertMenuItem
и т.д.


 
Димок   (2002-05-15 21:03) [2]

Спасибо, GetMenu отлично работает, но вот как использовать InsertMenuItem не могу понять. Можно небольшой примерчик, пожалуйста?
(Я пишу: insertmenu(hm,0,mf_byposition+mf_string,0,"aaaa");)


 
MBo ©   (2002-05-16 07:49) [3]

пример откуда-то. SDK говорит, что InsertMenu устарело.

procedure TForm1.Button1Click(Sender: TObject);
var
SystemMenu : HMenu;
MyMenuItemInfo : TMenuItemInfo;
tmpInt : Integer;
begin
{ get the TForm"s system menu handle }
SystemMenu := GetSystemMenu(handle, FALSE);

{ initialize our TMenuItemInfo record }
FillChar(MyMenuItemInfo,SizeOf(TMenuItemInfo),#0);
MyMenuItemInfo.cbSize := SizeOf(TMenuItemInfo);
MyMenuItemInfo.fMask := MIIM_TYPE or
MIIM_ID;

{ add a seperator between the end of the menu
items and our new menu item }
MyMenuItemInfo.fType := MFT_SEPARATOR;
tmpInt := GetMenuItemCount(SystemMenu);
InsertMenuItem(SystemMenu,
tmpInt,
TRUE,
MyMenuItemInfo);

{ add our new menu item to the end of the list }
MyMenuItemInfo.fType := MFT_STRING;
MyMenuItemInfo.dwTypeData := "M&y Menu Item";
MyMenuItemInfo.cch := StrLen(PChar(MyMenuItemInfo.dwTypeData));
tmpInt := GetMenuItemCount(SystemMenu);
InsertMenuItem(SystemMenu,
tmpInt,
TRUE,
MyMenuItemInfo);
end;


 
Димок   (2002-05-16 20:27) [4]

Спасибо огромное!! Все отлично работает, осталось мне только научиться отлавливать клики на этом item"е. Предполягаю, что для этого нужно связать с ним как-то компонент типа TMenuItem.


 
MBo ©   (2002-05-16 20:36) [5]

Насколько я понимаю, надо ловить WM_MENUSELECT WM_COMMAND и т.п.



 
Димок   (2002-05-16 21:03) [6]

К сожалению,я не очень знаю, как ловить WINAPI сообщения. Наверно, надо написать что-то вроде:
procedure MyItemClick();message WM_MENUSELECT;
А потом в процедуре проверять, к моему item"у это относится или нет...


 
MBo ©   (2002-05-16 21:34) [7]

ты же писал
>>в чужое PopupMenu
там procedure MyItemClick(); не пройдет


 
Димок   (2002-05-16 21:49) [8]

А как еще можно отловить WM_MENUSELECT?



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

Текущий архив: 2002.05.27;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.012 c
3-88315
skywalker
2002-04-29 12:38
2002.05.27
Параметры к MS SQL


3-88356
ATLANTIDO
2002-04-30 20:32
2002.05.27
БАЗА


1-88452
Ron
2002-05-17 11:32
2002.05.27
TStringGrid


1-88402
mifi
2002-05-16 20:34
2002.05.27
Myimage :array


4-88689
Andery G
2002-03-25 18:25
2002.05.27
как отследить запуск приложения