Как к основному меню добавить пункты меню из DLL?
От: DimpLe Беларусь  
Дата: 17.09.02 14:22
Оценка:
Есть DLL в которой есть ресурсы в частности менюшка.
Есть приложение в котором по нажатии кнопочки в основное меню должны добавляться пункты меню из DLL.
(не замещать а добавляться)
Как это правильно сделать?

Догружать пункты меню умею.

Проблема как правильно получить меню из DLL.
Пробовал сделать через LoadResource() получаю return типа HGLOBAL и как его "очеловечить" до меню не знаю?

Попробую еще загружать меню через LoadMenuInderect ,но может кто подскажет как лучше сделать?

С Уважением DimpLe
Re: Как к основному меню добавить пункты меню из DLL?
От: bnk СССР http://unmanagedvisio.com/
Дата: 17.09.02 15:27
Оценка:
Здравствуйте DimpLe, Вы писали:

DL>Проблема как правильно получить меню из DLL.

DL>Пробовал сделать через LoadResource() получаю return типа HGLOBAL и как его "очеловечить" до меню не знаю?

А чем не устраивает LoadMenu() — получаешь HMENU вообще..
только в Handle указываешь HMODULE своей длл (можно узнать через GetModuleHandle())
Re[2]: Как к основному меню добавить пункты меню из DLL?
От: DimpLe Беларусь  
Дата: 17.09.02 19:31
Оценка:
Здравствуйте bnk, Вы писали:

bnk>Здравствуйте DimpLe, Вы писали:


DL>>Проблема как правильно получить меню из DLL.

DL>>Пробовал сделать через LoadResource() получаю return типа HGLOBAL и как его "очеловечить" до меню не знаю?

bnk>А чем не устраивает LoadMenu() — получаешь HMENU вообще..

bnk>только в Handle указываешь HMODULE своей длл (можно узнать через GetModuleHandle())



А ка на счет второго параметра?

например в ДЛЛ у меня меню ID_MENU1

каким должен быть второй парметр что бы он не ругался
мол непонятный идентификатор ID_MENU1

у меня не получилось его уговорить не ругаться.

С уважением DimpLe
Re[3]: Как к основному меню добавить пункты меню из DLL?
От: SergH Россия  
Дата: 18.09.02 00:34
Оценка:
Здравствуйте DimpLe, Вы писали:

DL>А ка на счет второго параметра?

DL>например в ДЛЛ у меня меню ID_MENU1

DL>каким должен быть второй парметр что бы он не ругался

DL>мол непонятный идентификатор ID_MENU1

DL>у меня не получилось его уговорить не ругаться.


Т.е. тебе не известено имя ресурса в файле?

Тогда FindResource[Ex] + LoadResource + LockResource.
Или EnumResourceXXX...

Но, может проще договориться, как называется меню в dll?
Делай что должно, и будь что будет
Re[4]: Как к основному меню добавить пункты меню из DLL?
От: DimpLe Беларусь  
Дата: 18.09.02 06:32
Оценка:
Здравствуйте 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 (или тому подобное) тогда имени не знаю.

А после цепочки

EnumResourceXXX...
FindResource[Ex] + LoadResource + LockResource

получаю переменную типа LPVOID и че с ней дальше делать не знаю.



С Уважением DimpLe !
Re[3]: Как к основному меню добавить пункты меню из DLL?
От: Patalog Россия  
Дата: 18.09.02 06:43
Оценка:
Здравствуйте DimpLe, Вы писали:

[]
DL>А ка на счет второго параметра?

DL>например в ДЛЛ у меня меню ID_MENU1


DL>каким должен быть второй парметр что бы он не ругался

DL>мол непонятный идентификатор ID_MENU1

А он у тебя вообще хде-нибудь определяется? Типа в resource.h или еще где?
А вторым параметром должен быть LPCTSTR lpMenuName, то бишь что-то типа MAKEINTRESOURCE(ID_MENU1).
Почетный кавалер ордена Совка.
Re[4]: Как к основному меню добавить пункты меню из DLL?
От: DimpLe Беларусь  
Дата: 18.09.02 06:55
Оценка:
Здравствуйте 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?
От: SergH Россия  
Дата: 18.09.02 12:37
Оценка:
Здравствуйте 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?
От: IPv6 Казахстан  
Дата: 18.09.02 16:20
Оценка:
а просто .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
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.