MFC之控件扩展

      MFC给程序员们提供了一个很强大的开发模板用于Windows编程,简单的界面创建方法更是方便了程序员。但是MFC提供的界面控件虽然挺多挺强大,但却不能满足某些功能的特殊需求。还好,C++的类继承机制和MFC精致的设计给我们带来了无限的发挥空间。

 

      1. CListCtrl 的扩展:

          CListCtrl控件不支持单元格的背景和字体颜色改变,单元格的编辑和下拉等功能。要完成这些需要程序员做一定的功能扩展,主要用到控件组合和GDI自绘。控件组合就是把一般的CEdit,CCombox等控件动态的加到CListCtrl单元格中。而自绘主要由用户扩充绘制函数,例如要在CListCtrl单元格中加入色块,色块后加入文字Caption,可以重载它的这个函数:

          CListCtrl::OnCustomDraw(..., ...)    {....代码同3例...}

 

      2. CGridCtrl控件是一个外国人所写的功能强大的报表控件。直接从CWnd类派生,自己管理单元格。

 

      3. 最近我所见到的对MFC控件扩展最深入的要算Xtreme Toolkit Pro了。Xtreme Toolkit Pro 为Windows开发人员提供了一个尖端技术的组件集来为你的应用程序提供一个专业的,现代化的外观。Xtreme Suite Pro组合了8种我们最受欢迎的组件, Xtreme CommandBar,Xtreme Docking Pane,Xtreme Property Grid,Xtreme Report Control,Xtreme Calendar,Xtreme Task Panel,Xtreme ShortcutBar和 Xtreme Controls。能运行在多种语言环境中。

           其中XTPButton按钮类的使用和一般的按钮扩展控件相同,直接把按钮变量声明为这种类型就行了。

           它的Xtreme Report Control控件中用到的单元格虽然能改变颜色,但是不能加色块后面再写文字。所以我们还得对它的单元格类进行扩展。例如我们可以这样改造:

           CXTPReportItem::OnDrawCaption(..., ....) {

           CRect& rect = pDrawArgs->rcItem;

           rect.DeflateRect(2,1,2,0); //对矩形缩放,以使色块显示在格子里面

           CXTPBrush brush(pDrawArgs->pDC, color);

           pDrawArgs->pDC->Rectangle(rect);

           CRect rt(rect);//使矩形再向右移动一些,写文字

           pDrawArgs->pDC->DrawText(...,...,...);  }

                      

 

 

     

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值