📄 odbcdbgridfile.h
字号:
// OdbcDBGridFILE.h: interface for the COdbcDBGridFILE class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_ODBCDBGRIDFILE_H__5C301E9E_D9E1_4B62_B7C9_686B34211E99__INCLUDED_)
#define AFX_ODBCDBGRIDFILE_H__5C301E9E_D9E1_4B62_B7C9_686B34211E99__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "GridCtrl.h"
#include <afxdb.h>
class COdbcDBGridFILE
{
struct SRowInfo
{
BOOL bWritten;//标志该条记录是否已经写到内存文件映射文件中
char *pAddress;//如果已经保存了的话,指向该条记录的地址
};//这个结构用来指示每条记录是否已经写到内存映射文件及其地址。
public:
int Release();//释放资源
int SetGridText(GV_DISPINFO *pDispInfo);//被外部函数调用接口,用来返回每个单元格应该显示的内容
int InitGrid();//初始化函数
COdbcDBGridFILE(CGridCtrl *pGrid = NULL, CDatabase *pDatabase = NULL, CString strSql = "", CString strFilePath = "");
virtual ~COdbcDBGridFILE();
private:
int FetchData();//从记录集中获取数据保存到内存映射文件中
int GetFieldInfo(int iFieldIndex, CString &strFieldName);//得到查询结果的字段名
int GetSelectSqlColumns();//得到查询的结果共有多少列
int DealMapFileSizeLess();//当内存映射文件大小不够时,自动重新进行分配。
int GetAGridData(int iRow, int iCol, CString &strOut);//得到一个单元格的内容,如果该单元格所对就的行还没有写到内存映射文件中去的话,那么先要写到内存映射中
int InitMapFile();//被初始化函数调用,用来初始化内存映射文件
int GetSelectTotalCount();//得到查询的结果共有多少行
private:
CGridCtrl *m_pGrid;
struct SRowInfo *m_pRowFileInfo;
//for map file
PVOID m_pvFile;
HANDLE m_hFilemap, m_hFile;
char *m_cpWrite;
int m_iCurrentCount;
CString m_strFilePath;
int m_iMapFileSize;
//for database
CDatabase *m_pDatabase;
CString m_strSql;
CRecordset m_Set;
int m_iTotalCount;
int m_iColumns;
int m_iOnceReadRows;
int m_bConnectMode;
};
#endif // !defined(AFX_ODBCDBGRIDFILE_H__5C301E9E_D9E1_4B62_B7C9_686B34211E99__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -