Есть DLL в которой есть ресурсы в частности менюшка.
Есть приложение в котором по нажатии кнопочки в основное меню должны добавляться пункты меню из DLL.
(не замещать а добавляться)
Как это правильно сделать?
Догружать пункты меню умею.
Проблема как правильно получить меню из DLL.
Пробовал сделать через LoadResource() получаю return типа HGLOBAL и как его "очеловечить" до меню не знаю?
Попробую еще загружать меню через LoadMenuInderect ,но может кто подскажет как лучше сделать?
С Уважением DimpLe
Re: Как к основному меню добавить пункты меню из DLL?
Здравствуйте DimpLe, Вы писали:
DL>Проблема как правильно получить меню из DLL. DL>Пробовал сделать через LoadResource() получаю return типа HGLOBAL и как его "очеловечить" до меню не знаю?
А чем не устраивает LoadMenu() — получаешь HMENU вообще..
только в Handle указываешь HMODULE своей длл (можно узнать через GetModuleHandle())
Re[2]: Как к основному меню добавить пункты меню из DLL?
Здравствуйте bnk, Вы писали:
bnk>Здравствуйте DimpLe, Вы писали:
DL>>Проблема как правильно получить меню из DLL. DL>>Пробовал сделать через LoadResource() получаю return типа HGLOBAL и как его "очеловечить" до меню не знаю?
bnk>А чем не устраивает LoadMenu() — получаешь HMENU вообще.. bnk>только в Handle указываешь HMODULE своей длл (можно узнать через GetModuleHandle())
А ка на счет второго параметра?
например в ДЛЛ у меня меню ID_MENU1
каким должен быть второй парметр что бы он не ругался
мол непонятный идентификатор ID_MENU1
у меня не получилось его уговорить не ругаться.
С уважением DimpLe
Re[3]: Как к основному меню добавить пункты меню из DLL?
Здравствуйте DimpLe, Вы писали:
DL>А ка на счет второго параметра? DL>например в ДЛЛ у меня меню ID_MENU1
DL>каким должен быть второй парметр что бы он не ругался DL>мол непонятный идентификатор ID_MENU1
DL>у меня не получилось его уговорить не ругаться.
Т.е. тебе не известено имя ресурса в файле?
Тогда FindResource[Ex] + LoadResource + LockResource.
Или EnumResourceXXX...
Но, может проще договориться, как называется меню в dll?
Делай что должно, и будь что будет
Re[4]: Как к основному меню добавить пункты меню из DLL?
Здравствуйте SergH, Вы писали:
SH>Здравствуйте DimpLe, Вы писали:
DL>>А ка на счет второго параметра в LoadMenu()? DL>>например в ДЛЛ у меня меню ID_MENU1
DL>>каким должен быть второй парметр что бы он не ругался DL>>мол непонятный идентификатор ID_MENU1
DL>>у меня не получилось его уговорить не ругаться.
SH>Т.е. тебе не известено имя ресурса в файле?
SH>Тогда FindResource[Ex] + LoadResource + LockResource. SH>Или EnumResourceXXX...
SH>Но, может проще договориться, как называется меню в dll?
А что есть имя Меню?
Если не IDR_MENU1 (или тому подобное) тогда имени не знаю.
[] DL>А ка на счет второго параметра?
DL>например в ДЛЛ у меня меню ID_MENU1
DL>каким должен быть второй парметр что бы он не ругался DL>мол непонятный идентификатор ID_MENU1
А он у тебя вообще хде-нибудь определяется? Типа в resource.h или еще где?
А вторым параметром должен быть LPCTSTR lpMenuName, то бишь что-то типа MAKEINTRESOURCE(ID_MENU1).
Почетный кавалер ордена Совка.
Re[4]: Как к основному меню добавить пункты меню из DLL?
Здравствуйте Patalog, Вы писали:
P>Здравствуйте DimpLe, Вы писали:
P>[] DL>>А ка на счет второго параметра?
DL>>например в ДЛЛ у меня меню ID_MENU1
DL>>каким должен быть второй парметр что бы он не ругался DL>>мол непонятный идентификатор ID_MENU1
P>А он у тебя вообще хде-нибудь определяется? Типа в resource.h или еще где? P>А вторым параметром должен быть LPCTSTR lpMenuName, то бишь что-то типа MAKEINTRESOURCE(ID_MENU1).
В том то и дело что меню определено в DLL и этот идентификатор самому проекту нигде не виден на него и ругается.
Но я уже решил проблему.
Взял имя с помощью EnumResourceXXX и подставил в LoadMenu() все заработало
ВСЕМ СПАСИБО ЗА ВНИМАНИЕ
С Уважением DimpLe
Re[5]: Как к основному меню добавить пункты меню из DLL?
Здравствуйте DimpLe, Вы писали:
DL>А что есть имя Меню? DL>Если не IDR_MENU1 (или тому подобное) тогда имени не знаю.
Я имел ввиду его.
DL>А после цепочки
DL>EnumResourceXXX... DL>FindResource[Ex] + LoadResource + LockResource
DL>получаю переменную типа LPVOID и че с ней дальше делать не знаю.
Из MSDN про LockResource:
Return Values
If the loaded resource is locked, the return value is a pointer to the first byte of the resource; otherwise, it is NULL.
Т.е. нужно просто привести к нужному типу ресурса и использовать..
Делай что должно, и будь что будет
Re[5]: Как к основному меню добавить пункты меню из DLL?
а просто .h-ник подключить не судьба была, если ты уж названием знаешь (да еще подозрительно стандартное — ID_MENU1)?
Здравствуйте DimpLe, Вы писали: DL>Здравствуйте Patalog, Вы писали: P>>Здравствуйте DimpLe, Вы писали: P>>[] DL>>>А ка на счет второго параметра?
DL>>>например в ДЛЛ у меня меню ID_MENU1
DL>>>каким должен быть второй парметр что бы он не ругался DL>>>мол непонятный идентификатор ID_MENU1
P>>А он у тебя вообще хде-нибудь определяется? Типа в resource.h или еще где? P>>А вторым параметром должен быть LPCTSTR lpMenuName, то бишь что-то типа MAKEINTRESOURCE(ID_MENU1).
DL>В том то и дело что меню определено в DLL и этот идентификатор самому проекту нигде не виден на него и ругается.
DL>Но я уже решил проблему. DL>Взял имя с помощью EnumResourceXXX и подставил в LoadMenu() все заработало
DL> DL>ВСЕМ СПАСИБО ЗА ВНИМАНИЕ
DL>С Уважением DimpLe