Главная страница
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.06 c
6-1080366633
Energizer
2004-03-27 08:50
2004.05.23
Винсоки. Формирование пакетов


1-1083924175
kull
2004-05-07 14:02
2004.05.23
Как избавиться от goto?


1-1084268991
Axar
2004-05-11 13:49
2004.05.23
Ваше мнение о Delphi .NET


1-1083314180
MakNik
2004-04-30 12:36
2004.05.23
Round на разных компах возвращает разные значения


3-1083320283
Timon
2004-04-30 14:18
2004.05.23
Помогите избавиться от ошибки?