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

Вниз

отлов сообщений от контекстного меню   Найти похожие ветки 

 
WELLiON ©   (2004-04-08 22:42) [0]

Такая проблема: никак не могу отловить, какой же пункт меню у меня выбран. Какое сообщение я должен отлавливать, чтобы узнать идентификатор выбранного пункта меню. (Если я правильно понял, то идентификатор - это то число, которое задается в процедуре insertmenuitem(menu, 2, false, item);)
Мой код:
case msg of
 wm_COMMAND:
   begin
     case lParam of
       1: messagebox(MainWnd, "123", "123", MB_OK);
       2: messagebox(MainWnd, "456", "456", MB_OK);
     end;
     RESULT:=0;
   end;
Я просто не знаю, какой именно кусок кода надо приводить. Заранее прошу прощения, если привел не то. Скажите какой нужен - я процитирую.


 
Diamond Cat ©   (2004-04-08 22:54) [1]

wparam  а не lparam


 
WELLiON ©   (2004-04-09 13:45) [2]

Ну ладно:
item.dwTypeData:="?????????";
insertmenuitem(menu, 2, false, item);
//bla-bla-bla

case msg of
 wm_COMMAND:
   begin
     case wParam of
       1: messagebox(MainWnd, "? ????????? ...", "????? ????:", MB_OK);
       2: messagebox(MainWnd, "?????????", "????? ????:", MB_OK);
       3: messagebox(MainWnd, "???????? ??????", "????? ????:", MB_OK);
       4: messagebox(MainWnd, "?????", "????? ????:", MB_OK);
     end;
     messagebox(MainWnd, PChar(inttostr(wParam)), "????? ????:", MB_OK);
     RESULT:=0;
   end;

действие происходит в оконной процедуре. Даже последний из мессаджбоксов не появляется. Подскажите плиз.Может я что-то ни то отлавливаю?
Создание меню:
TrackPopupMenuEx(menu, TPM_rightalign+tpm_bottomalign+tpm_returncmd, p.x, p.y,Mainwnd, nil);


 
clickmaker ©   (2004-04-09 18:54) [3]

item.cbSize := sizeof(MENUITEMINFO);
item.fMask := MIIM_DATA or MIIM_ID;
item.wID := ID;


 
WELLiON ©   (2004-04-10 11:04) [4]

Вот мой код:
// ...
item.cbSize:=sizeof(menuiteminfo);
item.fType:=mft_string;
item.fMask:=MIIM_STRING or MIIM_DATA or MIIM_ID;
menu:=createpopupmenu;
item.dwTypeData:="О программе ...";
item.wID:=1;
insertmenuitem(menu, 1, false, item);
// и т.д.
setmenu(MainWnd, menu);
// ...
В остальном все также как наверху.
Прочитал описание TrackPopupMenuEx. Не объясните, что значит:
"hwnd (предпоследний параметр в моем вызове - прим.)
Дескриптор окна, имеющего контекстное меню. Окно получает все сообщения от меню, но не получает сообщение WM_COMMAND до возвращения функции."
Если я ловлю не то сообщение, то что мне надо ловить?



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

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

Наверх




Память: 0.48 MB
Время: 0.375 c
7-1081610499
Alexis
2004-04-10 19:21
2004.05.23
Вопрос о процессах и не только...


1-1083818215
тихий вовочка
2004-05-06 08:36
2004.05.23
Работа с TMemoryStream


14-1083483352
kldstat
2004-05-02 11:35
2004.05.23
Отпуск


1-1084228469
killer
2004-05-11 02:34
2004.05.23
Form WindowState


4-1081091618
Wiz@rd
2004-04-04 19:13
2004.05.23
WH_KEYBOARD