int InRange(int row, int col) const; // 判断行/列是否在范围之内
int InRange(const CCellID& cellID) const; // 判断单元格是否在范围之内
CCellID GetTopLeft() const; //取出左上角单元格
CCellRange Intersect(const CCellRange& rhs) const;
//返回两个区域的交集
int GetMinRow() const; // 下面的容易理解
void SetMinRow(int minRow);
int GetMinCol() const;
void SetMinCol(int minCol);
int GetMaxRow() const;
void SetMaxRow(int maxRow);
int GetMaxCol() const;
void SetMaxCol(int maxCol);
int GetRowSpan() const; // 行的跨度
int GetColSpan() const; // 列的跨度
void operator=(const CCellRange& rhs);
int operator==(const CCellRange& rhs);
int operator!=(const CCellRange& rhs);
}
结构体GV_ITEM,它在调用Get/SetItem时使用]
typedef struct _GV_ITEM {
int row,col; //对象的行和列
UINT mask; // 用于设置/获取单元格数据的一种掩码
UINT state; //单元格状态 (如焦点/突出显示)
UINT nFormat; //单元格格式.默认使用CDC::DrawText格式
CString szText; // 单元格的文本
int iImage; // 系列可视对象图标的索引
COLORREF crBkClr; // 背景颜色 (或者 CLR_DEFAULT)
COLORREF crFgClr; // 前景颜色(或者 CLR_DEFAULT)
LPARAM lParam; // 与对象有联系的32位值
LOGFONT lfFont; // 单元格的字体
} GV_ITEM;
网格线或者滚动条的选择
GVL_NONE // 无网格线
GVL_HORZ // 仅仅有水平网格线
GVL_VERT //仅仅有垂直网格线
GVL_BOTH // 水平和垂直网格线都有
自动调整大小选项
GVS_DEFAULT //默认
GVS_HEADER //仅用于列的固定单元格数据
GVS_DATA //仅用于列的非固定单元格数据
GVS_BOTH // 固定列和非固定列都适用
单元格数掩码
GVIF_TEXT // 存取单元格文本
GVIF_IMAGE // 存取单元格图片数量
GVIF_PARAM // 存取单元格用户数据(lParam)
GVIF_STATE // 存取单元格状态
GVIF_BKCLR //存取单元格背景颜色
GVIF_FGCLR // 存取单元格前景颜色
GVIF_FORMAT // 存取单元格格式
GVIF_FONT // 存取单元格逻辑字体
GVIF_MARGIN // 存取单元格边缘信息
GVIF_ALL // 存取所有信息
单元格状态
GVIS_FOCUSED // 单元格成为焦点
GVIS_SELECTED // 选择单元格
GVIS_DROPHILITED // Cell is drop highlighted
GVIS_READONLY // 设置只读,不能编辑
GVIS_FIXED // 单元格锁定
GVIS_FIXEDROW // 单元格是锁定行的一部分
GVIS_FIXEDCOL //单元格是锁定列的一部分
GVIS_MODIFIED // 单元格被修改过
单元格查找选项
GVNI_FOCUSED //查找焦点单元格
GVNI_SELECTED // 查找已选单元格
GVNI_DROPHILITED // Search for drop highlighted cells
GVNI_READONLY // 查找只读单元格
GVNI_FIXED // 查找锁定单元格
GVNI_MODIFIED // 查找修改过的单元格
GVNI_ABOVE // 在初始单元格上方查找
GVNI_BELOW //在初始单元格下方查找
GVNI_TOLEFT // 向左查找初始单元格
GVNI_TORIGHT //向右查找初始单元格
GVNI_ALL // 从指定单元格开始查找全部单元格
GVNI_AREA // 从指定单元格右下方查找单元格
通知消息
GVN_BEGINDRAG // 拖曳发生时发送
GVN_BEGINLABELEDIT // 定位编辑开始时发送
GVN_ENDLABELEDIT //定位编辑停止时发送
GVN_SELCHANGING // 单元格选择改变之前发送
GVN_SELCHANGED // 单元格选择改变之后发送
GVN_GETDISPINFO //当Grid处在虚拟模式下的一个单元格信息请求
GVN_ODCACHEHINT // 虚拟模式下的隐藏提示
当不使用NM_GRIDVIEW机构体时,这些消息就很象它们的LVN_...副本
typedef struct tagNM_GRIDVIEW {
NMHDR hdr;
int iRow;
int iColumn;
} NM_GRIDVIEW;
Protect类型的重载函数
这些函数作成虚拟的以便于扩展。
Printing - 在OnPrint事件中调用.
virtual void PrintColumnHeadings(CDC *pDC, CPrintInfo *pInfo);
virtual void PrintHeader(CDC *pDC, CPrintInfo *pInfo);
virtual void PrintFooter(CDC *pDC, CPrintInfo *pInfo);
virtual void PrintRowButtons(CDC *pDC, CPrintInfo* pInfo);
Drag n' drop
//虽然没什么必要,但是我觉得这些代码很酷,所以还是保留了。:).
virtual CImageList* CreateDragImage(CPoint *pHotSpot)
Mouse Clicks
virtual void OnFixedColumnClick(CCellID& cell);
virtual void OnFixedRowClick(CCellID& cell);
Editing
//开始编辑
virtual void OnEditCell(int nRow, int nCol, CPoint point,
UINT nChar)
// 结束编辑
virtual void OnEndEditCell(int nRow, int nCol, CString str)
//创建定位编辑控件
virtual void CreateInPlaceEditControl(CRect& rect, DWORD dwStyle,
int nRow, int nCol,
LPCTSTR szText, int nChar)
Drawing
virtual void OnDraw(CDC& origDC); //画任何东西
Construction and Cleanup
//创建一个新的单元格并初始化.
virtual CGridCellBase* CreateCell(int nRow, int nCol)
// 删除一个单元格并作必要的清除工作
virtual void DestroyCell(int nRow, int nCol)
剪贴板
其中还还包含了很多剪贴板函数
virtual void OnEditCut() 将所选单元格内容拷贝到剪贴板,并删除单元格中的响应内容. (Ctrl-X)
virtual void OnEditCopy() 将所选单元格内容拷贝到剪贴板 (Ctrl-C)
virtual void OnEditPaste() 将剪贴板中的内容粘贴到Grid中. (Ctrl-V)
virtual void OnEditSelectAll() 虽然不是一个真正的剪贴板函数,但会经常用到. 这个程序全选Grid中的单元格 (Ctrl-A)
单元格的编辑和确认