Главная страница
    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.45 MB
Время: 0.03 c
1-1083745038
xroad
2004-05-05 12:17
2004.05.23
Need help: Excel & Delphi


11-1072025889
AlexCo2
2003-12-21 19:58
2004.05.23
Функция PlaySound


14-1083216629
Yar-Com
2004-04-29 09:30
2004.05.23
Не пойму что с головой происходит.....


14-1083330445
McSimm
2004-04-30 17:07
2004.05.23
Microsoft. Конурс для разработчиков


7-1081412432
Stas
2004-04-08 12:20
2004.05.23
Изменения подписи чужой программы





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский