atl使用mfc扩展dll

zzf2004 2007-07-01 03:36:44
在atl使用mfc扩张dll,对话框无法显示啊。急啊,大侠救命啊。在线等!
...全文
358 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
AgedBOY 2007-07-09
  • 打赏
  • 举报
回复
楼上的回答里面,提到“AFX_MANAGE_STATE(AfxGetStaticModuleState( ))”的,是80%正解。楼主应该采纳。在你的ATL程序里,准备“Create”或者“DoModal”的前面先加上这句!

而剩下的20%是这样,MFC扩展DLL的向导生成代码的注释里明确说了,当MFC扩展DLL的调用者不是MFC EXE,而是MFC DLL时(你的支持MFC的ATL组件相当于MFC DLL),必须将“new CDynLinkLibrary(newlistviewDLL);”这句从DllMain里拿掉。然后单独做一个引出函数如:

void AFX_EXT_API InitMyListViewModule()
{
new CDynLinkLibrary(newlistviewDLL);
}

然后在你的MFC DLL的CWinApp::InitInstance里手动调用这个函数。至此,MFC扩展DLL的链式资源才算是彻底初始化完毕。你的对话框若是再弹不出来,就请你检讨一下最近有没有做什么亏心事了……
Big_Stone 2007-07-05
  • 打赏
  • 举报
回复
关键是你得资源入口没有设置到DLL里边,这个和是什么DLL没有关系,MFC有个宏 AFX_MANAGE_STATE(AfxGetStaticModuleState( ));要不你就用API好象是什么SetResourc...什么都,参数需要你得DLL句柄。
vcPlayer 2007-07-05
  • 打赏
  • 举报
回复
选择了支持mfc没有? 选了。

CWinApp对象有没有? 有

=========================================
笑死我了,不过关注一下。
你的扩展DLL一般是导出资源或类什么的。导出一个类的话,应该用一个超类(全用虚函数,类似于接口)来实现。
Big_Stone 2007-07-05
  • 打赏
  • 举报
回复
关键是你得资源入口没有设置到DLL里边,这个和是什么DLL没有关系,MFC有个宏 AFX_MANAGE_STATE(AfxGetStaticModuleState( ));要不你就用API好象是什么SetResourc...什么都,参数需要你得DLL句柄。

没有设置资源载入的入口点,你的对话框模版就找不到,当然你的对话框就显示不出来了。
xiongwei_1101 2007-07-05
  • 打赏
  • 举报
回复
是声明这个对话框类一个对象在DoModal()
xiongwei_1101 2007-07-05
  • 打赏
  • 举报
回复
直接在资源中NEW一个Dialog,然后给它创建一个DLG类,在你的借口函数里引进这个类就OK啦!声明一个对话框的类,DoModal()就可以显示啦,我最近也刚做完这方面的一个控件,需要的话我可以发给你我做的参考一下,不过要给我点分哦!
  • 打赏
  • 举报
回复
你的扩展DLL一般是导出资源或类什么的。导出一个类的话,应该用一个超类(全用虚函数,类似于接口)来实现。
================
你怎么知道没有导出全局函数什么的直接使用的东西?
难道非要导出class么?谁规定的?
zzf2004 2007-07-01
  • 打赏
  • 举报
回复
老大救命啊。
zzf2004 2007-07-01
  • 打赏
  • 举报
回复
  • 打赏
  • 举报
回复
CWinApp对象有没有?
zzf2004 2007-07-01
  • 打赏
  • 举报
回复
选了。
  • 打赏
  • 举报
回复
因为MFC扩展DLL需要一个CWinApp对象
而你的atl工程选择了支持mfc没有?

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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