VS2010 Win7 64位 C++ MFC DataGrid绑定实例

转载 2013年12月02日 13:57:43

转自:http://blog.csdn.net/fddqfddq/article/details/7874706

纠结了几天的DataGrid绑定问题今天终于能跑出来了。我下载别人的代码,都可以跑,

因为我是用VS2010 Win7 64位 的环境来学习 C++ MFC的,网上找的资料大都是VC6.0正面的,

我下载的DataGrid例子都可以跑出来,一到我自己写就出错了。

后来我按照如下方法就可以了。文章最后有实例下载

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


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



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



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

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

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

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



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



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

请看我的另一篇文章:http://blog.csdn.net/fddqfddq/article/details/7866288

里面介绍了如何注册。

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

参考文章:http://blog.csdn.net/harvic880925/article/details/7674425


相关文章推荐

VS2010 Win7 64位 C++ MFC DataGrid绑定实例

纠结了几天的DataGrid绑定问题今天终于能跑出来了。我下载别人的代码,都可以跑, 因为我是用VS2010 Win7 64位 的环境来学习 C++ MFC的,网上找的资料大都是VC6.0正面的, ...
  • fddqfddq
  • fddqfddq
  • 2012年08月16日 20:52
  • 11467

开始学习opengl,整理一下vs2010配置opengl的方法(WIN7 64位)

最近的项目忙完了,为了以后的开始着手学习
  • wyg2004
  • wyg2004
  • 2014年06月22日 17:31
  • 620

Win7 64位系统,使用(IME)模式VS2010 编写 和 安装 输入法 教程(1)

首先感谢: http://blog.csdn.net/shuilan0066/article/details/6884483输入法 编程分析 http://blog.csdn.net/mspiny...
  • fakine
  • fakine
  • 2016年09月09日 16:08
  • 2037

win7 64位系统下用vs2010 配置opencv 2.4.7的全局方法

将opencv安装目录下的\build\x64\vc10\bin的路径加入环境变量(例如D:\Program Files\vs2010\opencv247\opencv\build\x64\vc10\...
  • denlux
  • denlux
  • 2014年01月20日 17:12
  • 507

Win7 64位 的VS2010 ASP.NET连接 Oracle 11g

之前一直用winform 开发Oracle 版的

Win7 64位系统安装OpenCV2.3,并在VS2010中配置(下)

4、创建VS2010项目: 没有VS2010,可以点击下面链接下载: (1)Visual Studio 2010 Professional Edition 官方下载 (2)迅雷7下载链接,将下面...

win7 64位环境下VS2010编译使用boost_1_62_0

参考:http://jingyan.baidu.com/article/dca1fa6f768d76f1a4405289.html 从boost官网(http://www.boost.org/)下...
  • Erin_HH
  • Erin_HH
  • 2016年12月09日 10:25
  • 1425

win7 64位下VS2010和opencv 2.4.11的配置

先贴上参考文献: 1. http://my.phirobot.com/blog/2014-02-opencv_configuration_in_vs.html 2. http://blog.csd...
  • hnyzwtf
  • hnyzwtf
  • 2015年06月07日 20:30
  • 11083

win7 64位环境下VS2010配置OpenCV 2.3.1

本人用的是win764位,网上有很多此类教程,但是看完总是配置出了一些问题,经历了好多次失败。自己配置成功后,现在总结一下,结合网上相关资料,方便大家。据说很多人学openCV都死在配置上,这篇菜鸟级...

Win7 64位系统,VS2010环境下编译cuda-convnet指南

Win7 64位系统,VS2010环境下编译cuda-convnet指南 注意: 1. 本文给出的方法的最低要求为win7 64位系统和vs2010,其他需要装的软件/第三方库都在 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:VS2010 Win7 64位 C++ MFC DataGrid绑定实例
举报原因:
原因补充:

(最多只允许输入30个字)