![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
отлов сообщений от контекстного меню
WELLiON © (2004-04-08 22:42:00)Такая проблема: никак не могу отловить, какой же пункт меню у меня выбран. Какое сообщение я должен отлавливать, чтобы узнать идентификатор выбранного пункта меню. (Если я правильно понял, то идентификатор - это то число, которое задается в процедуре 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;
Я просто не знаю, какой именно кусок кода надо приводить. Заранее прошу прощения, если привел не то. Скажите какой нужен - я процитирую.
WELLiON (2004-04-10 11:04:00) [1]Вот мой код:
// ...
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 до возвращения функции."
Если я ловлю не то сообщение, то что мне надо ловить?
clickmaker (2004-04-09 18:54:00) [2]item.cbSize := sizeof(MENUITEMINFO);
item.fMask := MIIM_DATA or MIIM_ID;
item.wID := ID;
WELLiON (2004-04-09 13:45:00) [3]Ну ладно:
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);
Diamond Cat (2004-04-08 22:54:00) [4]wparam а не lparam