如何控制 树控件 的图片宽度?

Cline 2004-06-30 10:57:28
最初想在树控件的Item上显示两个图标(16x16),但找一半天没有这样的树控件。那就把图标做成32x16的,虽然可以实现要求的功能。但是层次之间的缩进变大了,有没有办法让层与层之间的缩进保持小图标(16)的情况?

下面是32x16的情形:
-[AA]目录
|
|--[BB]第一章
|
|--[CC]第一节

期望结果:
-[AA] 目录
|
|-[BB]第一章
|
|-[CC]第一节
...全文
141 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
Cline 2004-07-08
  • 打赏
  • 举报
回复
加stateimage就可以解决了。谢谢各位!
Zark 2004-07-02
  • 打赏
  • 举报
回复
如果TreeView_SetIndent()函数不能奏效,试试响应NM_CUSTOMERDRAW消息.
Zark 2004-07-01
  • 打赏
  • 举报
回复
建议使用TreeView_SetIndent()函数.

lixiaosan 2004-07-01
  • 打赏
  • 举报
回复
做成一个32×16的bmp,然后导入。

m_bmp.LoadBitmap(IDB_BITMAP1);
m_imageList.Create(16, 16, ILC_COLORDDB | ILC_MASK, 0, 2);
m_imageList.Add(&m_bmp, RGB(192,192,192));
m_bmp.DeleteObject();
m_tree.SetImageList(&m_imageList, TVSIL_NORMAL);
Cline 2004-07-01
  • 打赏
  • 举报
回复
目标:

图是32×16,缩进要小.(与16x16一样就行,不要缩进变大)
Cline 2004-07-01
  • 打赏
  • 举报
回复
Zark(金陵五月):

用SetIndent()不成功。测试结果如下:
m_wndModelNodes.SetIndent(19)
m_wndModelNodes.GetIndent();//Return 19
m_ModelImageList.Create(IDB_MODEL_NODES,32,12,RGB(255,0,255));
m_wndModelNodes.SetImageList(&m_ModelImageList,TVSIL_NORMAL);
m_wndModelNodes.SetImageList(&m_ModelImageList,TVSIL_STATE);
m_wndModelNodes.GetIndent();//Return 35
m_wndModelNodes.SetIndent(19)
m_wndModelNodes.GetIndent();//Return 35
pmwin 2004-07-01
  • 打赏
  • 举报
回复
CBitmap Bitmap;
Bitmap.LoadBitmap(IDB_TREE);//IDB_TREE(所加的图片的id)
m_ImageTree.Create(16, 16, ILC_COLOR8|ILC_MASK, 7, 0);
m_ImageTree.Add(&Bitmap, RGB(0,222,255));
SetImageList( &m_ImageTree, LVSIL_NORMAL);
m_ImageTree.Detach();
Bitmap.Detach();
DeleteAllItems();
pmwin 2004-07-01
  • 打赏
  • 举报
回复
用CImageList类的Create,前两个参数是图片的大小。
快乐鹦鹉 2004-07-01
  • 打赏
  • 举报
回复
图是32×16,意思宽是32,缩进变成16,不会盖住图啊?
lixiaosan 2004-07-01
  • 打赏
  • 举报
回复
查了以下msdn,
m_tree.SetIndent();
可以设置
但是,系统默认的就是最小了。。

唉。。。。。。
lixiaosan 2004-07-01
  • 打赏
  • 举报
回复
我明白你意思了
你是想把line向左移动。
但是这好像是控件定义了的,不知道重载控件能不能实现
lixiaosan 2004-07-01
  • 打赏
  • 举报
回复
取消 lines at boot 试试
Cline 2004-07-01
  • 打赏
  • 举报
回复
我试了,缩进还是比较大。

能不能把你们的代码及工程发给我? 如果成功实现另加200分酬金!
Clineyuan@sina.com.cn

先谢过了!
Cline 2004-07-01
  • 打赏
  • 举报
回复
目标:
我想在每一个Item前显示两个图标(都是16x16),但Windows的TreeCtrl没有这个功能。那就把图标都做成32x16的,但显示的结果如下(A):

___[|16|16|]ABC
|____[|16|16|]EFT (A)
|____[|16|16|]xyz



因为层次之间的缩进太大,想变小一点,如下:




_[|16|16|]ABC
|_[|16|16|]EFT (B)
|_[|16|16|]xyz

lixiaosan 2004-07-01
  • 打赏
  • 举报
回复
你是不是想把图标从32×16 变成 16×16,然后加载?
lixiaosan 2004-07-01
  • 打赏
  • 举报
回复
这样呢
m_imageList.Create(32, 16, ILC_COLORDDB | ILC_MASK, 0, 2);
zxy98 2004-07-01
  • 打赏
  • 举报
回复
SetIcon(m_hIcon, FALSE); // Set small icon
m_ImageTree.Create(16, 16, ILC_COLOR8|ILC_MASK, 7, 0);
m_tree.SetIndent(19);
即可
Cline 2004-07-01
  • 打赏
  • 举报
回复
lixiaosan(小三):

不行呀! 图标只显示了一半。


//前面我没把目标表达清楚。

图片中每一个都是32×16,缩进要小.(与16x16一样就行,不要缩进变大)

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧