http://blog.sina.com.cn/s/blog_4b2169480100d196.html
vc6.0 环境下,将MFC Regular DLL封装窗体在里面。
1. File->Projects->MFC AppWizard(dll)->输入RegularDLL;
2. 选择Regular DLL using shared MFC DLL 和 Yes,please
3. 选择ResourceView视图,再RegularDLL resource目录上右键单击->Insert-> Dialog->New
4. 新窗体删除OK和Cancel,新建一个按钮,窗体的ID改为:IDD_DLL_DIALOG,按钮的ID改为:IDC_HELLO_BUTTON
5. 双击新建的按钮->ok创建新类->类名起名为CDllDialog->双击按钮,输入:
MessageBox("此处调用数据库封装","陈梵封装");
6.最最重要的一步×××××××××××××××××××××××
project->Settings 在General选项中选择Use MFC in a Static Library
7.File->New->C++ Source File->global.cpp,内容如下:
#include "StdAfx.h" #include "DllDialog.h" extern "C" __declspec(dllexport) void ShowDlg(void) { CDllDialog dllDialog; dllDialog.DoModal(); }
8.在StdAfx.h文件中添加#include "resource.h"
9. 打开Resource.h, 内容如下:
//{{NO_DEPENDENCIES}} // Microsoft Developer Studio generated include file. // Used by RegularDll.rc // #define IDD_DLL_DIALOG 1000 #define IDC_HELLO_BUTTON 1000 // Next default values for new objects // //#ifdef APSTUDIO_INVOKED //#ifndef APSTUDIO_READONLY_SYMBOLS //#define _APS_NEXT_RESOURCE_VALUE 1001 //#define _APS_NEXT_COMMAND_VALUE 32771 //#define _APS_NEXT_CONTROL_VALUE 1001 //#define _APS_NEXT_SYMED_VALUE 1000 //#endif //#endif接下来建立一个调用DLL的工程,按钮中加入以下代码就可以调用了。
void CMFCRegularCallDlg::OnButton1() { typedef void (*lpFun)(void); HINSTANCE hDll; //DLL句柄 hDll = LoadLibrary("D:\\CPPPrimerStudy\\DLLStudy\\RegularDLL\\Debug\\RegularDll.dll"); if (NULL==hDll) { MessageBox("RegularDll.dll未找到"); } lpFun addFun; //函数指针 lpFun pShowDlg = (lpFun)GetProcAddress(hDll,"ShowDlg"); if (NULL==pShowDlg) { MessageBox("ShowDlg函数没有在DLL中发现"); } pShowDlg(); FreeLibrary(hDll); }