如果MFC的软件中 使用DataGrid控件后,在别的电脑上不能运行行,需要拷贝一个 MSDATGRD.ocx
和msstdfmt.dll  文件在软件的目录中,并写一个批处理文件
reg.dat
文件内容如下
regsvr32 msdatgrd.ocx
regsvr32 msstdfmt.dll

详细介绍如何在MFC中使用DataGrid控件实现数据绑定。

1:新建一个MFC应用程序:DataGridDemo

  

2:选择基于对话框,然后一直下一步,直到完成。

  

3:为了简单,清除多于的东西。

  

4:现在要插入一个DataGrid控件,前提是你已经将控件添加到工具箱了。

  VS2010默认没有这个控件。添加办法如下:

  在工具栏空白处右键,选中选择项,弹出一个选择工具项的对话框,选中“COM组件”选 项卡

  点击“选择”按钮,因为我是win7 64位的系统,所以路径为SysWOW64,如果为32位请找system32。如下图:

  

5:选择MSDATGRD.OCX。选择后,确定。工具箱中应该有了DataGrid控件了。

  

6:现在要注册这个组件。

  这一步非常重要!

  需要下载文件:MSDATGRD.OCX

  下载地址:http://download.csdn.net/detail/shijiufeng/3198530

  注册方法:命令行  regsvr32.exe C:\Windows\System32\MSDATGRD.OCX

  注意:如果出现"can not initialize data binding“的错误,则还需要注册MSSTDFMT.DLL文件

7:成功注册后现在就来添加DataGrid控件了。

在DataGridDemo界面右键选择:"插入Acitve控件"然后选择DataGrid,或者直接从工具箱上拖上来。

  

8:将DataGrid的ID和Caption的属性修改为IDC_DATAGRID_TEST  如图:

  

  9:关键的一步:在解决方案上右键,添加-类-ActiveX控件中的MFC类

  

10:点击“添加”按钮后在选择“文件”找到刚才的控件的位置,这里选择Column和Columns两个接口,其它的也可以选择,但是不要选择IDataGrid接口:

  因为IDataGrid接口选择后生成的类CDataGrid继承的是COleDispatchDriver类,我们需要的是CDataGrid继承CWnd类。

  至于类CDataGrid的文件CDataGrid.h我们想其它办法解决。

  

11:我们从另外的地方将DataGrid.h、DataGrid.cpp复制到项目中。

其它 的设置如在DataGridDemoDlg.h : 头文件中添加引用与代码

 // DataGridDemoDlg.h : 头文件#include "DataGrid.h"#import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF","adoEOF")CDataGrid m_dbTest;//数据库连接与数据集ConnectionPtr m_pConnection;_RecordsetPtr m_pRecordset;

  在 DataGridDemoDlg.cpp : 实现文件中添加引用与代码

#include "CColumn.h"
#include "CColumns0.h"
#include "DataGrid.h"// TODO: 在此添加额外的初始化代码
//------初始化数据库------//
//AfxOleInit();
m_pConnection.CreateInstance("ADODB.Connection");
//------------------------//
try
{m_pConnection->ConnectionTimeout = 8;m_pConnection->PutCursorLocation(adUseClient);m_pConnection->Open("Provider=Microsoft.ACE.OLEDB.12.0;Data     Source=D:\\DataBase\\LoginDemo.accdb;","","",adModeUnknown);
}
catch(_com_error e)
{AfxMessageBox("数据库连接失败");return FALSE;
}
//---------初始化记录集对象---------------//
try
{m_pRecordset.CreateInstance("ADODB.Recordset");
//打开记录集m_pRecordset->Open("SELECT * FROM BALANCE",_variant_t((IDispatch *)m_pConnection,true),adOpenDynamic,adLockPessimistic,adCmdText);
}
catch(_com_error e)///捕捉异常
{CString temp;temp.Format("aaa连接数据库错误信息:%s",e.ErrorMessage());AfxMessageBox(temp);return 0;
}m_dbTest.SetRefDataSource(NULL); m_dbTest.SetRefDataSource((LPUNKNOWN)m_pRecordset);m_dbTest.Refresh();//另外要注意如下方法内红色部分。void CData_Disp2Dlg::DoDataExchange(CDataExchange* pDX)
{CDialogEx::DoDataExchange(pDX);DDX_Control(pDX,IDC_DATAGRID_TEST,m_dbTest);
}

最后结果如下:

12:可能出错的地方:

  m_dbTest.SetRefDataSource(NULL); 
  m_dbTest.SetRefDataSource((LPUNKNOWN)m_pRecordset);

  如果用生成的CDataGrid.h,里面的方法为putref_DataSource

  DDX_Control(pDX,IDC_DATAGRID_TEST,m_dbTest); 这句话可能也会报错,

  因为VS2010生成的类CDataGrid继承的是COleDispatchDriver类,我们需要的是CDataGrid继承CWnd类。

所以最好还是用其它地方的DataGrid.h和DataGrid.cpp文件来替换Vs2010生成的。

最后提供这个例子的代码下载:

在我的下载资源里面:http://download.csdn.net/detail/fddqfddq/4505306

VS2010环境下MFC使用DataGrid绑定数据源相关推荐

  1. VS2010环境下MFC使用DataGrid绑定数据源以及控件注册问题解决

    http://www.cnblogs.com/panweishadow/archive/2013/07/25/3214629.html 参考:http://blog.csdn.net/fddqfddq ...

  2. vs2008环境下MFC对注册表的读写操作

    最近修改一个在vs2008环境下的MFC project,其中用到对注册表的读写操作,虽然在网上down了不少代码也查阅了不少文章,但运行始终存在不少问题,现把我运行成功的代码分享出来,希望对有需要的 ...

  3. VS2010环境下用c++语言在MFC对话框程序中连接及操作Mysql 数据库

    小编近来由于工作需要,需要折腾一下MySql据库, 由于以前用的数据库不是 MySql, 也不是在 VS2010 , 更不是在 MFC 中连接数据库.所以还颇费了一番周折才实现了把数据插入到数据库表格 ...

  4. Win7+VS2010环境下CEGUI 0.8.4编译过程详解

    转载▼ 1. 在http://cegui.org.uk/download 下载CEGUI源码包 cegui-0.8.4 以及CEGUI依赖库(Windows / Apple OS X only) ce ...

  5. mfc通过ado链接oracle,VS2013环境下MFC通过ADO连接Oracle数据库 四步搞定

    这两天需要做有关MFC连接Oracle的项目,上网搜了老半天,东拼西凑,终于搞通了MFC下ADO方式连接Oracle的程序. 下面就按我新建的项目来进行一下说明(项目名称:adooracle) 第一步 ...

  6. VS2010 环境下链接 IVF2011 编译的 Fortran 静态库问题

    已知: 主程序的所有C++源代码         静态库的所有Fortran源代码 工具: Compiler: MS Visual C++ 2010(x86)         Compiler: In ...

  7. 在VS2013环境下MFC学习:给对话框添加背景图片

    步骤1 添加资源 先右击工程名.rc(我的是PlaneDiag_Demo_MFC),再点击"添加资源" 步骤2 导入BMP图像 进入"添加资源"界面后,点击资源 ...

  8. WPF DataGrid 绑定DataSet数据 自动生成行号

    1.绑定数据:dataGrid1.ItemsSource = dataSet.Tables[0].DefaultView; 注意:在创建DataGrid 时可以通过AutoGenerateColumn ...

  9. IIS环境下如何批量添加、修改、删除绑定的域名

    IIS环境下如何批量添加和修改所绑定域名 1.关闭IISADMIN服务和W3SVC服务,可以从服务里面关闭,也可以直接执行命令:net stop iisadmin /y: 2.打开"C:\W ...

最新文章

  1. 快速排序原理及代码模板
  2. Antenna Placement--POJ 3020
  3. 数据结构乐智教学百度云_网易云课堂 - 我的职业课堂
  4. 通过pipeline实现jenkins的ci/cd功能
  5. POI的入门:创建单元格设置数据
  6. lua 元表/元方法
  7. Python 第三方模块之 psutil - 获取系统运行的进程和系统利用率信息
  8. 全国计算机等级内容,全国计算机等级内容
  9. AVL平衡树的插入例程
  10. Mac和Linux下测试端口是否存活一法[转载]
  11. 红外条码扫描器的另类使用C#版
  12. python数据库连接池_Python数据库连接池 -组件 DBUtils
  13. 总结一些常用的C语言学习网站
  14. Vivado远程编辑与下载
  15. 2022 下半年一定不要裸辞!
  16. Running pipenv gives TypeError: 'module' object is not callable
  17. 硬货专栏 |WebRTC SDP 详解和剖析
  18. 淘宝/天猫图片识别商品接口,1688图片识别商品API接口
  19. 计算机小白如何真正入门计算机?
  20. vue 关于清除浏览器全部cookie的问题及解决方法(绝对有效)

热门文章

  1. R语言forestmodel包使用教程
  2. oracle 数据立方_大数据之数据仓库分层
  3. Spring 数据访问那些事儿(二)Spring + JdbcTemplate
  4. 数学之路(2)-数据分析-R基础(4)
  5. delete mysql 大表_无语了,直到今天,我才揪出MySQL磁盘消耗迅猛的“真凶”!
  6. rust实战入门到进阶(1)
  7. (视频+图文)机器学习入门系列-第3章 逻辑回归
  8. 让算法工程师破防的瞬间
  9. 墙裂推荐!顶级赛事CCF BDCI即将开赛!
  10. 【深度学习】深度学习手写代码汇总(建议收藏,面试用)