50分超级简单问题?怎么样在动态库中封装一个菜单,外部程序能够调用菜单功能

ppzcgg 2005-11-05 11:21:41
我想在动态库中封装一个菜单,
当调用动态库的函数showmenu时,把菜单显示出来,然后用鼠标选择菜单来完成相应的功能。

我做了一个程序,可以用exe程序调用dll把菜单显示出来,但是选择菜单功能时不起作用。
...全文
173 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
hfeiyang 2005-11-09
  • 打赏
  • 举报
回复
给分给分^_^
ppzcgg 2005-11-07
  • 打赏
  • 举报
回复
其实就是从DLL中提取菜单并合并到应用程序主菜单中,请问该如何做啊???
回答了一并给分
http://community.csdn.net/Expert/topic/4375/4375418.xml?temp=.5581018
victorzou 2005-11-07
  • 打赏
  • 举报
回复
mark
leechiyang 2005-11-07
  • 打赏
  • 举报
回复
俺给你挑个毛病:p

LPPOINT lpoint=new tagPOINT;
后面没有delete,呵呵。
ppzcgg 2005-11-07
  • 打赏
  • 举报
回复
我按如下的方法做,菜单能显示出来,但是不能调用菜单项对应的函数

1. 通过VC生成动态库,然后添加下面这个输出函数,

extern "C" __declspec(dllexport) void ShowMenu(CWnd* pWnd)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
CMenu menu;
menu.LoadMenu(IDR_MENU1); //IDR_MENU1是在动态库里定义,有Hello和Hi两个ITEM

CMenu* pPopup = menu.GetSubMenu(0);
ASSERT(pPopup != NULL);
CWnd* pWndPopupOwner = pWnd;

LPPOINT lpoint=new tagPOINT;
::GetCursorPos(lpoint);

pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, lpoint->x, lpoint->y,
pWndPopupOwner);

}

2. 然后给Hello和Hi两个ITEMD定义两个消息响应函数
void CMFCDLLApp::OnMenuItemHello()
{
AfxMessageBox("Hello");
}

void CMFCDLLApp::OnMenuItemHi()
{
AfxMessageBox("Hi");

}



3.在exe可执行程序中调用动态库的ShowMenu函数, 菜单能显示出来,但是点Hello或Hi的时候不会弹出AfxMessageBox("Hello")或AfxMessageBox("Hi");
请问如何才能调用动态库中OnMenuItemHello,OnMenuItemHi两个函数
void CTestDlg::OnButton1()
{
typedef void (_cdecl *TESTDLL)();
HINSTANCE hmod;
hmod = ::LoadLibrary ("mfcdll.dll");
if(hmod==NULL)
{
AfxMessageBox("Fail");
}
TESTDLL lpproc;
lpproc = (TESTDLL)GetProcAddress (hmod,"ShowMenu");
if(lpproc!=(TESTDLL)NULL)
(lpproc)(this);

FreeLibrary(hmod); // TODO: Add your control notification handler code here

}
teli_eurydice 2005-11-07
  • 打赏
  • 举报
回复
不太好实现,需要严格的 ID 定义,要不ID 重复了怎么办,要不用纯资源DLL ,所有菜单在DLL里面,自己搜索一下
ppzcgg 2005-11-06
  • 打赏
  • 举报
回复
举个例子吧,我想在动态库封装一个菜单,菜单有两个ITEM,分别是Hello和Hi,选中Hello,弹出hello窗口,选中Hi,弹出Hi窗口,动态库有一个输出函数叫showmenu,外部exe调用动态库showmenu时,将把动态库的菜单显示出来,这时我想显示hello窗口,选中菜单的Hello项即可。

不知道怎么实现这样的功能
property1 2005-11-05
  • 打赏
  • 举报
回复
你得说的详细点, 把代码贴出来.

16,551

社区成员

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

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

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