Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2004.05.23;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "WinAPI";
Текущий архив: 2004.05.23;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.025 c
1-1084268332
AxxxE
2004-05-11 13:38
2004.05.23
Delphi просит license information


11-1070477151
miek
2003-12-03 21:45
2004.05.23
Form.OnPaint


8-1078845098
incm
2004-03-09 18:11
2004.05.23
Как рисовать на TIcon


4-1081225444
Sirus
2004-04-06 08:24
2004.05.23
Вызов модальной формы в DLL из DLL...


3-1082550210
S@shka
2004-04-21 16:23
2004.05.23
Выборка по полю TDateTime FireBird 1.5





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский