还没好好的学习一下MFC,之前学过一段时间的QT,现在发现MFC与QT其实很相似,都很详细的提供了界面库,可能在具体的细节方面有不同吧,等着去发现。
一、创建DLL文件
1、新建工程文件如下:
2、选择regular DLL using shared MFC DLL
3、切换到Resource框,在Dialog上右击Insert Dialog,并且用View下面ClassWizard创建这个Dialog的类Mydialog,生成文件MyDlg.cpp和MyDlg.h
自己的理解:mfcDll.cpp相当于是主文件,程序运行时先从这里开始,MyDlg.cpp是针对MyDlg对话框的类文件。
4、在Dialog界面上面添加EditBox和Button,然后右击ClassWizard,在Member Variables里面为这两个对象添加对应的变量值,以便在程序中调用这些控件
5、双击button按钮,就可以为button添加click信号的函数
void MyDlg::OnButton1()
{
// TODO: Add your control notification handler code here
m_MyEdit.SetWindowText("this is dll Dlg");
}
6、最关键是在mfcDll.cpp中添加入下程序,mfcDll.cpp相当于主程序(启动程序时先运行),而MyDlg.cpp是对话框对应的类文件
extern "C" __declspec(dllexport) void ShowDlg(void)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
// normal function body here
MyDlg dlg;
dlg.DoModal();
}
7、编译之后生成
二、使用DLL文件
1、将mfcDll.dll文件放入测试文件dllTest文件夹下,这里我并没有添加.h文件,也可以成功编译,不知为什么。
2、调用mfcDll.dll文件中的函数
在dllTest对话框中添加按钮“打开DLL测试框”,并为这个按钮添加如下代码:
void CDllTestDlg::OnButton1()
{
// TODO: Add your control notification handler code here
typedef void (*pFunction)(void);
HINSTANCE hLibrary; //DLL句柄
hLibrary = LoadLibrary("mfcDll.dll");
if (hLibrary == NULL) MessageBox("DLL加载失败");
pFunction pShowDlg = (pFunction)GetProcAddress(hLibrary,"ShowDlg");
if (NULL==pShowDlg) MessageBox("DLL中不存在指定的函数");
else pShowDlg();
}
以上便完成了对DLL文件的调用。
程序下载地址:http://download.csdn.net/detail/luckywang1103/6357693