您的位置:程序门 -> vc/mfc -> 进程/线程/dll



为什么从扩展dll中导出对话框时还要定义一个导出函数将对话框导出,这样岂不是不能调用对话框的成员函数了?


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


为什么从扩展dll中导出对话框时还要定义一个导出函数将对话框导出,这样岂不是不能调用对话框的成员函数了?
发表于:2008-01-11 01:15:50 楼主
在csdn上看到一个帖子,http://topic.csdn.net/t/20050627/08/4106589.html,上面介绍说为了能顺利地切换资源,在扩展dll中用一个导出函数将模态对话框显示出来。
void   __declspec(dllexport)   calldlg()      
{      
            afx_manage_state(afxgetstaticmodulestate());       <----      
            dlldlg       dlg;      
            dlg.domodal();      
}  
我的疑惑是,如果在对话框类中定义了多个接口函数,那用这种方法.exe中岂不是没办法调用接口函数了吗?要是能在.exe中直接使用dlldlg       dlg;这样岂不是很方便就可以调用对话框的接口函数,不知我这么理解对不对?请高手指教。    
           
发表于:2008-01-11 08:32:141楼 得分:0
直接   使用dlldlg   dlg   那恐怕就得导出类才可以.
发表于:2008-01-11 11:11:142楼 得分:0
没必要导出函数。如果你导出了类,exe可以直接使用导出类。
发表于:2008-01-11 12:56:503楼 得分:0
在网上的查到的资料介绍说,当想从扩展dll中导出一个类时,最好不要直接导出,而是定义一个接口类,把接口类导出。不知道这种说法对不对。盼望解答。
发表于:2008-01-11 13:11:434楼 得分:0
不对。mfc就提供了直接导出类的功能,afx_ext_class这个前缀在不同编译条件下表示不同含义,如果你静态链接mfc,则这个宏相当于无效,如果是动态链接mfc,则这个宏代表__declspec(dllimport),表示导入类。
在你的exe里直接使用和继承导出的类即可。
发表于:2008-01-11 15:42:475楼 得分:0
是不是只要是扩展dll中导出对话框,无论是模态还是非模态,都不需要切换资源。


快速检索

最新资讯
热门点击