C++中,如何将树形控件添加到对话框中,让树形控件浏览本地磁盘

C++中,如何将树形控件添加到对话框中,让树形控件浏览本地磁盘,第1张

1.添加树形视图控件

2.用向导创建其成员变量CTreeCtrl

m_trdisktree

3.创建TVN_

SELCHANGED响应事件,Edit

Code键

4.代码如下

void

CDiskCataDlg::OnSelchangedTrdisktree(NMHDR*

pNMHDR,

LRESULT*

pResult)

{

NM_TREEVIEW*

pNMTreeView

=

(NM_TREEVIEW*)pNMHDR

CFileFind

filefd

HTREEITEM

parent

HTREEITEM

rootitem=m_trdisktree.GetSelectedItem()

if(m_trdisktree.GetChildItem(rootitem))return

parent=rootitem

CString

rootstr=m_trdisktree.GetItemText(rootitem)

CString

temp

CString

lstr

if(rootstr.Find("\\")==2)

{

lstr.Format("%s*.*",rootstr)

}

else

{

CString

strparent

while(1)

{

parent=m_trdisktree.GetParentItem(parent)

strparent=m_trdisktree.GetItemText(parent)

if(strparent.Find("\\")==2)

goto

end

temp+=strparent

temp+="\\"

}

end:

CString

root=m_trdisktree.GetItemText(parent)

lstr.Format("%s%s%s\\*.*",root,temp,rootstr)

}

BOOL

bfinded=filefd.FindFile(lstr)

while(bfinded)

{

bfinded=filefd.FindNextFile()

CString

filepath

if(filefd.IsDirectory()&&!filefd.IsDots()){

SHGetFileInfo(filefd.GetFilePath(),0,&fileinfo,sizeof(fileinfo),

SHGFI_ICON)

imindex=imlst.Add(fileinfo.hIcon)

m_trdisktree.InsertItem(filefd.GetFileName(),imindex,imindex,rootitem)

}

}

*pResult

=

0

}

看完这段代码,就一定会啦

1.在资源编辑器中右键单击你的树形控件,事件,然后选择NM_RCLICK,双击它,确定,就添加了树形控件的消息响应,然后找到对应的消息响应处理函数,如下是我的例子:

void

CViewTreeBase::OnNMRClick(NMHDR

*pNMHDR,

LRESULT

*pResult)

{

UNREFERENCED_PARAMETER(pNMHDR)

CPoint

point

GetCursorPos(&point)

ScreenToClient(&point)

UINT

uFlags

=

0

HTREEITEM

click

=

HitTest(point,

&uFlags)

//click和uFlags能定位你单击的具体项目,参看参考资料。

//在这里你可以进行你的添加节点的 *** 作,相信你会天际节点。如果需要添加菜单,你可以搜搜右键添加菜单,然后在这里d出菜单。具体的,看你需求,再做解答。

}

2.也可以自己派生一个类,继承于CTreeCtr,从类向导中进行添加1中消息,如上的例子是我派生的类。


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

原文地址: http://www.outofmemory.cn/bake/11937460.html

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

发表评论

登录后才能评论

评论列表(0条)

保存