社区
界面
帖子详情
纯资源dll的问题
qwer1919qwer
2008-02-23 03:19:05
请问大家:VC++中如果我将对话框做成纯资源dll,在其它程序中引用以后,我又想为此对话框关联一个类,应该怎么做?谢谢~
...全文
71
5
打赏
收藏
纯资源dll的问题
请问大家:VC++中如果我将对话框做成纯资源dll,在其它程序中引用以后,我又想为此对话框关联一个类,应该怎么做?谢谢~
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
qwer1919qwer
2008-02-24
打赏
举报
回复
如果直接把IDD的值改成资源DLL中的ID值,它就会提示我说此ID值未定义~
qwer1919qwer
2008-02-24
打赏
举报
回复
谢谢jameshooo对我的问题的回复!
大概是我没说清楚,我的问题是想在其它程序中为dll中的对话框资源创建一个类,比如:<class MyDialog : public Dialog …>,以便我在此类中添加一些针对此对话框操作的消息处理函数,应该怎么做?
楼上的方法似乎只是简单的调用,希望大家能帮帮忙~
qwer1919qwer
2008-02-24
打赏
举报
回复
解决啦,谢谢,你太有才了^-^
jameshooo
2008-02-24
打赏
举报
回复
我说的就是在其它程序中创建类,你应该也包括资源DLL中resource.h文件,或者手工创建这些ID定义,或者不用宏直接用ID的值,否则会出现ID未定义的情况。
上面的原理并不是直接调用,而是类似下面的代码:
class CMyDialog : public CDialog
{
...
UINT DoModal(...)
{
HINSTANCE hOld = AfxGetResourceHandle();
HMODULE hDllHandle = AfxLoadLibrary("res.dll");
AfxSetResourceHandle(hDllHandle);
UINT uiRet = CDialog::DoModal(...);
AfxSetResourceHandle(hOld);
AfxFreeLibrary(hDllHandle);
return uiRet;
}
BOOL Create(...)
{
HINSTANCE hOld = AfxGetResourceHandle();
HMODULE hDllHandle = AfxLoadLibrary("res.dll");
AfxSetResourceHandle(hDllHandle);
BOOL bRet = CDialog::Create(...);
AfxSetResourceHandle(hOld);
AfxFreeLibrary(hDllHandle);
return bRet;
}
......
};
jameshooo
2008-02-23
打赏
举报
回复
按照正常方式创建一个类,IID的值改成资源DLL中的ID值,然后有两种方法:
1、重载DoModal和Create函数,在函数里面首先调用AfxSetResourceHandle(DllHandle),函数退出前再次调用以恢复旧的资源句柄。
2、不重载DoModal和Create,但是外部创建对话框时不能调用Dlg.DoModal/Dlg.Create,相反应该调用Dlg.InitModalIndirect/Dlg.CreateIndirect,调用之前你必须从资源DLL中读取对话框资源到内存中,然后强制转换成LPCDLGTEMPLATE
编写
纯
资源
DLL
(图片,图标) vc动态链接库
vc编写
纯
资源
DLL
(图片,图标)
纯
资源
DLL
创建与使用
纯
资源
(.rc)
DLL
创建与使用源码,使用开发开台是VS2008.
纯
资源
DLL
(加载和调用)
用
DLL
装载
资源
,然后在EXE中调用。 在有多个进程进行
资源
共享的情况下,可以节约空间
visual c++用VC
纯
资源
DLL
解决国际化
问题
_多国语言版i18n
用VC
纯
资源
DLL
解决国际化
问题
_多国语言版.zip
步步为营之创建
纯
资源
DLL
-上
步步为营之创建
纯
资源
DLL
-上 步步为营之创建
纯
资源
DLL
-上
界面
15,979
社区成员
115,896
社区内容
发帖
与我相关
我的任务
界面
VC/MFC 界面
复制链接
扫一扫
分享
社区描述
VC/MFC 界面
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章