vs2010ActiveX使用DataGrid

来源:互联网 发布:最好的优化软件 编辑:程序博客网 时间:2024/05/17 01:45

1.在工具->选择工具箱->Com组件->选择->C:\Windows\System32\MSDATGRD.OCX打开。工具箱里就有DataGrid组件了,Microsoft DataGrid Control 6.0(SP6)(OLEDB)

2.在电脑上注册,点击电脑开始,输入cmd(或者附件->命令提示符),输入regsvr32 c:\Windows\System32\MSDATGRD.OCX注册这个控件。

3.把DataGrid拖到对话框上,修改属性ID为IDC_DATAGRID。

4.在解决方案资源管理器的项目名称下点击右键->添加->类->ActiveX控件中的MFC类->添加-->文件->找到MSDATGRD.OCX的位置和文件->打开->选择column和columns两个接口,千万不要选IDataGrid接口。

5.把别的地方的datagrid.h和datagrid.cpp文件放入项目资源文件夹下。(得到之后存起来,方便以后项目中使用DataGrid使用)。

6.在stdafx.h文件最后中加入:

#import "c:\Pragram Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","rsEOF")
或者
<pre code_snippet_id="166767" snippet_file_name="blog_20140122_1_9735821" name="code" class="cpp">#import "c:\Pragram Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF")

7.在对话框头文件MyDialog.h中加入

#include "datagrid.h"

8.定义public成员变量

CDataGrid m_dbGrid;

9.在MyDialog.cpp的DoDataExchange函数中加入

DDX_Control(pDX,IDC_DATAGRID,m_dbGrid);


出现的一些问题:

1.对话框的Oncreat函数中要加入一句话:

AfxEnableControlContainer();

因为ActiveX是个OCX控件,MSDATGRD.OCX也是一个OCX控件,想在OCX控件中使用另一个OCX控件,必须把项目的OCX控件声明为可以容纳其他ocx控件的容器。

2.在stdafx.h中加入#import这句话之后,编译时可能会出现错误,提示error C2011:"LockTypeEnum":"enum"类型重定义。是因为以下这段代码和#import冲突了,把以下代码屏蔽掉就可以了。

#ifndef _AFX_NO_DB_SUPPORT#include <afxdb.h>                      // MFC ODBC 数据库类#endif // _AFX_NO_DB_SUPPORT#ifndef _AFX_NO_DAO_SUPPORT#include <afxdao.h>                     // MFC DAO 数据库类#endif // _AFX_NO_DAO_SUPPORT

3.在外部把datagrid.h和.cpp放入项目资源文件中之后,不要忘记在项目的头文件和源文件中添加进项目去,不然会报错

4.datagrid.h和datagrid.cpp文件在以下链接中有资源,并且讲的很详细。


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


0 0
原创粉丝点击