List Control 可编辑任意item文本,设置行高



在Windows编程中,ListView(List Control)控件是一种常见的用户界面元素,用于显示一系列项,通常包括文本和图标。在本教程中,我们将探讨如何使List Control能够编辑任意item的文本以及如何设置行高,这些都是通过Owner Draw技术来实现的。 **Owner Draw技术** Owner Draw是指控件的所有者(通常是窗口类)负责绘制控件的过程,而不是由系统默认的绘制机制处理。通过启用Owner Draw,我们可以自定义ListView控件的外观,包括文本、颜色、图标等,以满足特定需求。这为我们提供了极大的灵活性,可以创建具有独特视觉效果的ListView。 **编辑任意item文本** 1. **启用编辑功能**:我们需要为ListView添加一个编辑框(Edit Control)以便用户输入新的文本。当用户选择某一行(item)时,我们可以创建一个临时的编辑框,并将其位置和大小设置为选中item的位置。编辑框的初始文本应为当前item的文本。 2. **处理消息**:我们需要监听`WM_NOTIFY`消息,当用户完成编辑并按下回车键时,捕获这个消息,然后从编辑框中获取新的文本并更新到对应的ListView item。 3. **取消编辑**:同样,当用户取消编辑或按下Esc键时,删除编辑框并恢复原来的item文本。 4. **保存更改**:确保在用户编辑后,将新的文本存储到数据结构中,以便在ListView重新绘制时显示正确的文本。 **设置行高** 1. **使用LVS_OWNERDRAWFIXED风格**:为了设置固定行高,我们需要在创建ListView时指定`LVS_OWNERDRAWFIXED`风格。这将使所有item的行高统一,便于我们后续进行自定义。 2. **重写OnMeasureItem**:我们需要重写父类的`OnMeasureItem`函数,该函数会在创建新item时调用。在这个函数中,根据需要设定行高的像素值,然后返回这个值。 3. **调整item高度**:如果你希望在运行时改变行高,可以在需要时调用`SetItemHeight`函数,传入新的行高值和item的索引。 **示例代码片段** ```cpp void CMyListView::OnDrawItem(int nIDCtl, CDC* pDC, LPDRAWITEMSTRUCT lpDIS) { // 在这里绘制item,包括文本和背景 } void CMyListView::OnMeasureItem(int nIDCtl, LPMEASUREITEMSTRUCT lpMIS) { lpMIS->itemHeight = 32; // 设置行高为32像素 } void CMyListView::OnLvnBeginLabelEdit(NMHDR* pNMHDR, LRESULT* pResult) { NMLVDISPINFO* pDispInfo = reinterpret_cast<NMLVDISPINFO*>(pNMHDR); if (pDispInfo->item.pszText != LPSTR_TEXTCALLBACK) { // 创建并显示编辑框 } *pResult = 0; } void CMyListView::OnLvnEndLabelEdit(NMHDR* pNMHDR, LRESULT* pResult) { NMLVDISPINFO* pDispInfo = reinterpret_cast<NMLVDISPINFO*>(pNMHDR); if (pDispInfo->item.pszText != NULL && pDispInfo->item.iItem != -1) { // 更新item文本并保存更改 } *pResult = 0; } ``` 以上就是实现List Control可编辑任意item文本以及设置行高的基本步骤。在提供的`ListDemo.sln`解决方案中,你可以找到完整的代码实现。通过编译和运行`ListDemo`项目,你可以在debug模式下查看和测试这个功能。记得检查项目中的代码,理解每个部分的作用,以便更好地掌握Owner Draw技术和ListView的自定义绘制。













































- 1

- 粉丝: 4w+
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 计算机信息安全技术专业优秀教学计划安排.doc
- 智能家居系统平台分析-智建社区.docx
- 西门子PLC控制的五层电梯系统.doc
- 基于单片机温度测试系统硬件设计.doc
- 互联网背景下新媒体广告的传播方式及营销策略.docx
- 魔兽世界网络游戏推广营销方案.doc
- 互联网+背景下社区新媒体创新模式探究.docx
- 5G网络的端到端客户感知评估方法.docx
- 数控铣床FANUC系统编程代码.doc
- php页面静态化学习笔记.doc
- 基于Socket聊天室(C#版).doc
- 提升中学教师教育信息化素养策略初探.docx
- 中南大学物联网工程专业培养技术方案.doc
- 信息化时代医院图书馆精细化管理与服务质量提升.docx
- 综合布线工程企业全面预算管理取得实效的关键因素分析.docx
- 技术理性批判视域下的网络化办公分析.docx



- 1
- 2
- 3
- 4
- 5
- 6
前往页