创建一个MFC动态链接库

        还没好好的学习一下MFC,之前学过一段时间的QT,现在发现MFC与QT其实很相似,都很详细的提供了界面库,可能在具体的细节方面有不同吧,等着去发现。

一、创建DLL文件

1、新建工程文件如下:

2、选择regular DLL using shared MFC DLL

创建一个MFC动态链接库_第1张图片

3、切换到Resource框,在Dialog上右击Insert Dialog,并且用View下面ClassWizard创建这个Dialog的类Mydialog,生成文件MyDlg.cpp和MyDlg.h

自己的理解:mfcDll.cpp相当于是主文件,程序运行时先从这里开始,MyDlg.cpp是针对MyDlg对话框的类文件。

创建一个MFC动态链接库_第2张图片                         创建一个MFC动态链接库_第3张图片

4、在Dialog界面上面添加EditBox和Button,然后右击ClassWizard,在Member Variables里面为这两个对象添加对应的变量值,以便在程序中调用这些控件

创建一个MFC动态链接库_第4张图片

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




你可能感兴趣的:(Qt_MFC_C++)