![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Загрузка меню из ресурса
kalishenko © (2003-11-21 12:38:00)
Подскажите, пожалуйста, в чем ошибка нижеприведенного кода? Я пытаюсь загрузить из 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;
Заранее благодарен.
kalishenko (2003-11-27 19:56:00) [1]
Все равно меню не появляется. У кого нибудь есть исходники с живыми примерами (и ресурсами, *.rc или *.res)?
kalishenko (2003-11-27 18:00:00) [2]
Спасибо, нашел. А теперь вопрос следующий: можно поподробней объяснить, как обрабатывать нажатия на конкретном пункте моего меню.
clickmaker (2003-11-27 17:37:00) [3]
> kalishenko (27.11.03 16:48) [14]
На любой компашке с дельфи обычно бывает
kalishenko (2003-11-27 16:48:00) [4]
И не подскажете, где находится этот Borland Resource WorkShop.
kalishenko (2003-11-27 16:39:00) [5]
А компилить его вообще нужно?
clickmaker (2003-11-27 16:34:00) [6]
> kalishenko (27.11.03 16:26) [11]
Borland Resource WorkShop, MS Visual C, да хоть в Блокноте: файл же текстовый
kalishenko (2003-11-27 16:26:00) [7]
Вопрос от несведущего: где можно создать этот самый *.rc файл в том виде, который описал clickmaker:
101 MENU DISCARDABLE
BEGIN
POPUP "MY_COOL_MENU"
BEGIN
MENUITEM "Item1", CM_COMMAND1
...
END
END
clickmaker (2003-11-21 16:38:00) [8]
// 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-21 16:19:00) [9]
>>А цикл выборки сообщений ...
О каком цикле выборки сообщений идет речь? Я пока не отлавливаю нажатие на конкретном пункте меню. Я просто пока пытаюсь его вывести.
kalishenko (2003-11-21 15:20:00) [10]
Дело в том, что если вместо TrackPopupMenu поставить SetMenu(hwnd, menu), где hwnd - хендл окна, то все работает. Т.е. меню появляестя сверху формы (отсюда следует, что МЕНЮ В РЕСУРСЕ НАЙДЕНО!).
Но как отобразить PopupMenu? Оно то отображается, но ввиде пустышки. Может при создании ресурса необходимо как-то конкретно указывать, что это не обычное, а PopupMenu.............?
Игорь Шевченко (2003-11-21 14:34:00) [11]
kalishenko (21.11.03 13:58)
А цикл выборки сообщений Пушкин будет делать ?
По идее - это не аргумент
kalishenko (2003-11-21 13:58:00) [12]
101-символьный идентификатор.
А GetLastError ничего не говорит, т.е. по-идее меню в ресурсе найдено.
Игорь Шевченко (2003-11-21 13:44:00) [13]
> В ресурсе меню называется 101
Что есть 101 - символьный идентификатор или цифровой ?
ЧТО ГОВОРИТ GetLastError ?!
kalishenko (2003-11-21 13:35:00) [14]
У меню .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 яАяяАяяАяяряяря?ря яЋ яЖ яа \x7Fр ?р ?р а а А А А А А А а а а р р ш aь шю ьяЂюяаяяяяя 0 яя M A I N I C O N и яя яяe 0" Ђ яяT e s t
Игорь Шевченко (2003-11-21 13:14:00) [15]
kalishenko (21.11.03 12:57)
Который на .rc кончается
kalishenko (2003-11-21 12:57:00) [16]
О каком коде файла ресурса идет речь? Ресурс я создавал в VC++ помещением меню в ресурс.
Игорь Шевченко (2003-11-21 12:42:00) [17]
Код файла ресурсов в студию