CTreeCtrl 项目的边界矩形

问题描述 投票:0回答:1

过去我们使用 Stingray 树控件来描绘地图的图例。

现在我们要应用MFC

CTreeCtrl
来完成这项工作。 Stingray 控件的优点是您可以轻松更改特殊项目的边界矩形。为了绘制图像和文本,我们使用了
OnPaint
方法。

MFC API 列出了方法

GetItemRect
。尽管在互联网上进行了研究,但我们没有找到为特定项目设置矩形的等效方法。

如果有人可以向我们展示如何更改项目的边界矩形以创建地图图例,那就太好了。

提前致谢!

注意:更改项目矩形的高度和宽度可能就足够了。

c++ tree mfc
1个回答
0
投票

项目的宽度由其内容(图像+文本)决定。高度可以通过调用

CTreeCtrl::
SetItemHeight() 方法(或发送 TVM_SETITEMHEIGHT 消息)来设置,尽管我一般不会推荐这样做,因为我认为系统会分配足够的垂直空间来容纳文本和图像(两者中的最大值,但您可以尝试)。最好完全避免自定义绘制,而是使用 Win32 提供的标准机制:图像的图像列表和标准文本绘制。为什么要真正使用
OnPaint()
以上所有内容都不能满足您的需求吗?

SetItemHeight()
文档提到:

cyHeight

指定树视图中每个项目的新高度(以像素为单位)。如果这个参数小于图像的高度,那么它将被设置为图像的高度。

这意味着您可以通过图像的大小来控制项目的高度(图像列表的所有成员都具有相同的大小)。

© www.soinside.com 2019 - 2024. All rights reserved.