我写了一个Dialog,想将它包起来给别人使用,如何做?我建立一个 MFC DLL 动态链接库。
首先在动态链接库中加入一个对话框,就这个对话框,我想将它export出去,如何做呢?(不是在一个函数里调用对话框,再将 结果返回!)
(使用者要能够使用如下代码:MyDllDlg dlg;dlg.DoModal();......)
首先在动态链接库中加入一个对话框,就这个对话框,我想将它export出去,如何做呢?(不是在一个函数里调用对话框,再将 结果返回!)
(使用者要能够使用如下代码:MyDllDlg dlg;dlg.DoModal();......)
解决方案 »
- 如果实现拖动时显示指定内容
- 请问CListCtrl带CheckBox窗口的
- 关于如何动态更新treectrl结点
- 在线等!!如何判断一个汉字是否是GB2312字符集中的汉字??
- 武汉的兄弟散分了!
- 为什么重装VC6后,以前的应用程序不能编译了?
- 100分急求cximage为何不能加载pnm文件
- 急 急 急 无法向注册表写入项!res://apppwiz.cpl/listbox.htc 发其它版没人应,转这里
- 请教关于TCP的滑动窗口控制问题?一个容易被忽略的问题!
- 在VC中根据什么决定在类中定义的成员函数的权限为Public、Protected、Private?
- 500分征求《传奇》源代码的下载地址!
- vc中一个关于文字显示的暴头大难题,进来看看,看者均有分。
{
if (dwReason == DLL_PROCESS_ATTACH)
{
// Extension DLL one-time initialization
if (!AfxInitExtensionModule(extensionDLL, hInstance))
return false;
} return(true);
} 然后,每次使用 DLL 资源时,你必须改变资源的句柄,使其指向 DLL,并保存 exe 的资源,以便以后正确恢复。void get_DLL_resource(void)
{
/* this function changes the resource handle to that of the DLL */
//这个函数改变资源句柄使其指向DLL
if (resource_counter == 0)
{
save_hInstance = AfxGetResourceHandle();
AfxSetResourceHandle(extensionDLL.hModule);
} resource_counter++;
} 接着你需要其它函数来恢复资源句柄:void reset_DLL_resource(void)
{
/* this function restores the resource handle set by
'get_DLL_resource()' */ if (resource_counter > 0)
resource_counter--; if (resource_counter == 0)
AfxSetResourceHandle(save_hInstance);
} 接下来一点非常重要,只要有可能就必须恢复资源句柄,否则,你将会遇到许多问题。原因是可执行文件必须重画工具条等等,比如说,如果用户移动 DLL 的对话框,如果资源句柄仍然为 DLL 的资源,程序就崩溃了,我发现最好恢复句柄的时机在对话框的 OnInitDialog() 中,这时对话框的模板等已经读出了。
[email protected]
我始终不能 成功!!
有一个是本站的,不过没详细讲解!
我试了一下,不行:(
在dll中定义一个CDialog的派生类(用dll中的dialog template资源)。用__declspec(export)把整个类导出。
down下来看看问题在什么地方?如何解决?
联系:[email protected]