1、加一个CTree contrl ID _MYTREE设置HASBUTTON 到ALWAYS SHOW SECLECTON的属性为TRUE
加一成员变量m_MyTree
2、BOOL CAaaDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// Add "About..." menu item to system menu.
// IDM_ABOUTBOX must be in the system command range.
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
// TODO: Add extra initialization here
//初始化树形控件节点
TV_INSERTSTRUCT TreeCtrlItem;
HTREEITEM hTreeItem;
TreeCtrlItem.hInsertAfter=TVI_LAST;
TreeCtrlItem.item.mask=TVIF_TEXT|TVIF_PARAM;
//设置第一级节点
TreeCtrlItem.hParent=TVI_ROOT;
TreeCtrlItem.item.pszText="C:";
TreeCtrlItem.item.lParam=1;
hTreeItem=m_MyTree.InsertItem(&TreeCtrlItem);
//设置第二级节点
TreeCtrlItem.hParent=hTreeItem;
TreeCtrlItem.item.lParam=10;
TreeCtrlItem.item.pszText="Program Files";
m_MyTree.InsertItem(&TreeCtrlItem);
TreeCtrlItem.item.pszText="My Documents";
m_MyTree.InsertItem(&TreeCtrlItem);
TreeCtrlItem.item.pszText="Windows";
m_MyTree.InsertItem(&TreeCtrlItem);
//设置第一级节点
TreeCtrlItem.hParent=TVI_ROOT;
TreeCtrlItem.item.pszText="D:";
TreeCtrlItem.item.lParam=1;
hTreeItem=m_MyTree.InsertItem(&TreeCtrlItem);
//设置第二级节点
TreeCtrlItem.hParent=hTreeItem;
TreeCtrlItem.item.lParam=10;
TreeCtrlItem.item.pszText="Program Files";
m_MyTree.InsertItem(&TreeCtrlItem);
TreeCtrlItem.item.pszText="My Documents";
m_MyTree.InsertItem(&TreeCtrlItem);
TreeCtrlItem.item.pszText="Windows";
m_MyTree.InsertItem(&TreeCtrlItem);
return TRUE; // return TRUE unless you set the focus to a control
}
3、重载
void CAaaDlg::OnSelchangedMytree(NMHDR* pNMHDR, LRESULT* pResult)
{
// NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
// TODO: Add your control notification handler code here
LPNMTVGETINFOTIPW pNMTreeView= reinterpret_cast<LPNMTVGETINFOTIPW>(pNMHDR);
CString StrPath;
CString StrInfo;
HTREEITEM CurItem=m_MyTree.GetSelectedItem();
TV_ITEM TreeCtrlItem;
TreeCtrlItem.hItem=CurItem;
m_MyTree.GetItem(&TreeCtrlItem);
StrInfo=m_MyTree.GetItemText(m_MyTree.GetSelectedItem());
long CurlParam= TreeCtrlItem.lParam;
if(CurlParam!=1)
{
TreeCtrlItem.hItem=m_MyTree.GetParentItem(m_MyTree.GetSelectedItem());
m_MyTree.GetItem(&TreeCtrlItem);
CurItem=TreeCtrlItem.hItem;
StrPath=m_MyTree.GetItemText(CurItem);
StrPath+="//";
StrPath+=StrInfo;
}
else
{
StrPath=StrInfo;
}
GetDlgItem(IDC_EDITINFO)->SetWindowText(StrPath);
*pResult = 0;
}