Форум: "WinAPI";
Текущий архив: 2004.02.06;
Скачать: [xml.tar.bz2];
ВнизЗагрузка меню из ресурса Найти похожие ветки
← →
kalishenko (2003-11-21 12:38) [0]Подскажите, пожалуйста, в чем ошибка нижеприведенного кода? Я пытаюсь загрузить из dll-ки меню, помещенное в ресурс этой библиотеки. В ресурсе меню называется 101 и библиотека 100% откомпилена.
hLib: Cardinal;
procedure PopupMyMenu(hWnd: THandle);
var Menu: hMenu;
P: TPoint;
begin
Menu := LoadMenu(hLib, "#101"); //пробовал вместо #101 ставить 101 - эффекта никакого
GetCursorPos(P);
SetForegroundWindow(hWnd);
TrackPopupMenu(Menu, TPM_LEFTBUTTON, P.X, P.Y, 0, hWnd, NIL);
PostMessage(hWnd, WM_NULL, 0, 0);
DestroyMenu(Menu);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
hLib := LoadLibrary("c:\MyProject\b.dll");
PopupMyMenu(Application.Handle);
end;
Заранее благодарен.
← →
Игорь Шевченко (2003-11-21 12:42) [1]Код файла ресурсов в студию
← →
kalishenko (2003-11-21 12:57) [2]О каком коде файла ресурса идет речь? Ресурс я создавал в VC++ помещением меню в ресурс.
← →
Игорь Шевченко (2003-11-21 13:14) [3]kalishenko (21.11.03 12:57)
Который на .rc кончается
← →
kalishenko (2003-11-21 13:35) [4]У меню .res.
Вот это, что-ли? :)
яя яя и яя яя ( @ Ђ Ђ ЂЂ Ђ Ђ Ђ ЂЂ ЂЂЂ ААА я я яя я я я яя яяя Sёp Sёp Sёp {0 w Sёpp і 0FSёv p {0 ¶fSёvf і»†Sёvf`p {v»ёSёvff w»»»Sёvff` »»»Sёvfff k»‹Sёvfff ff»†Sёvfff pffkfSёvfff` pffffSёvk†f` ffffSёvk¶f` ffffSё{kёf` pffffSё{»»†` pffffSё{»»ё` ffffSёx»ё» fffSёw‹¶‹7 f`3·†fі ff`s1†`;0 pfff`ff s· fff`ff` ;p pfffffff · fffff` Fff w яАяяАяяАяяряяря?ря яЋ яЖ яа р ?р ?р а а А А А А А А а а а р р ш aь шю ьяЂюяаяяяяя 0 яя M A I N I C O N и яя яяe 0" Ђ яяT e s t
← →
Игорь Шевченко (2003-11-21 13:44) [5]
> В ресурсе меню называется 101
Что есть 101 - символьный идентификатор или цифровой ?
ЧТО ГОВОРИТ GetLastError ?!
← →
kalishenko (2003-11-21 13:58) [6]101-символьный идентификатор.
А GetLastError ничего не говорит, т.е. по-идее меню в ресурсе найдено.
← →
Игорь Шевченко (2003-11-21 14:34) [7]kalishenko (21.11.03 13:58)
А цикл выборки сообщений Пушкин будет делать ?
По идее - это не аргумент
← →
kalishenko (2003-11-21 15:20) [8]Дело в том, что если вместо TrackPopupMenu поставить SetMenu(hwnd, menu), где hwnd - хендл окна, то все работает. Т.е. меню появляестя сверху формы (отсюда следует, что МЕНЮ В РЕСУРСЕ НАЙДЕНО!).
Но как отобразить PopupMenu? Оно то отображается, но ввиде пустышки. Может при создании ресурса необходимо как-то конкретно указывать, что это не обычное, а PopupMenu.............?
← →
kalishenko (2003-11-21 16:19) [9]>>А цикл выборки сообщений ...
О каком цикле выборки сообщений идет речь? Я пока не отлавливаю нажатие на конкретном пункте меню. Я просто пока пытаюсь его вывести.
← →
clickmaker (2003-11-21 16:38) [10]// rc
101 MENU DISCARDABLE
BEGIN
POPUP "MY_COOL_MENU"
BEGIN
MENUITEM "Item1", CM_COMMAND1
...
END
END
// pas
hMenu = LoadMenu(hInstance, "101");
hPopup = GetSubMenu(hMenu, 0);
TrackPopupMenu(hPopup, ...
← →
kalishenko (2003-11-27 16:26) [11]Вопрос от несведущего: где можно создать этот самый *.rc файл в том виде, который описал clickmaker:
101 MENU DISCARDABLE
BEGIN
POPUP "MY_COOL_MENU"
BEGIN
MENUITEM "Item1", CM_COMMAND1
...
END
END
← →
clickmaker (2003-11-27 16:34) [12]
> kalishenko (27.11.03 16:26) [11]
Borland Resource WorkShop, MS Visual C, да хоть в Блокноте: файл же текстовый
← →
kalishenko (2003-11-27 16:39) [13]А компилить его вообще нужно?
← →
kalishenko (2003-11-27 16:48) [14]И не подскажете, где находится этот Borland Resource WorkShop.
← →
clickmaker (2003-11-27 17:37) [15]
> kalishenko (27.11.03 16:48) [14]
На любой компашке с дельфи обычно бывает
← →
kalishenko (2003-11-27 18:00) [16]Спасибо, нашел. А теперь вопрос следующий: можно поподробней объяснить, как обрабатывать нажатия на конкретном пункте моего меню.
← →
kalishenko (2003-11-27 19:56) [17]Все равно меню не появляется. У кого нибудь есть исходники с живыми примерами (и ресурсами, *.rc или *.res)?
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.02.06;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.027 c