我受不了拉。关于dll中的menu

sdsuper 2002-03-26 02:20:58
hOldinstance = AfxGetResourceHandle();
hNewinstance = LoadLibrary("testdll.dll");//装载dll,已经加载成功
AfxSetResourceHandle(hNewinstance);
CMenu menu;
//testdll.dll中有个menu叫IDR_MENU_MAIN
menu.LoadMenu(IDR_MENU_MAIN);//m_hMenu的值为0x00000000

AfxSetResourceHandle(hOldinstance);

...全文
100 63 打赏 收藏 转发到动态 举报
写回复
用AI写文章
63 条回复
切换为时间正序
请发表友善的回复…
发表回复
marb 2002-03-29
  • 打赏
  • 举报
回复
要是改为Load对话框,对话框里再放上控件怎么办啊?
cpufall 2002-03-28
  • 打赏
  • 举报
回复
gz
sdsuperVC 2002-03-27
  • 打赏
  • 举报
回复
我想可能出在
if (pButton->m_nID ==ID_MENU_PLUS)//在你的主菜单加如要修改的菜单项的ID 这里啊。
sdsuperVC 2002-03-27
  • 打赏
  • 举报
回复
不会啊。我loadmenu了app中的menu,会出现多列的效果啊。
应该是dll的问题吧
ahr 2002-03-27
  • 打赏
  • 举报
回复
这么说来你在你的app工程里新建一个菜单,然后加到主菜单里也会出现 只有一列的效果。跟是不是dll没关系
ahr 2002-03-27
  • 打赏
  • 举报
回复
我晕了。。。
sdsuper 2002-03-27
  • 打赏
  • 举报
回复
我的就是app+dll的菜单啊。
sdsuper 2002-03-27
  • 打赏
  • 举报
回复
呵呵代码没有给全。
CMDIFrameWnd::OnShowPopupMenu (pMenuPopup);
if(pMenuPopup == NULL)
return FALSE;
CBCGPopupMenuBar* pMenuBar = pMenuPopup->GetMenuBar ();
ASSERT_VALID (pMenuBar);
for (int i = 0; i < pMenuBar->GetCount (); i ++)
{
CBCGToolbarButton* pButton = pMenuBar->GetButton (i);
ASSERT_VALID (pButton);
if (pButton->m_nID ==ID_MENU_PLUS)//在你的主菜单加如要修改的菜单项的ID
{
if (CBCGToolBar::IsCustomizeMode ())
{
return FALSE;
}
。。。。。。
呵呵
ahr 2002-03-27
  • 打赏
  • 举报
回复
你这样也是只有dll中的菜单呀,我还以为你要拼出个菜单出来 app原有的+dll中的。
看来是你的pMenuBar的问题

我dll的菜单就是向导生成的。
sdsuper 2002-03-27
  • 打赏
  • 举报
回复
长的不一样原来是
view as popup啊。呵呵。我没有注意到。sorry
sdsuper 2002-03-27
  • 打赏
  • 举报
回复
BCG中其实也一样是用cmenu的。只不过在最后的时候不用setmenu
具体代码:
pMenuPopup->RemoveAllItems ();
hNewinstance = NULL;
hOldinstance = AfxGetResourceHandle();
hNewinstance = LoadLibrary("testdll.dll");//装载dll
AfxSetResourceHandle(hNewinstance);
CMenu menu;
menu.LoadMenu(IDR_MENU_MAIN);
AfxSetResourceHandle(hOldinstance);
pMenuBar->ImportFromMenu (menu);//关键就是这句了
pMenuPopup->SetMaxWidth (250);




sdsuper 2002-03-27
  • 打赏
  • 举报
回复
而且你dll中的menu怎么长的和向导做的menu不一样呢?
ahr 2002-03-27
  • 打赏
  • 举报
回复
我明白了,那样你可能要写一个函数来 Append吧。
CMenu没有直接添加一整套菜单的函数。
你用BCG是怎么添加的?
sdsuper 2002-03-27
  • 打赏
  • 举报
回复
收到了。看了你的代码
我是这样理解的。不知道对不对
1、app中原来没有menu
2、你只是把dll中的menu全部替换成app的menu
而我现在的意思是
1、原来app中有menu、dll中也有menu
2、现在把dll中的menu动态的添加到app中的menu中
3、app的menu没有被替换。只是添加了dll中的menu
ahr 2002-03-27
  • 打赏
  • 举报
回复
BCG?我没用过
我的例子发给你了
sdsuper 2002-03-27
  • 打赏
  • 举报
回复
ahr(电磁波)
能把代码给我看看吗?sdsuper@263.net
sdsuper 2002-03-27
  • 打赏
  • 举报
回复
前面忘记说明了。我用的是基于BCG库的,但是我想这个应该不是什么大问题吧
但是在bcg中不用setmenu, 而是用
pMenuBar->ImportFromMenu (menu);
这样把menu的值加到主菜单中的
ahr 2002-03-27
  • 打赏
  • 举报
回复
第二种情况我也正常
sdsuper 2002-03-27
  • 打赏
  • 举报
回复
你的意思是在主菜单的比如一个叫plus的项的下面会出现
plus
1
a
b
c
2
aa
bb
cc
3
4
这样的吗?
ahr 2002-03-27
  • 打赏
  • 举报
回复
奇怪,我用的就是 LoadLibrary LoadMenu SetMenu.
我的菜单是
1 2 3 4
a aa
b bb
c cc

显示正常
加载更多回复(43)

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧