- 浏览: 73762 次
- 性别:
- 来自: 上海
文章分类
最新评论
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
发表评论
-
自己写的一段customerDraw
2010-08-24 16:20 1897void CNewReportPage::OnNMCustom ... -
帖BitMap
2010-08-24 09:42 793void CEx_14View::O ... -
clistctrl +号按钮绘制
2010-08-11 17:18 1588网上有关clistctrl举不胜举,包括按钮控件的绘 ... -
listctrl总结2
2010-08-11 17:11 99420. listctrl的subitem添加图标 ... -
VC中使用ListCtrl经验总结(1)
2010-08-11 17:07 1334ListCtrl在工作中,常常用到,也常常看到大家发帖问怎么用 ... -
LV_COLUMN结构体
2010-08-10 14:44 2719typedef struct _LV_COLUMN {UINT ... -
加载位图BITMAP
2010-08-10 14:27 1458m_Bitmap.LoadBitmap(IDB_BITMAP1 ... -
关于控件重绘函数/消息 OnPaint,OnDraw,OnDrawItem,DrawItem的区别
2010-08-10 13:15 6459而OnPaint()是CWnd的类成员,同时负责响应WM_ ... -
listctrl 重绘
2010-08-10 10:15 1060common control 4.7版本介绍 ... -
OnCreate PreCreateWindow PreSubclassWindow
2010-08-09 17:47 1782OnCreate PreCreateWindow PreSub ... -
扩展CListCtrl实现颜色长度改变
2010-08-09 17:34 3231用CListCtrl来显示数据比较方便,有时候我们需要标注某一 ... -
创建CListCtrl中的排序小图标
2010-08-09 17:11 2325创建CListCtrl中的排序小图标 for(int i = ... -
CListCtrl控件的使用
2010-08-09 17:02 1205初始化: DWORD dwStyle; dwStyle = m ... -
改变 CListCtrl、CHeaderCtrl 高度、字体、颜色和背景
2010-08-09 16:49 2695改变 CListCtrl、CHeaderCtrl 高度、字体、 ... -
CListCtrl::SortItems的用法:
2010-08-09 12:37 2013CListCtrl::SortItems的用法: (一)So ... -
树型视的三个结构TVINSERTSTRUCT、TVITEM、NMTREEVIEW
2010-08-05 18:11 996TVINSERTSTRUCT包含添加新项到树形视控件所使用的信 ... -
剪贴板和OLE拖放
2010-08-05 16:35 1165一、传统剪贴板 ... -
文档/视图结构中的各个部分是如何联系到一起的
2010-08-05 15:39 765文档/视图结构是MFC中最有特色而又有难度的部分,在这当中涉及 ... -
MFC一些函数区别
2010-08-05 13:43 1679GetMessagePos GetCursorPos的区别 ... -
LPTSTR、LPCSTR、LPCTSTR、LPSTR的意义
2010-08-05 13:33 1048UNICODE:它是用两个字节 ...
相关推荐
它的定制方法如下: 1. **高度**:修改`CHeaderCtrl`的高度可以通过调用`SetItemHeight`函数完成,它接受一个索引参数,表示要修改的列标题的索引,和一个高度值。 2. **字体**:`CHeaderCtrl`的字体设置同样可以...
在Windows应用程序开发中,`CHeaderCtrl` 是MFC(Microsoft Foundation Classes)库中的一个类,用于处理控件头部,通常在列表视图`CListCtrl`中使用,显示列标题。这个`Change-CHeaderCtrl-Height_Font_Color.zip_...
在`CListCtrl`和`CHeaderCtrl`的结合使用中,你还可以实现一些高级特性,比如添加右键菜单到列头,让用户可以自定义列的显示方式,或者通过添加自定义列类型来支持更复杂的数据展示。 总的来说,这个压缩包中的代码...
要改变CHeaderCtrl的高度,我们需要使用CHeaderCtrl的GetItemRect和SetItemRect方法。GetItemRect用于获取当前列头的矩形区域,而SetItemRect则可以设置新的尺寸。需要注意的是,修改控件大小可能需要处理WM_SIZE...
可以通过调用`SetColumnWidth`来设置列宽,然后使用`SetFont`函数为CListCtrl或CHeaderCtrl设置全局字体。如果希望每一列都有不同的字体,可能需要在绘制项时手动处理。 2. **颜色定制**:CListCtrl的颜色定制主要...
总的来说,通过自定义`CListCtrl`和`CHeaderCtrl`的派生类,并重写相关绘图方法,我们可以轻松实现对字体、颜色和背景的定制,为用户创造更加个性化的界面体验。同时,这种定制化也能帮助开发者更好地满足项目需求,...
在Windows编程中,通用控件是一组预定义的用户...了解和熟练掌握这些通用控件的使用方法,对于构建用户友好的Windows应用程序至关重要。通过实践和实例,开发者可以更好地理解和运用这些控件,提高应用程序的用户体验。
本文将深入探讨CListCtrl控件的排序功能以及与之相关的CHeaderCtrl头部控件的使用。 CListCtrl是一个强大的控件,它允许程序员创建类似电子表格的多列视图,用于显示数据列表。在CListCtrl中,每一行代表一个项目,...
可以使用`SetItemPosition`函数来移动表头项,或者使用`SetItemWidth`来改变宽度。为了使多级表头看起来更自然,可能还需要处理鼠标悬停和点击效果,例如改变颜色或显示下拉箭头。 在事件处理方面,我们需要捕获`...
总的来说,掌握这些常用控件的使用方法是VC++ GUI编程的基础,熟练运用它们能帮助构建出功能丰富、用户体验良好的应用程序。在实际开发中,还需要结合具体的业务逻辑和用户需求,灵活运用这些控件,以实现更复杂的...
首先,我们需要理解CListCtrl和CHeaderCtrl的基本用法。CListCtrl提供了多种视图模式,如报告视图、小图标视图、大图标视图等,其中报告视图最适合用于显示带有列标题的数据。CHeaderCtrl则可以用来获取或设置表头的...
- 创建表头控制对象的方法是通过`CHeaderCtrl`类的`Create`函数,该函数接收风格参数,如`HDS_BUTTONS`, `HDS_HORZ`, `HDS_VERT`, `HDS_HIDDEN`等,以及父窗口指针和ID。 - 表头控制的属性包括获取项目数量的`...
### vc++6.0控件使用方法 #### 一、概述 在开发Windows应用程序时,控件是非常重要的组成部分,它们负责实现与用户的交互。Visual C++ 6.0(简称VC++6.0)提供了丰富的控件支持,使得开发者能够轻松地构建功能强大...
插入和删除表头项可以使用以下方法: - `InsertItem(int nItem, LPCTSTR lpszText, int cxyWidth)`:在指定位置插入表头项。 - `DeleteItem(int nItem)`:删除指定的表头项。 #### 2. 图像列表控制 (Image List) ...
在OnDrawItem()函数中,我们可以使用CDC类的FillSolidRect()方法填充单元格的背景色。对于列背景,通常需要在绘制列标题时处理,因为列标题和列内容区域可能由不同的函数处理。 列字体颜色和单元格字体颜色的改变...
3. `CListCtrl` 和 `CHeaderCtrl` 的使用和扩展。 4. Windows消息处理,如WM_DRAWITEM和WM_MEASUREITEM。 5. GDI图形绘制,包括颜色填充、文字绘制等。 6. 控件的自定义样式和视觉效果实现。 通过深入研究这些文件...
通过继承`CHeaderCtrl`并覆盖`OnDrawItem`方法,可以定制表头的外观,如字体、颜色、背景等。同时,需要处理`HDN_BEGINTRACK`和`HDN_ENDTRACK`消息,以便在用户调整列宽时响应。 3. **表项(Items)**: 对于表项...
文本颜色可以使用 `SetTextColor` 方法,但需要注意的是,此方法仅适用于 `LVS_OWNERDRAWFIXED` 样式的 `CListCtrl`。对于背景颜色,可采用 `SetBkColor` 或者在 `OnDrawItem` 和 `OnDrawSubItem` 事件中使用 `CDC` ...
本文主要探讨了使用Visual C++(简称VC)及其集成的Microsoft Foundation Classes(MFC)框架来进行界面美化的各种方法。文章适合具有一定MFC基础的开发者阅读,特别是对于MFC框架的基本运作原理、Windows消息机制...
6. **利用CHeaderCtrl**:如果树形控件有自定义的列头,也可以使用`CHeaderCtrl`来设置列头的字体。同样,通过`CHeaderCtrl::SetFont`和`CHeaderCtrl::GetItemRect`等函数可以实现这一功能。 综上所述,MFC中的树形...