VC treectrl如何设置成可编辑的样子

VC treectrl如何设置成可编辑的样子,第1张

这样设置试一下:

imagelist4tree->create(16,16,

ilc_color32,

4,

4)

去掉:

imagelist4tree->setbkcolor(rgb(255,

255,

255))

另外,tvsil_normal意味着把图标设置成正常尺寸,正常尺寸的图标是32

*

32大小,而楼主写-imagelist4tree->create(16,16,0,4,4)

把图标设置成了小图标,虽然显示没什么问题,但太小看上去不舒服,这样再改一下,看看效果是不是会更好:

imagelist4tree->create(32,32,

ilc_color32,

4,

4)

图标文件(*.ico)是有很多种类的,楼主可能没做过图标文件的程序编码,因此在这里值得提醒一下,不同种类的图标需要用不同的程序代码,并不是千篇一律的。譬如图标文件中的图标种类会影响到ilc_color32和16*16/32*32等参数的显示效果。

treectrl中设置两行间距方法:

css代码实现

<style>

table

{ border-collapse: separateborder-spacing: 10px}

</style>

[/html]

树形控件可以用于树形的结构,其中有一个根接点(Root)然后下面有许多子结点,而每个子结点上有允许有一个或多个或没有子结点。MFC中使用CTreeCtrl类来封装树形控件的各种 *** 作。通过调用

BOOL Create( DWORD dwStyle, const RECT&rect, CWnd* pParentWnd, UINT nID )创建一个窗口,dwStyle中可以使用以下一些树形控件的专用风格:

TVS_HASLINES 在父/子结点之间绘制连线

TVS_LINESATROOT 在根/子结点之间绘制连线

TVS_HASBUTTONS 在每一个结点前添加一个按钮,用于表示当前结点是否已被展开

TVS_EDITLABELS 结点的显示字符可以被编辑

TVS_SHOWSELALWAYS 在失去焦点时也显示当前选中的结点

TVS_DISABLEDRAGDROP 不允许Drag/Drop

TVS_NOTOOLTIPS 不使用ToolTip显示结点的显示字符

在树形控件中每一个结点都有一个句柄(HTREEITEM),同时添加结点时必须提供的参数是该结点的父结点句柄,(其中根Root结点只有一个,既不可以添加也不可以删除)利用

HTREEITEM InsertItem( LPCTSTR lpszItem, HTREEITEM hParent = TVI_ROOT, HTREEITEM hInsertAfter = TVI_LAST )可以添加一个结点,pszItem为显示的字符,hParent代表父结点的句柄,当前添加的结点会排在hInsertAfter表示的结点的后面,返回值为当前创建的结点的句柄。

m_TreeCtrl Control CTreeCtrl

同时利用“MESSAGES MAP”为各命令按钮增加控制功能函数。

然后在代码文件VCTREEDlg.CPP中分别加入如下控制代码:

(1)在文件开始处增加图像列表定义

CImageList Cil1,Cil2//大小图标像列表

(2)在初始化文件开始处增加代码

BOOL CVCTREEDlg::OnInitDialog()

{ CDialog::OnInitDialog()

.....//原来其它代码

// TODO: Add extra initialization here

// 此处开始增加代码

CVCTREEApp *pApp=(CVCTREEApp *)AfxGetApp()//创建图象列表

Cil1.Create(16,16,ILC_COLOR,2,2)

Cil1.Add(pApp->LoadIcon(IDI_PM))

Cil1.Add(pApp->LoadIcon(IDI_CJ))

m_TreeCtrl.SetImageList(&Cil1,TVSIL_NORMAL) //设置图象列表

DWORD dwStyles=GetWindowLong(m_TreeCtrl.m_hWnd,GWL_STYLE)//获取树控制原风格

dwStyles|=TVS_EDITLABELS|TVS_HASBUTTONS|TVS_HASLINES|TVS_LINESATROOT

SetWindowLong(m_TreeCtrl.m_hWnd,GWL_STYLE,dwStyles)//设置风格

char * CJ[4]={"玉溪卷烟厂","云南卷烟厂","沈阳卷烟厂","成都卷烟厂"}//根数据名称

char * PM[4][5]={

{"红梅一","红梅二","红梅三","红梅四","红梅五"},//产品数据项

{"白梅一","白梅二","白梅三","白梅四","白梅五"},

{"绿梅一","绿梅二","绿梅三","绿梅四","绿梅五"},

{"青梅一","青梅二","青梅三","青梅四","青梅五"}}

int i,j

HTREEITEM hRoot,hCur//树控制项目句柄

TV_INSERTSTRUCT TCItem//插入数据项数据结构

TCItem.hParent=TVI_ROOT//增加根项

TCItem.hInsertAfter=TVI_LAST//在最后项之后

TCItem.item.mask=TVIF_TEXT|TVIF_PARAM|TVIF_IMAGE|TVIF_SELECTEDIMAGE//设屏蔽

TCItem.item.pszText="数据选择"

TCItem.item.lParam=0//序号

TCItem.item.iImage=0//正常图标

TCItem.item.iSelectedImage=1//选中时图标

hRoot=m_TreeCtrl.InsertItem(&TCItem)//返回根项句柄

for(i=0i<4i++){//增加各厂家

TCItem.hParent=hRoot

TCItem.item.pszText=CJ[i]

TCItem.item.lParam=(i+1)*10//子项序号

hCur=m_TreeCtrl.InsertItem(&TCItem)

for(j=0j<5j++){//增加各产品

TCItem.hParent=hCur

TCItem.item.pszText=PM[i][j]

TCItem.item.lParam=(i+1)*10+(j+1)//子项序号

m_TreeCtrl.InsertItem(&TCItem)

}

m_TreeCtrl.Expand(hCur,TVE_EXPAND)//展开树

}

m_TreeCtrl.Expand(hRoot,TVE_EXPAND)//展开上一级树

return TRUE // return TRUE unless you set the focus to a control

}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/tougao/11246082.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存