欢迎来到天天文库
浏览记录
ID:37133446
大小:149.00 KB
页数:27页
时间:2019-05-18
《CGridCtrl学习指南》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、CGridCtrl学习指南当我努力为显示和编辑现有表中的数据而使用CListCtrl到了极限之后,我意识到我所需要的只不过是一个专用的Grid控件而已。于是我开始着手写自己的Grid控件,但为了节省时间我决定修改JoeWillcoxson's的免费控件WorldCom,你可以在以下站点http://users.aol.com/chinajoe/wcmfclib.html找到这个东东。为了让它能做我要做的事情,我分解了他的代码,并且重新修改。由于代码经过太多的修改,我甚至不能确信最终是否还存在最初的代码。但无论如何,Joe的代码是一个大框架,而我只是
2、在上面进行加工而已。工程一开始的时候是计划尽可能的简单但是当我不断发现我不得不考虑新特色的时候,它迅速的膨胀成为一个梦魇。虽然测试并不是没有遗漏--但是我还是坚信情形不会变得太坏J。Joe很善意的允许我开放这个资源而不附加任何的语句(毕竟那是基于他的代码),但是由于工程象马拉松似的,所以我在这段代码中使用了两个非常不成熟的条件:这段代码可以以任何方式用于已编译的形式中(包括商业用途)。只要代码不适用,即使没有作者同意,作者姓名和所有版权信息都原封不动,你可以对代码进行任何形式的使用。但是,如果没有作者的同意,这篇文章和附带的源代码都不能放在任何网站
3、或论坛上。你就把它当作是没有任何担保的软件,随意使用吧!我已经尽量除去任何不良的"特征",对由它引起的任何损害,时间的浪费或者数据丢失等,我不负任何责任。希望不要问太多关于继续开发下去的到底有多大工作量的问题。如果你真的要用于商业场合,请给我发email让我知道。如果没有多少人使用的话,开放和维护/升级代码就没有任何意义。
控件的特点:●使用鼠标可以进行单元格的选择,还可以辅助ctrl和shift的组合键进行选择。也可以取消选择。●行和列可以按照大小进行重排,还可以取消对行、列或两者的排序。●双击区分点,行或者列可以按照大小自动排序●
4、可以对任何列或行固定●单元格可以有不同文本和背景颜色的个性化设置●单元格可以有字体的个性化设置●单元格可以标注"只读"或者其他的状态设置及检测●OLE的拖放动作●Ctrl-C,Ctrl-X和Ctrl-V执行拷贝、剪切、粘贴操作,Ctrl-A全选●当单元格成为焦点,并且在单元格的编辑区域按下字符键,就意味着在那个单元格进行编辑了●支持微软的智能鼠标●可以在单元格中加入图片●对大型数据可以使用"虚拟"模式●充分的打印支持,支持文档/浏览环境(包括打印预览)或是基于会话的应用(不支持打印预览)●可选的"列表模式",包括对行的全选或单选,还有单击列标题提示
5、进行插入的操作。●众多的虚函数可以很容易对控件进行功能扩充●支持UNICODE●支持WinCE●单元格的标题提示太小不能显示数据●可以隐藏行和列●在VC4.2、5.0、6.0和CE工具箱2.0、3.0下编译通过
示例中示范了grid控件中大部分特征
文档如果想在你的工程中使用这个Grid控件的话,你还得在你的工程中添加一些文件:gridctrl.cpp,gridctrl.hGrid控件资源文件和头文件gridcellbase.cpp,gridcellbase.h单元格的基础类gridcell.cpp,gridcell.h单元
6、格的默认执行文件CellRange.hCcellID和CcellRange类的定义MemDC.hKeithRule's的直接存储类InPlaceEdit.cpp,InPlaceEdit.h定位编辑窗口的源文件和头文件GridDropTarget.cpp,GridDropTarget.hGrid容器的drag和drop对象只有在gridctrl.h中没有定义GRIDCONTROL_NO_DRAGDROP的时候才有必要使用。Titletip.cpp,Titletip.h从ZafirAnjum那里的到的单元格标题提示.只有在gridctrl.h中没有定义
7、GRIDCONTROL_NO_TITLETIPS的时候才有必要使用
结构这个Grid是基于一种框架(CgridCtrl工程),这种框架组织和控制那些容纳数据、执行某些操作如画图、句柄方法如按钮的点击事件的单元格的动作。Grid工程本身的句柄事件如点击是在单元格之前响应,如果它认为有必要的话,它还会发送某种鼠标信息。它还包含一个拖曳对象(CGridDropTarget)和一个标题提示对象(CTitleTip),前者处理拖曳操作,后者在单元格物理空间在最大限度内不足以显示其内容时可以显示出其内容。Grid单元格可以是任何类型,其长度与源自C
8、gridBaseCell的类的长度一样。包含这个包的是一个CgridCell类,它能处理基本的数据存储和编辑操作。扩充的两
此文档下载收益归作者所有