Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Загрузка меню из ресурса


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]

Код файла ресурсов в студию


Наверх

Титульная страница Поиск, карта сайта Написать письмо