网易博客旧文----如何将BCGSOFT的格子控件用到微软的MFC工程中

如何将BCGSOFT的格子控件用到微软的MFC工程中

2013-07-09 14:28:33| 分类: MFC | 标签: |举报 |字号大中小 订阅

复制代码
   微软从VS2008SP1开始,MFC的界面就加了很多新的控件,整个页面也焕然一行。其中的大多数新增加的控件起始就是来自于BCGsoft公司。公司网站为www.bcgsoft.com 
   虽然微软整合和bcgsoft公司的很多控件,但还是有一些很好用的控件没有被加入,例如各种统计报表及图形等。
   这里有一个格子控件起始也是很好的用的,CBCGPGridCtrl和CBCGPGridView,本文主要探讨将这个格子控件用到MFC工程中的方法以及碰到的文件解决。
   如果从向导开始就用BCGsoft来创建整个界面,则使用格子控件只需要看看bcgsoft公司的帮助文档即可。这里的用法是整个工程是完全的用微软MFC类搭建的MFC应用程序。
   这里以多文档界面作为例子介绍。
1、替换工程的VIEW,
例如:

CMultiDocTemplate* pDocTemplate3;

pDocTemplate3 = new CMultiDocTemplate(IDR_MyTYPE,

RUNTIME_CLASS(CMyDoc),

RUNTIME_CLASS(CChildFrame), // 自定义 MDI 子框架

RUNTIME_CLASS(CMyView));

if (!pDocTemplate3)

return FALSE;

AddDocTemplate(pDocTemplate3);

替换为

CMultiDocTemplate* pDocTemplate3;

pDocTemplate3 = new CMultiDocTemplate(IDR_MyTYPE,

RUNTIME_CLASS(CMyDoc),

RUNTIME_CLASS(CChildFrame), // 自定义 MDI 子框架

RUNTIME_CLASS(CBCGPEditView));

if (!pDocTemplate3)

return FALSE;

AddDocTemplate(pDocTemplate3);

这样就将视图替换为格子视图了

2、用CBCGPEditView的GetGridCtrl()方法获取指向CBCGPGridCtrl实例的一个指针,然后调用CBCGPGridCtrl的格子的各种方法来绘制表格

问题及解决:

1、换肤问题的解决

MFC支持各种皮肤风格的变换,由于新加的格子控件不在MFC整个控制系统内,因此无法跟随其变换颜色

我想了一个解决办法,就是调用CBCGPGridCtrl的SetColorTheme方法,而参数来源于自己整理跟踪出的数据,数据见最后

CMainFrame::OnApplicationLook(UINT id)

。。。。。

CMyGridCtrl *pGrid = pgridView->m_pMyGridCtrl;

switch (id)

{

case ID_VIEW_APPLOOK_WIN_2000:

pGrid->SetColorTheme(themeOffice2K);

break;

case ID_VIEW_APPLOOK_OFF_XP:

pGrid->SetColorTheme(themeOfficeXP);

break;

case ID_VIEW_APPLOOK_WIN_XP:

pGrid->SetColorTheme(themeXP);

break;

case ID_VIEW_APPLOOK_OFF_2003:

pGrid->SetColorTheme(themeOffice2003);

break;

case ID_VIEW_APPLOOK_VS_2005:

pGrid->SetColorTheme(themeVS2005);

break;

case ID_VIEW_APPLOOK_VS_2008:

pGrid->SetColorTheme(themeVS2008);

break;

case ID_VIEW_APPLOOK_WINDOWS_7:

break;

case ID_VIEW_APPLOOK_OFF_2007_BLUE:

pGrid->SetColorTheme(themeOffice2007Blue);

break;

case ID_VIEW_APPLOOK_OFF_2007_BLACK:

pGrid->SetColorTheme(themeOffice2007Black);

break;

case ID_VIEW_APPLOOK_OFF_2007_SILVER:

pGrid->SetColorTheme(themeOffice2007Silver);

break;

case ID_VIEW_APPLOOK_OFF_2007_AQUA:

pGrid->SetColorTheme(themeOffice2007Aqua);

break;

}

滚动条的颜色暂时没有想出什么办法解决

2、内存泄露的解决

在应用的ExitInstance调用

CBCGPVisualManager::DestroyInstance(TRUE /* bAutoDestroyOnly */);

CBCGPVisualManager2007::CleanStyle();

附:颜色定义

下载: typeDefine.cpp

相关推荐
L_09071 分钟前
【C++】数据结构之哈希表(散列表)
数据结构·c++·散列表
LB21128 分钟前
C++通讯录课设(西安石油大学)
开发语言·c++·算法
王老师青少年编程9 分钟前
2026年全国青少年信息素养大赛初赛真题(算法应用主题赛C++初中组初赛真题1:文末附答案和解析)
c++·真题·全国青少年信息素养大赛·初赛·2026年·算法应用主题赛·初中组
草莓熊Lotso2 小时前
【Linux系统加餐】从原理到封装:基于建造者模式实现System V信号量工业级C++封装
android·linux·运维·服务器·网络·c++·建造者模式
kyle~10 小时前
机器视觉---熔池相机(穿透强光的视觉感知)
c++·数码相机·计算机视觉·机器人·焊接机器人
宏笋10 小时前
C++ Coroutines(协程) 详解
c++
王老师青少年编程10 小时前
csp信奥赛C++高频考点专项训练之前缀和&差分 --【一维前缀和】:求区间和
c++·前缀和·csp·高频考点·信奥赛·求和区间和
kyle~11 小时前
机器人时间链路---工程流程示例
c++·3d·机器人·ros2
Agent手记12 小时前
成本数据多系统自动采集与分析实操指南:基于2026大模型Agent的超自动化实践
运维·人工智能·microsoft·ai·自动化
汉克老师12 小时前
GESP6级C++考试语法知识(十七、数据结构(三、认识队列 Queue))
数据结构·c++·队列·gesp6级·gesp六级·数组模拟队列