还没好好的学习一下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