欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 社会 > 网易博客旧文----如何将BCGSOFT的格子控件用到微软的MFC工程中

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

2024/10/25 18:25:53 来源:https://blog.csdn.net/XZHOUMIN/article/details/143102691  浏览:    关键词:网易博客旧文----如何将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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com