积木

No sub title

  C++博客 :: 首页 :: 联系 :: 聚合  :: 管理
  140 Posts :: 1 Stories :: 11 Comments :: 0 Trackbacks

常用链接

留言簿(1)

我参与的团队

搜索

  •  

最新评论

阅读排行榜

评论排行榜

原文转载自:http://blog.csdn.net/callbackfunc/article/details/7233894

本例通过新建一个MFC规则DLL并新建一个MFC对话框程序调用它,演示MFC规则DLL的创建及调用。(VS2010环境下实例代码亲测可编译通过)

一、MFC规则DLL项目

1.创建MFC规则DLL

2.新建global.cpp(新建此文件没有特殊意义,仅用于单独添加创建并显示对话框的代码)并添加以下代码:

  1. # include "stdafx.h"  
  2. # include "dlldialog.h"  
  3. //定义输出库函数,以被MFC程序调用  
  4. extern "C" __declspec(dllexportvoid ShowDlg(void)  
  5. {  
  6.     //添加AFX_MANAGE_STATE宏,进行DLL模块状态资源的切换  
  7.     AFX_MANAGE_STATE(AfxGetStaticModuleState());  
  8.     //创建DLL对话框  
  9.     dlldialog dllDialog;  
  10.     dllDialog.DoModal();  
  11. }  

3.添加了一个对话框资源,并向其加入按钮一个

4.双击3创建的DLL对话框资源,向该对话框添加dlldialog类

5.双击3对话框中创建的按钮,为该按钮添加代码:

  1. //添加DLL内部对话框中按钮的事件处理程序代码  
  2. void dlldialog::OnBnClickedButton1()  
  3. {  
  4.     MessageBox(_T("调用DLL内部对话框成功!"));  
  5. }  

6.向dlldialog.h添加了一个头文件,以解决找不到对话框资源的问题

  1. # include "resource.h"//务必手动添加此条语句!否则在VC++2010环境下编译会报“IDD_DIALOG1未定义的标识符”的错  

7.生成mfcdll

二、创建callmfcdll MFC对话框程序

1.创建MFC对话框程序以用于调用mfcdll生成的dll

2.添加了一个对话框资源,并向其加入按钮一个

3.双击1对话框中创建的按钮,以动态显式调用生成的dll文件

  1. void CcallmfcdllDlg::OnBnClickedButton1()  
  2. {  
  3.     //声明函数指针  
  4.     typedef void (*lpCall)(void);  
  5.     //创建dll句柄  
  6.     HINSTANCE hDll;  
  7.     //装载dll  
  8.     hDll = LoadLibrary(_T("mfcdll.dll"));  
  9.     if(NULL==hDll)  
  10.     {  
  11.         AfxMessageBox(_T("DLL加载失败!"));  
  12.     }  
  13.     //检索指定DLL中的输出库函数地址  
  14.     lpCall pShowDlg=(lpCall)GetProcAddress(hDll,"ShowDlg");  
  15.     if(NULL==pShowDlg)  
  16.     {  
  17.         AfxMessageBox(_T("DLL内部函数调用失败!"));  
  18.     }  
  19.     //创建DLL对话框  
  20.     pShowDlg();  
  21. }  

4.生成callmfcdll

三、测试运行

将mfcdll项目中编译生成的mfcdll.dll放在callmfcdll项目中生成MFC程序的Debug文件夹下,双击打开生成的应用程序并点击其对话框中间位置的按钮,即发现调用成功

附:已将该项目的整套实例代码打包上传至本人的资源频道(下载地址为:http://download.csdn.net/detail/callbackfunc/4032396),用户可自行下载。

posted on 2014-11-14 10:02 Jacc.Kim 阅读(8758) 评论(0)  编辑 收藏 引用 所属分类: VC / C++

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理