| 一步一步实现MFC扩展DLL中导出类和对话框
以上完成建立扩展DLL的框架,下面接着建立输出类: class CDogClass : public CObject{private : int m_nNum; CString m_sData;public: int ShowDlg(); void Init(); CDogClass(); virtual ~CDogClass(); void SetNum(int num) { m_nNum = num;}; int GetNum() { return m_nNum; }; void SetData(CString data) { m_sData = data;}; CString GetData() { return m_sData; };};DogClass.cpp实现文件:CDogClass::CDogClass(){ Init();}CDogClass::~CDogClass(){}void CDogClass::Init(){ m_nNum = 0; m_sData = "";} 编辑DogClass.h头文件修改下面一行;class AFX_EXT_CLASS CDogClass : public CObject 以上完成类的建立,下面建立输出对话框; CDlgDog dlg;dlg.m_nNum = GetNum();dlg.m_sData = GetData();if (IDOK==dlg.DoModal()){ SetNum(dlg.m_nNum); SetData(dlg.m_sData); return 1;}return 0;然后编译Dll,会发现有几个错误,不用怕,好解决的,首先,去掉DlgDog.cpp中的 #include “\ add additional includes here”这一行;其次,在stdax.h中加入include "resource.h",再编译,OK。 二、建立DLL 测试程序 步骤: 新建一个基于对话框的MFC应用程序,添加一按钮IDC_BUTTON1,并在按钮事件中添加如如下代码: void CTestExportClassDlg::OnButton1(){ CDogClass dog; dog.Init(); if (dog.ShowDlg()!=0) { CString str; str.Format("Num is: %d Data is: %s" dog.GetNum(), dog.GetData()); AfxMessageBox(str); }}从ExportClass文件目录拷贝DogClass.h和ExportClass.lib文件到测试程序目录下;在TestExportClassDlg.cpp中加入#include “DogClass.h”行;往连接程序的导入库中添加ExportClass.lib,在VS的Project->Settings下的Setting For选择All Configuration.,然后在下面的页面Object/Library Conttrol中加入ExportClass.lib; 别忘了把ExportClass.dll复制到系统目录或当前应用程序目录;然后编译就OK了。 QQ:36201365 e-mail:ldh5118@sohu.com |