创建一个MFC动态链接库

        还没好好的学习一下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.youkuaiyun.com/detail/luckywang1103/6357693




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

luckywang1103

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值