`

CHeaderCtrl用法

    博客分类:
  • MFC
阅读更多

CListCtrl的表头可以单独使用,类CHeaderCtrl封装了这一功能.

1.  构造表头

     和所有控件一样,都通过Create函数创建对象,Create函数的原型如下:

     virtual BOOL Create(DWORD dwStyle,const RECT& rect,CWnd* pParentWnd,UINT nID)

     参数说明:

     rect是表头控件所在位置;

     pParentWnd是表头的父窗体的指针,

     nID是表头的资源ID号;

     dwStyle是表头的风格样式,有下列值组合:

        HDS_BUTTONS 表示表头控制外观类似按钮;
  HDS_HORZ 表示表头控制为水平排列;
  HDS_VERT 表示表头控制为垂直排列;
  HDS_HIDDEN 表示表头控制为隐藏模式。
  CCS_BOTTOM 设置控制位置在父窗口的底部并与父窗口同样宽度;
  CCS_NODIVIDER 在控制顶部形成两个像素的高亮区;
  CCS_NOHILITE 在控制顶部形成一个像素的高亮区;
  CCS_NOMOVEY 在响应WM_SIZE消息时重置大小并水平排列;
  CCS_NOPARENTALIGN 使控制自动靠近父窗口的顶部或底部;
  CCS_NORESIZE 设置初始大小或新值时使控制使用默认宽度和高度;
  CCS_TOP 设置在父窗口客户区域的顶部并与父窗口同样宽度;

        也可以使用WND的风格.

     创建了表头以后使用InsertItem添加列项,InsertItem函数原型如下:

     int InsertItem(int nPos, HDITEM* phdi )

     参数说明:

     nPos是列序号,也就是列项在表头中的位置

     phdi是一个结构体,列的属性取决于该结构体的设置,结构体原型是:

     typedef struct _HD_ITEM

    {

          UINT mask; //结构成员有效控制位

          int cxy; //表头项目的宽度
          LPSTR pszText; //表头项目内容
          HBITMAP hbm; //表头项目的位置句柄
          int cchTextMax; //表头内容字符串长度
          int fmt; //表头项目的格式
          LPARAM lParam; //应用程序定义的32位数据
      } HD_ITEM;

      通常设置mask,cxy,pszText和fmt四个域.

      mask设置以下值或值的组合表示如下含义:

            HDI_BITMAP              hbm成员有效
   HDI_FORMAT            fmt 成员有效

   HDI_LPARAM             lParam成员有效
   HDI_TEXT                   pszText 和cchTextMax 成员有效
   HDI_WIDTH cxy 成员有效并确定项目宽度值

      fmt设置以下值或值的组合表示如下含义:

            HDF_CENTER 表头项目居中
   HDF_LEFT 表头项目左对齐
   HDF_RIGHT 表头项目右对齐
   HDF_BITMAP 表头显示一个位图
   HDF_OWNERDRAW 由主窗口自绘表头项目
   HDF_STRING 表头项目为一个字符串

      其它成员函数不在此说明,请参考MSDN.

2.  控制表头

     可以通过三个常用的消息控制表头,分别是:

     HDN_ITEMCLICK         鼠标左键单击表头中的列

     NM_RCLICK                   鼠标右键单击表头中的列,右键弹出菜单可以在此消息的控制函数中实现

     HDN_ITEMCHANGED 拖动列的边界,改变列大大小

     这三个消息都以ON_NOTIFY()发送,消息处理函数原型为void FunName(NMHDR* pNMHDR, LRESULT* pResult)

     在消息处理函数中,通过成员函数GetHeaderCtrl()获得表头的指针pHead,调用成员函数GetItem()获得属性值,给一示例:

      NMHEADER *pHdr = (NMHEADER*)pNMHDR;
      CHeaderCtrl *pHeader = m_cListCtrl.GetHeaderCtrl();
      HDITEM hdi;
      hdi.mask = HDI_WIDTH;
      pHeader->GetItem(pHdr->iItem, &hdi);

      hdi.cxy就是触发消息的列的宽度.

      还有许多消息可以控制表头,使用方法同上:

     HDN_ITEMDBLCLICK       左键双击表头的列项

     HDM_SETITEM                   设置表头列的属性

     HDN_DIVIDERDBLCLICK 左键双击列与列的分割区域

     更多的请参考MSDN的"Header Control Reference "


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/bwmwm/archive/2008/07/24/2706663.aspx

分享到:
评论

相关推荐

    改变 CListCtrl、CHeaderCtrl 高度、字体、颜色和背景

    它的定制方法如下: 1. **高度**:修改`CHeaderCtrl`的高度可以通过调用`SetItemHeight`函数完成,它接受一个索引参数,表示要修改的列标题的索引,和一个高度值。 2. **字体**:`CHeaderCtrl`的字体设置同样可以...

    Change-CHeaderCtrl-Height_Font_Color.zip_Change_CheaderCtrl

    在Windows应用程序开发中,`CHeaderCtrl` 是MFC(Microsoft Foundation Classes)库中的一个类,用于处理控件头部,通常在列表视图`CListCtrl`中使用,显示列标题。这个`Change-CHeaderCtrl-Height_Font_Color.zip_...

    CListCtrl-CHeaderCtrl.rar_CHeaderCtrlCl.h_CListCtrl_CheaderCtrl_

    在`CListCtrl`和`CHeaderCtrl`的结合使用中,你还可以实现一些高级特性,比如添加右键菜单到列头,让用户可以自定义列的显示方式,或者通过添加自定义列类型来支持更复杂的数据展示。 总的来说,这个压缩包中的代码...

    改变CListCtrlCHeaderCtrl高度字体颜色和背景增强版

    要改变CHeaderCtrl的高度,我们需要使用CHeaderCtrl的GetItemRect和SetItemRect方法。GetItemRect用于获取当前列头的矩形区域,而SetItemRect则可以设置新的尺寸。需要注意的是,修改控件大小可能需要处理WM_SIZE...

    【最新】MFC, CListCtrl 自定义字体、颜色和背景

    可以通过调用`SetColumnWidth`来设置列宽,然后使用`SetFont`函数为CListCtrl或CHeaderCtrl设置全局字体。如果希望每一列都有不同的字体,可能需要在绘制项时手动处理。 2. **颜色定制**:CListCtrl的颜色定制主要...

    VC 改变CListCtrlCHeaderCtrl高度字体颜色和背景增强版.rar

    总的来说,通过自定义`CListCtrl`和`CHeaderCtrl`的派生类,并重写相关绘图方法,我们可以轻松实现对字体、颜色和背景的定制,为用户创造更加个性化的界面体验。同时,这种定制化也能帮助开发者更好地满足项目需求,...

    通用控件的使用方法详解与实例

    在Windows编程中,通用控件是一组预定义的用户...了解和熟练掌握这些通用控件的使用方法,对于构建用户友好的Windows应用程序至关重要。通过实践和实例,开发者可以更好地理解和运用这些控件,提高应用程序的用户体验。

    CListCtrl 控件的排序 头部箭头

    本文将深入探讨CListCtrl控件的排序功能以及与之相关的CHeaderCtrl头部控件的使用。 CListCtrl是一个强大的控件,它允许程序员创建类似电子表格的多列视图,用于显示数据列表。在CListCtrl中,每一行代表一个项目,...

    CListCtr多表头的实现方法

    可以使用`SetItemPosition`函数来移动表头项,或者使用`SetItemWidth`来改变宽度。为了使多级表头看起来更自然,可能还需要处理鼠标悬停和点击效果,例如改变颜色或显示下拉箭头。 在事件处理方面,我们需要捕获`...

    VC++中常用控件的使用方法

    总的来说,掌握这些常用控件的使用方法是VC++ GUI编程的基础,熟练运用它们能帮助构建出功能丰富、用户体验良好的应用程序。在实际开发中,还需要结合具体的业务逻辑和用户需求,灵活运用这些控件,以实现更复杂的...

    clistctrl为表头添加CheckBox

    首先,我们需要理解CListCtrl和CHeaderCtrl的基本用法。CListCtrl提供了多种视图模式,如报告视图、小图标视图、大图标视图等,其中报告视图最适合用于显示带有列标题的数据。CHeaderCtrl则可以用来获取或设置表头的...

    VC常用控件用法.doc

    - 创建表头控制对象的方法是通过`CHeaderCtrl`类的`Create`函数,该函数接收风格参数,如`HDS_BUTTONS`, `HDS_HORZ`, `HDS_VERT`, `HDS_HIDDEN`等,以及父窗口指针和ID。 - 表头控制的属性包括获取项目数量的`...

    vc++6.0控件使用方法

    ### vc++6.0控件使用方法 #### 一、概述 在开发Windows应用程序时,控件是非常重要的组成部分,它们负责实现与用户的交互。Visual C++ 6.0(简称VC++6.0)提供了丰富的控件支持,使得开发者能够轻松地构建功能强大...

    VC常用控件基本用法

    插入和删除表头项可以使用以下方法: - `InsertItem(int nItem, LPCTSTR lpszText, int cxyWidth)`:在指定位置插入表头项。 - `DeleteItem(int nItem)`:删除指定的表头项。 #### 2. 图像列表控制 (Image List) ...

    VC CListCtrlt列表控件特效

    在OnDrawItem()函数中,我们可以使用CDC类的FillSolidRect()方法填充单元格的背景色。对于列背景,通常需要在绘制列标题时处理,因为列标题和列内容区域可能由不同的函数处理。 列字体颜色和单元格字体颜色的改变...

    漂亮的彩色LIST类

    3. `CListCtrl` 和 `CHeaderCtrl` 的使用和扩展。 4. Windows消息处理,如WM_DRAWITEM和WM_MEASUREITEM。 5. GDI图形绘制,包括颜色填充、文字绘制等。 6. 控件的自定义样式和视觉效果实现。 通过深入研究这些文件...

    CListCtrl 完全重绘(包括表头,表项和滚动条,带checkbox)

    通过继承`CHeaderCtrl`并覆盖`OnDrawItem`方法,可以定制表头的外观,如字体、颜色、背景等。同时,需要处理`HDN_BEGINTRACK`和`HDN_ENDTRACK`消息,以便在用户调整列宽时响应。 3. **表项(Items)**: 对于表项...

    CListCtrl样式自定义

    文本颜色可以使用 `SetTextColor` 方法,但需要注意的是,此方法仅适用于 `LVS_OWNERDRAWFIXED` 样式的 `CListCtrl`。对于背景颜色,可采用 `SetBkColor` 或者在 `OnDrawItem` 和 `OnDrawSubItem` 事件中使用 `CDC` ...

    VC之美化界面篇本文专题讨论VC中的界面美化,适用于具有中等VC水平的读者。读者最好具有以下VC基础:

    本文主要探讨了使用Visual C++(简称VC)及其集成的Microsoft Foundation Classes(MFC)框架来进行界面美化的各种方法。文章适合具有一定MFC基础的开发者阅读,特别是对于MFC框架的基本运作原理、Windows消息机制...

    MFC.design.tree.control.font.rar_MFC tree_MFC树形控件_tree_tree cont

    6. **利用CHeaderCtrl**:如果树形控件有自定义的列头,也可以使用`CHeaderCtrl`来设置列头的字体。同样,通过`CHeaderCtrl::SetFont`和`CHeaderCtrl::GetItemRect`等函数可以实现这一功能。 综上所述,MFC中的树形...

Global site tag (gtag.js) - Google Analytics