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

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

http://www.cnblogs.com/panweishadow/archive/2013/07/25/3214629.html

 

参考:http://blog.csdn.net/fddqfddq/article/details/7874706

详细介绍如何在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

 

------------------------------

我按照如上方法操作之后 在添加控件的时候弹出对话框 "能实例化控件******,因为这需要设计时授权"

解决方法:摘自http://blog.csdn.net/drbinzhao/article/details/6667986

 

VS2008向工具箱中添加串口控件,步骤为工具——选择工具箱项,在出现的选择工具箱项窗体中选择COM组件勾选Microsoft Communications Control, version 6.0,点击确定,你的工具箱中就会出现一个小电话标识的控件,这个控件就是串口控件,
如果是初次使用,可能会遇到一个问题“未能实例化ActiveX控件 因为这需要设计时授权”。

控件时出现“未能实例化控件******,因为这需要设计时授权”,请拿 出VS.NET 2003的安装盘,在 \VisualStudio2003Inst\Extras\VB6 Controls目录下应该能找到vb6controls.reg这个文件,双击它,把这个信息 添加到注册表中去,就可以了

没有设计期授权,所以无法在设计器中使用,你需要一个授权文件。
把下面的文本保存为VB6Controls.reg文件,包含所有 VB 6.0 控件设计时的授权信息。你可以通过 RegEdit.exe 将 .reg 中的控件注册信息添加到你的注册表中,从而注册这些控件。

如果你在打开对话框时弹出 "The ActiveX control "Grid Control" could not be instantiated because it requires a design-time license"这个对话框时,在VC安装盘中找到vb6controls.reg,双击导入注册表就OK了,没有这个文件的可以COPY下面的代码另存 为*.reg,导入注册表就行了

REGEDIT
HKEY_CLASSES_ROOT\Licenses = Licensing: Copying the keys may be a violation of established copyrights.

// Masked Edit Control 6.0 license key
HKEY_CLASSES_ROOT\Licenses\BC96F860-9928-11cf-8AFA-00AA00C00905 = mmimfflflmqmlfffrlnmofhfkgrlmmfmqkqj

// Chart Control 6.0 (OLEDB) license key
HKEY_CLASSES_ROOT\Licenses\12B142A4-BD51-11d1-8C08-0000F8754DA1 = aadhgafabafajhchnbchehfambfbbachmfmb

// Common Dialog Control 6.0 license key
HKEY_CLASSES_ROOT\Licenses\4D553650-6ABE-11cf-8ADB-00AA00C00905 = gfjmrfkfifkmkfffrlmmgmhmnlulkmfmqkqj

// ADO Data Control 6.0 (OLEDB) license key
HKEY_CLASSES_ROOT\Licenses\C4145310-469C-11d1-B182-00A0C922E820 = konhqhioohihphkouimonhqhvnwiqhhhnjti

// Common Controls-3 6.0 license key
HKEY_CLASSES_ROOT\Licenses\38911DA0-E448-11D0-84A3-00DD01104159 = mcpckchcdchjcjcclidcgcgchdqdcjhcojpd

// Windows Common Controls-2 5.0 (SP2) license key
HKEY_CLASSES_ROOT\Licenses\9E799BF1-8817-11cf-958F-0020AFC28C3B = uqpqnqkjujkjjjjqwktjrjkjtkupsjnjtoun

// Windows Common Controls license key
HKEY_CLASSES_ROOT\Licenses\57CBF9E0-6AA7-11cf-8ADB-00AA00C00905 = aahakhchghkhfhaamghhbhbhkbpgfhahlfle

// Data Bound Grid Control 5.0(SP3) license key
HKEY_CLASSES_ROOT\Licenses\556C75F1-EFBC-11CF-B9F3-00A0247033C4 = xybiedobrqsprbijaegcbislrsiucfjdhisl

// Data Bound List Controls 6.0 license key
HKEY_CLASSES_ROOT\Licenses\096EFC40-6ABF-11cf-850C-08002B30345D = knsgigmnmngnmnigthmgpninrmumhgkgrlrk

// Internet Transfer Control 6.0 license key
HKEY_CLASSES_ROOT\Licenses\78E1BDD1-9941-11cf-9756-00AA00C00908 = yjrjvqkjlqqjnqkjvprqsjnjvkuknjpjtoun

// Multimedia Control 6.0 license key
HKEY_CLASSES_ROOT\Licenses\B1EFCCF0-6AC1-11cf-8ADB-00AA00C00905 = qqkjvqpqmqjjpqjjvpqqkqmqvkypoqjquoun

// Chart Control 6.0 license key
HKEY_CLASSES_ROOT\Licenses\7C35CA30-D112-11cf-8E72-00A0C90F26F8 = whmhmhohmhiorhkouimhihihwiwinhlosmsl

// Windows Common Controls-2 6.0 license key
HKEY_CLASSES_ROOT\Licenses\4F86BADF-9F77-11d1-B1B7-0000F8753F5D = iplpwpnippopupiivjrioppisjsjlpiiokuj

// Windows Common Controls 6.0 license key
HKEY_CLASSES_ROOT\Licenses\ED4B87C4-9F76-11d1-8BF7-0000F8754DA1 = knlggnmntgggrninthpgmnngrhqhnnjnslsh

// Comm Control 6.0 license key
HKEY_CLASSES_ROOT\Licenses\4250E830-6AC2-11cf-8ADB-00AA00C00905 = kjljvjjjoquqmjjjvpqqkqmqykypoqjquoun

// DataGrid Control 6.0 (OLEDB) license key
HKEY_CLASSES_ROOT\Licenses\CDE57A55-8B86-11D0-b3C6-00A0C90AEA82 = ekpkhddkjkekpdjkqemkfkldoeoefkfdjfqe

// DataList Control 6.0 (OLEDB) license key
HKEY_CLASSES_ROOT\Licenses\A133F000-CCB0-11d0-A316-00AA00688B10 = cibbcimbpihbbbbbnhdbeidiocmcbbdbgdoc

// DBWin license key
HKEY_CLASSES_ROOT\Licenses\D015B071-D2ED-11d0-A31A-00AA00688B10 = gjdcfjpcmjicjcdcoihcechjlioiccechepd

// MSDBRPT license key
HKEY_CLASSES_ROOT\Licenses\9DF1A470-BA8E-11D0-849C-00A0C90DC8A9 = cchcqjejhcgcqcfjpdfcdjkckiqikchcojpd

// FlexGrid Control 6.0 license key
HKEY_CLASSES_ROOT\Licenses\72E67120-5959-11cf-91F6-C2863C385E30 = ibcbbbebqbdbciebmcobmbhifcmciibblgmf

// MAPI Controls 6.0 license key
HKEY_CLASSES_ROOT\Licenses\899B3E80-6AC6-11cf-8ADB-00AA00C00905 = wjsjjjlqmjpjrjjjvpqqkqmqukypoqjquoun

// MSRDO 2.0 license key
HKEY_CLASSES_ROOT\Licenses\B1692F60-23B0-11D0-8E95-00A0C90F26F8 = mjjjccncgjijrcfjpdfjfcejpdkdkcgjojpd

// RemoteData Control 6.0 license key
HKEY_CLASSES_ROOT\Licenses\43478d75-78e0-11cf-8e78-00a0d100038e = imshohohphlmnhimuinmphmmuiminhlmsmsl

// Windowless Controls 6.0 license key
HKEY_CLASSES_ROOT\Licenses\80E80EF0-DBBE-11D0-BCE2-00A0C90DCA10 = qijimitpmpnpxplpvjnikpkpqoxjmpkpoivj

// PictureClip Control 6.0 license key
HKEY_CLASSES_ROOT\Licenses\6FB38640-6AC7-11cf-8ADB-00AA00C00905 = gdjkokgdldikhdddpjkkekgknesjikdkoioh

// Rich TextBox Control 6.0 license key
HKEY_CLASSES_ROOT\Licenses\DC4D7920-6AC8-11cf-8ADB-00AA00C00905 = iokouhloohrojhhhtnooiokomiwnmohosmsl

// Sheridan Tab Control license key
HKEY_CLASSES_ROOT\Licenses\190B7910-992A-11cf-8AFA-00AA00C00905 = gclclcejjcmjdcccoikjlcecoioijjcjnhng

// SysInfo Control 6.0 license key
HKEY_CLASSES_ROOT\Licenses\E32E2733-1BC5-11d0-B8C3-00A0C90DCA10 = kmhfimlflmmfpffmsgfmhmimngtghmoflhsg

// Winsock Control 6.0 license key
HKEY_CLASSES_ROOT\Licenses\2c49f800-c2dd-11cf-9ad6-0080c7e7b78d = mlrljgrlhltlngjlthrligklpkrhllglqlrk


关于 过时的 蛋疼的 MFC + DataGrid 显示设置 由于MFC 已经过时了。。DataGrid的帮助文档 找不到。。。查了很多资料没见到有对于C++ MFC DataGrid的 API (本人比较蠢。。在MSDN上居然找不到,也许是关键词错了,望懂的人能帮忙指导一下 (  0  .  0 )) 一下是自己的一些小总结: 1、 DataGrid 控件自身就支持滚动查看数据,所以别再跟着C# 啥的。。设置参数的。。PS :自带滚动,但不带上 阅读详情

相关推荐

MFC 使用GridCtrl表格控件

MFC 使用GridCtrl表格控件

u011269801的专栏 2618

DataGridMFC实现 基于MFC

使用ActiveX插件实现表格的效果,使用自定义类实现;基于MFCDatagrid的实现。

MFC DataGrid控件用法详解

MFC中的DataGrid控件的用法进行了一些总结

vb.net中datagridview的鼠标事件_【自学C#】|| 笔记 45 数据表格(DataGridView)控件的应用案例...

一、数据表格(DataGridView)控件的应用案例接下来我们通过一个完整的实例来实现课程信息管理功能的操作,包括查询、修改、删除课程信息的操作。为了简化实例,添加课程信息的操作直接在 SQL Server 数据库中完成。下面分几个步骤完成。1) 创建课程信息表创建课程信息表的 SQL 语句如下。use test;create table cou...

weixin_39541121的博客 852

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

纠结了几天的DataGrid绑定问题今天终于能跑出来了。我下载别人的代码,都可以跑, 因为我是用VS2010 Win7 64位 的环境来学习 C++ MFC的,网上找的资料大都是VC6.0正面的, 我下载的DataGrid例子都可以跑出来,一到我自己写就出错了。 后来我按照如下方法就可以了。文章最后有实例下载 1:新建一个MFC应用程序:DataGridDemo 2:选择基于对话

fddqfddq的专栏 1万+

VS2010环境MFC使用DataGrid绑定数据源

如果MFC的软件中 使用DataGrid控件后,在别的电脑上不能运行行,需要拷贝一个 MSDATGRD.ocx 和msstdfmt.dll  文件在软件的目录中,并写一个批处理文件 reg.dat 文件内容如下 regsvr32 msdatgrd.ocx regsvr32 msstdfmt.dll   详细介绍如何在MFC使用DataGrid控件实现数据绑定。 1:新建一个MFC...

weixin_33971205的博客 367

VS2010 MFC DataGrid绑定实例

                   VS2010环境MFC使用DataGrid绑定数据源 参考:http://blog.csdn.net/fddqfddq/article/details/7874706 详细介绍如何在MFC使用DataGrid控件实现数据绑定。 1:新建一个MFC应用程序:DataGridDemo    2:选择基于对话框,然后一直下一步,直到完成。    ...

weixin_30608503的博客 275

vs mfc数据与控件绑定错了_DataGridView控件用法一:数据绑定

DataGridView控件,可以显示和编辑来自多种不同类型的数据源的表格数据。将数据绑定DataGridView控件非常简单和直观,在大多数情况下,只需设置DataSource属性即可。在绑定到包含多个列表或表的数据源时,只需将DataMember属性设置为指定要绑定的列表或表的字符串即可。一、非绑定模式所谓的非绑定模式就是DataGridView控件显示的数据不是来自于绑定的数据...

weixin_39760295的博客 619

基于MFC对话框的GridfCtrl显示SQL表格

mfc对话框显示表格有那么几种方法:使用微软的CListCtrl控件使用Joe和chris编写的GridCtrl控件等。GridCtrl更专业些。这款控件出世将近20年,使用也很广泛。但是用于显示SQL表格的帮助文件较少。在网上找到10年前Mazdak写的教程,尝试并实现,对他表示感谢。 Mazdak-Binding MFC Grid to database一、首先介绍GridCtrl应用于简单

小李的专栏 4014

VS2008 中无法使用ACTIVEX控件解决

如果你在打开对话框时弹出 "The ActiveX control "Grid Control" could not be instantiated because it requires a design-time license"这个对话框时,在VC安装盘中找到vb6controls.reg,双击导入注册表就OK了,没有这个文件的可以COPY下面的代码另存为*.reg,导入注册表就行了REGE...

weixin_30628077的博客 412

VC++.NET 开发MFC数据库管理系统全记录[ADODC+DataGrid](2005-6-2)

这几天忙着没时间写Blog 一方面是在做毕业论文 一方面在公司做项目,学着用MFC连接数据库 以前从来没正儿八经地用MFC做过东西 然后上网找了半天,也找不到一篇令我满意的傻瓜式MFC数据库操作教程 所以,没办法 指望不到别人 只好自己摸索 在正式开始用MFC开发DBMS之前,先作几点说明 (1)为什么要用MFC,而不用.Net Framework           几天前我就已经用VB.NET...

weixin_34008933的博客 288

VC++ Datagrid应用实例详解系列(1) - 基本功能

本文是DataGrid组件系列之一。 本文主要内容: 用最简单的方法实现了DataGird组件的基本功能。

zxhx的blog 1万+

Gagarin 开源项目使用教程

Gagarin 开源项目使用教程 1. 项目的目录结构及介绍 Gagarin 项目的目录结构如下: gagarin/ ├── bin/ │ └── gagarin.js ├── lib/ │ ├── core/ │ ├── utils/ │ └── index.js ├── config/ │ ├── default.json │ └── production.json ├...

gitblog_00820的博客 429

MFCGrid表格控件:提升MFC应用数据展示的利器

MFCGrid是一款专为MFC应用程序设计的高效、灵活的表格控件。它通过提供动态链接库(DLL)的方式,简化了在MFC项目中集成和实现数据展示的过程。无论是简单的数据显示还是需要高级交互功能的界面设计,MFCGrid都能满足开发者的需求。该控件特别适用于需要复杂数据视图的软件开发场景,能够显著提升应用程序的用户体验。 ## 项目技术分析 MFCGrid控件在技术上具有以下几个显著特点: 1.

gitblog_09799的博客 1111

vc下利用cado class和datagrid分页显示数据库access内容

<br /> 背景:<br />1、用VC操作数据库是非常麻烦的,网上关于VC下利用ADO和datagrid操作数据库的教程也很多,但无非是相互抄袭。<br />2、ADO使用起来麻烦,然而一个老外写的ADO Classes我感觉还是挺好用的。包括两个文件ado2.h和ado2.cpp,而网上关于使用这个类进行ADO数据库操作的文章不多。<br />3、VC6.0下的datagrid貌似没有.net的那么强大,也没有VB6那么好用。连分页都显得麻烦,ADO自带的虚拟分页功能好像在datagrid上不好使。更

lhf9168的专栏 897

10kV变电所标准图.pdf.rar

10kV变电所标准图.pdf.rar

上一篇: vs2010编译配置boost
下一篇: 直接通过ODBC读写Excel表格文件
farcall
博客等级 码龄16年 28粉丝 83原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值