Главная страница
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.03 c
14-88591
Лёха
2002-04-15 16:17
2002.05.27
Хай! Кто-нить знает, как узнать, какие функции есть в dll-ках?


1-88510
Stexen
2002-05-14 22:59
2002.05.27
AVI AVI AVI AVI AVI AVI AVI AVI AVI AVI AVI AVI AVI AVI AVI


1-88449
Art1
2002-05-17 15:31
2002.05.27
Как сделатьт указатель на переменную?


1-88486
eSKey
2002-05-15 10:39
2002.05.27
Help me! Stream & Thread


3-88350
Ura
2002-04-30 10:45
2002.05.27
Немогу создать уникальный индекс в IB