如何把dll中的icon、menu等资源在app中读取出来呢?

sdsuper 2002-03-08 05:53:26
如何把dll中的icon、menu等资源在app中读取出来呢?
或是把app中的icon、menu给替换成dll中的资源

最好给个完整的例子,谢谢
...全文
164 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
sdsuper 2002-03-08
  • 打赏
  • 举报
回复
怎么话题就完了?
我还等着大家呢
sdsuper 2002-03-08
  • 打赏
  • 举报
回复
我的主要思路是这样的
1、app运行是到指定目录去load各种外挂的插件
2、运行后根据不同插件让菜单、工具条等都在基本框架动态增加外挂的信息
3、主程序和外挂的一些函数接口统一规定
4、。。。。。。
不知道哪位高人。给我个帮助。
谢谢!!!
sdsuper 2002-03-08
  • 打赏
  • 举报
回复
我这个问题有点象多语言支持的
但更象一个插件。象photoshop,Acrobat Reader 之类的
只要把一个dll文件拷贝到指定目录。主程序就可以直接调用dll里面的东西
包括资源、函数。。。。
lithe 2002-03-08
  • 打赏
  • 举报
回复
BOOL WINAPI Login(PopeDom *LoginUser,int nRights,const char* szPrompt)
{
BOOL bRet;

HINSTANCE hOldResHandle=AfxGetResourceHandle();
HINSTANCE hInst = ::GetModuleHandle("SPub.dll");

//把资源句柄指向本DLL。注意!这是必须的。否则构造对话框或引用资源时极可能会出错。
AfxSetResourceHandle(hInst);

CLoginDlg dlg(NULL,nRights,szPrompt,LoginUser);
if(dlg.DoModal()==IDOK)
bRet=TRUE;
else
bRet=FALSE;

//恢复老的资源句柄。注意!这也是必须的。
AfxSetResourceHandle(hOldResHandle);
return bRet;
}
sdsuper 2002-03-08
  • 打赏
  • 举报
回复
我比较笨。还是不能理解上面各位的意思
能比较具体的介绍。或是拿个例子来解说一下好吗?
分数不够可以加!
wagxm 2002-03-08
  • 打赏
  • 举报
回复
关注
delphihero 2002-03-08
  • 打赏
  • 举报
回复
ExtractIcon 好像是取得.exe文件的Icon的,不知道dll是否可以
dxhdxh2k 2002-03-08
  • 打赏
  • 举报
回复
up
stoneyrh 2002-03-08
  • 打赏
  • 举报
回复
ExtractIcon
大概是这个函数
你找一下帮助吧

如果你愿意的话,可以找一下mfc的源代码
你跟踪RegisterShellFileTypes就知道了,里面有怎么使用的方法
111222 2002-03-08
  • 打赏
  • 举报
回复
HINSTANCE hResource = LoadLibraryEx("resource.dll",NULL,LOAD_LIBRARY_AS_DATAFILE);
AfxSetResourceHandle(hResource);
sdsuper 2002-03-08
  • 打赏
  • 举报
回复
能给个具体的例子吗?谢谢。上面的方法我也试过了,但是不得其法啊
Tasehouny 2002-03-08
  • 打赏
  • 举报
回复
很简单了,通常如果你的程序调用了一个DLL,而这个DLL中又包含了资源,如果在资源ID重复的情况下,用常规的方法肯能得不到正确的资源句柄,因此,有两种方法可以解决:

1、用MFC提供的宏
HINSTANCE hOldInst = AfxGetResourceHandle();
AfxSetResourceHandle(YourDLL.hModule); //切换到DLL资源
//-----------------------------------
这里可以用DLL的资源
//------------------------------------------------------------------------
AfxSetResourceHandle(hOldInst);

2、直接用WIN API的方法,例如要装入DLL中的一个位图
m_imgBitmap.Attach(::LoadBitmap(YourDLL.hResource,MAKEINTRESOURCE(IDB_BITMAP)));
sdsuper 2002-03-08
  • 打赏
  • 举报
回复
这个大家都知道的
我是说在一个程序中如何去调用dll中的资源
倒!!!
smae 2002-03-08
  • 打赏
  • 举报
回复
exescope

1,649

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 非技术类
社区管理员
  • 非技术类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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