过去我们使用 Stingray 树控件来描绘地图的图例。
现在我们要应用MFC
CTreeCtrl
来完成这项工作。 Stingray 控件的优点是您可以轻松更改特殊项目的边界矩形。为了绘制图像和文本,我们使用了 OnPaint
方法。
MFC API 列出了方法
GetItemRect
。尽管在互联网上进行了研究,但我们没有找到为特定项目设置矩形的等效方法。
如果有人可以向我们展示如何更改项目的边界矩形以创建地图图例,那就太好了。
提前致谢!
注意:更改项目矩形的高度和宽度可能就足够了。
项目的宽度由其内容(图像+文本)决定。高度可以通过调用
CTreeCtrl::
SetItemHeight() 方法(或发送 TVM_SETITEMHEIGHT 消息)来设置,尽管我一般不会推荐这样做,因为我认为系统会分配足够的垂直空间来容纳文本和图像(两者中的最大值,但您可以尝试)。最好完全避免自定义绘制,而是使用 Win32 提供的标准机制:图像的图像列表和标准文本绘制。为什么要真正使用OnPaint()
以上所有内容都不能满足您的需求吗?
SetItemHeight()
文档提到:
cyHeight
指定树视图中每个项目的新高度(以像素为单位)。如果这个参数小于图像的高度,那么它将被设置为图像的高度。
这意味着您可以通过图像的大小来控制项目的高度(图像列表的所有成员都具有相同的大小)。