DLL资源与导出接口函数

来灵 2007-10-29 09:58:26
问题描述:
欲在MFC扩展DLL 或 带静态链接的规则DLL中创建一对话框,从该DLL中导出几个(比如三个)不同的接口函数,要求它们可以共享这个对话框,以在其上的控件中(比如文本编辑框)显示在接口函数中定义的数据或者字符。(应用程序调用从该DLL中导出的接口函数)
该如何做呢?
请高手指点,如果方法精妙,可以再加分!!!
...全文
312 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
来灵 2007-11-10
  • 打赏
  • 举报
回复
谢谢诸君,问题已经解决:)
来灵 2007-11-08
  • 打赏
  • 举报
回复
TO jinghao666666 ,“做个记号”——也太概括抽象了吧?详细一些好吧,谢了
来灵 2007-11-08
  • 打赏
  • 举报
回复
我现在DLLMain函数里边Create 一非模式对话框,再通过ShowWindow(SW_SHOW)函数显示这一窗口,然后当应用程序调用DLL时,却总是出现断言错误

在dllinit.cpp文件里

if (!pModuleState->m_bSystem)
{
hInst = AfxGetResourceHandle(); //此行断点
if (::FindResource(hInst, lpszName, lpszType) != NULL)
return hInst;
}

在wincore.cpp中

wndcls.hInstance = AfxGetInstanceHandle();//断点

当我用AfxGetResourceHandle()和AfxSetResourceHandle改变资源模块搜索顺序时,还是出现上边的问题。请问这些什么原因呢?
Torch009 2007-11-06
  • 打赏
  • 举报
回复
做个记号
star119119 2007-11-06
  • 打赏
  • 举报
回复
to star119119 : 不好意思,忘记说这些接口函数的参数是已经规定好的(就只有data*),不能变动。

做一个全局的静态窗口指针。然后 过来这里直接用。
来灵 2007-11-05
  • 打赏
  • 举报
回复
首先抱个谦,再感谢各位大侠的帮助。这几天在忙着做另外一件事情,所以中断了一下……现在回来继续。
star119119 2007-10-31
  • 打赏
  • 举报
回复
func(CWnd*,Data)

公共对话框指针,Data你传入窗口的数据
来灵 2007-10-29
  • 打赏
  • 举报
回复
to star119119 : 不好意思,忘记说这些接口函数的参数是已经规定好的(就只有data*),不能变动。

to superdiablo :的确是啊,使用对话框很麻烦。
显示的时候需要用定义的对话框类对象来调用Domodal函数,而这个函数结束后,对话框也随之被销毁,很难实现共享。DllMain中创建和加载,我对这个不熟悉,能不能讲详细一些呢,谢谢了。(这个也要用Domodal函数吧?)
superdiablo 2007-10-29
  • 打赏
  • 举报
回复
首先,我觉得dll中用对话框不太好吧,不过不确定;-)反正我没用过
如果你非得用,那么在DllMain中create并load这个dialog,在每个接口函数中必要的时候设置该dialog的属性并显示它不就可以达到你的目的了吗?
star119119 2007-10-29
  • 打赏
  • 举报
回复
fun1(cwnd*,data*){}
fun2(cwnd*,data*){}
fun3(cwnd*,data*){}

CWND*窗口句柄。DATA你要显示的数据。

窗口有了句柄,你爱怎么得都随你。

凤矶 2007-10-29
  • 打赏
  • 举报
回复
以在其上的控件中(比如文本编辑框)显示在接口函数中定义的数据或者字符
----------------------------------------------------------
可以做。三个接口同时控制一个实例化的窗口,我想有两种办法
1。一些共同使用的数据可以做成static的。
2。还可以在Dll建一个对话框的全局变量。
wjkgz 2007-10-29
  • 打赏
  • 举报
回复
或者参考这个帖子
http://topic.csdn.net/t/20030505/19/1742559.html
wjkgz 2007-10-29
  • 打赏
  • 举报
回复
在dll中使用Dialog,因为设计到资源的问题,默认的是到exe的资源(hInstance)中调用这个Dialog,那肯定是错误的,
需要在Dll的入口处,把dll的资源保存,在需要的时候进行替换。

这里有个例子,讲的比较的详细
http://www.vckbase.com/document/viewdoc/?id=1481

15,471

社区成员

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

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