抓住最主要的就可以了
OnSelchangedTree(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
HTREEITEM hCurrent = m_TreeMusic.GetSelectedItem();
HTREEITEM hCurrentParent = m_TreeMusic.GetParentItem(hCurrent);
LVITEM li;
li.iItem=count;
li.mask=LVIF_TEXT;
li.pszText=SN;
li.iSubItem=0;
int iItem=m_ListMusic.InsertItem(&li);
m_ListMusic.SetItemText(l,0,SN);
GetPrivateProfileString(sz,"name","",name,1000,FileName);
li.iSubItem=1;
m_ListMusic.SetItemText(l,1,name);
GetPrivateProfileString(sz,"Money","",money,5,FileName);
li.iSubItem=3;
m_ListMusic.SetItemText(l,3,money);
GetPrivateProfileString(sz,"Author","",author,20,FileName);
li.iSubItem=4;
m_ListMusic.SetItemText(l,4,author);
GetPrivateProfileString(sz,"Time","",time,15,FileName);
li.iSubItem=4;
m_ListMusic.SetItemText(l,5,time);
*pResult = 0;
}
InitTreeMusic()
{
CImageList* pInfoImages = new CImageList;
pInfoImages->Create(16, 16, ILC_COLOR8 | ILC_MASK, 2, 0);
pInfoImages->Add(AfxGetApp()->LoadIcon(IDI_ICON1));
pInfoImages->Add(AfxGetApp()->LoadIcon(IDI_ICON2));
m_TreeMusic.SetImageList(pInfoImages, TVSIL_NORMAL);
DWORD dwStyle;
dwStyle = m_ListMusic.GetStyle();
dwStyle |= LVS_EX_GRIDLINES |LVS_EX_FULLROWSELECT;//|LVS_SHOWSELALWAYS ;
m_ListMusic.SetBkColor(RGB(240,247,233));
m_ListMusic.SetTextBkColor(RGB(240,247,233));
m_ListMusic.SetExtendedStyle(dwStyle);
m_ListMusic.InsertColumn(0, _T("编号"), LVCFMT_LEFT,88);
m_ListMusic.InsertColumn(4, _T("作者"),LVCFMT_LEFT,68);
m_ListMusic.InsertColumn(5, _T("加入时间"),LVCFMT_LEFT,100);
HTREEITEM hTreeItem1;
HTREEITEM hTreeItem2;
hTreeItem1 = m_TreeMusic.InsertItem("name", 0, 1, TVI_ROOT, TVI_LAST); hTreeItem2 = m_TreeMusic.InsertItem("name1", 0, 1, hTreeItem1, TVI_LAST);
}
GetPrivateProfileString(sz,"name","",name,1000,FileName);是我读一个ini文件获得name项的字符将它给char name[20],你的程序可以根据情况自己改进。
主要就是OnSelchangedTree这个函数。
以下文章摘自“VC知识库”
========== List Control ==========
列表控制的主要功能
列表控制和视,就可以和列表控制一样进行各种操作。操作一个列表控制和视的基本方法为:创建列表控制;创建列表控制所需要的图像列表;向列表控制添加表列和表项;对列表进行各种控制,主要包括查找、排序、删除、显示方式、排列方式以及各种消息处理功能等;最后撤消列表控制。
对于一个列表控制,其最典型最常用的显示控制方式为:大图标方式、小图标方式、列表显示方式和详细资料显示方式。这可以通过设置其显示方式属性来实现。要控制列表所在窗口的风格,可通过功能函数GetWindowLong和SetWindowLong来实现,要控制列表图标的对齐方式,可通过设置列表窗口的风格LVS_ALIGNTOP或LVS_ALIGNLEFT来实现,
列表控制的对象结构
1、列表控制的建立方法
CListCtrl&listCtrl 定义列表对象的结构
Create 建立列表控制并绑定对象
列表控制CListCtrl::Create的调用格式如下:
BOOL Create( DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID );
其中参数dwStyle用来确定列表控制的风格;rect用来确定列表控制的大小和位置;pParentWnd用来确定列表控制的父窗口,通常是一个对话框;nID用来确定列表控制的标识。其中列表控制的风格可以是下列值的组合:
LVS_ALIGNLEFT 用来确定表项的大小图标以左对齐方式显示;
LVS_ALIGNTOP 用来确定表项的大小图标以顶对齐方式显示;
LVS_AUTOARRANGE 用来确定表项的大小图标以自动排列方式显示;
LVS_EDITLABELS 设置表项文本可以编辑,父窗口必须设有LVN_ENDLABELEDIT风格;
LVS_ICON 用来确定大图标的显示方式;
LVS_LIST 用来确定列表方式显示;
LVS_NOCOLUMNHEADER 用来确定在详细资料方式时不显示列表头;
LVS_NOLABELWRAP 用来确定以单行方式显示图标的文本项;
LVS_NOSCROLL 用来屏蔽滚动条;
LVS_NOSORTHEADER 用来确定列表头不能用作按钮功能;
LVS_OWNERDRAWFIXED 在详细列表方式时允许自绘窗口;
LVS_REPORT 用来确定以详细资料即报告方式显示;
LVS_SHAREIMAGELISTS用来确定共享图像列表方式;
LVS_SHOWSELALWAYS 用来确定一直显示被选中表项方式;
LVS_SINGLESEL 用来确定在某一时刻只能有一项被选中;
LVS_SMALLICON 用来确定小图标显示方式;
LVS_SORTASCENDING 用来确定表项排序时是基于表项文本的升序方式;
LVS_SORTDESCENDING 用来确定表项排序时是基于表项文本的降序方式;
2、列表控制的属性类
列表控制的属性类包括取得列表控制的背景色GetBkColor、设置列表控制的背景色SetBkColor、取得列表控制的图像列表GetImageList、设置列表控制的图像列表SetImageList、取得列表项数目GetItemCount、取得列表控制的属性GetItem、取得与表项相关的数据GetItemData、设置表项的属性SetItem、设置与表项相关的数值SetItemData、取得相关联的下一个表项GetNextItem、设置列表控制的文本颜色SetTextColor、取得列表控制的文本背景颜色GetTextBkColor、设置表项的最大数目SetItemCount和取得被选中表项的数目GetSelectedCount等。
3、列表控制的操作方法
列表控制的操作方法包括插入一个新的表项InsertItem、删除一个表项DeleteItem、排序表项SortItems、测试列表的位置HitTest、重绘表项RedrawItems、插入一个表列InsertColumn、删除一个表列DeleteColumn、编辑一个表项文本EditLabel和重绘一个表项DrawItem等。
列表控制的数据结构
列表控制中包含两个非常重要的数据结构LV_ITEM和LV_COLUMN。LV_ITEM用于定义列表控制的一个表项,LV_COLUMN用于定义列表控制的一个表列,其定义格式分别为:
typedef struct _LV_ITEM {
UINT mask; //结构成员屏蔽位
int iItem; //表项索引号
int iSubItem; //子表项索引号
UINT state; //表项状态
UINT stateMask; //状态有效性屏蔽位
LPTSTR pszText; //表项名文本
int cchTextMax; //表项名最大长度
int iImage; // 表项图标的索引号
LPARAM lParam; // 与表项相关的32位数
} LV_ITEM;
typedef struct _LV_COLUMN {
UINT mask; //结构成员有效性屏蔽位
int fmt; //表列对齐方式
int cx; //表列的象素宽度
LPTSTR pszText; //表列的表头名
int cchTextMax; //表列名的文本长度
int iSubItem; //与表列关联的子表项索引号
} LV_COLUMN;
其中fmt可以取如下值:
LVCFMT_CENTER 表列居中对齐
LVCFMT_LEFT 表列左对齐
up
如果我同时使用了List Control和Tree Control的两个控件来显示同一数据
怎样使List Control和Tree Control达到同步显示。
---1
|-2
|-3
----------------
| 2 ... |
| 3 ... |
----------------
操作树的时候,list要有对应的显示,反之亦然