上代码。在WM_CREATE 消息中:
hTree = CreateWindow ( TEXT("SysTreeView32"),TEXT(""),
WS_VISIBLE|WS_CHILD|WS_VSCROLL|WS_DLGFRAME| TVS_HASBUTTONS|TVS_HASLINES|TVS_LINESATROOT,// +、根连线、子连线
0,0,0,0,
hwnd,0,hInstance,0);
TVITEM ti[5];
TVINSERTSTRUCT ts[5]; ti[0].mask = TVIF_TEXT;
ti[0].pszText = TEXT("根条目");
ts[0].hParent = TVI_ROOT;
ts[0].hInsertAfter = TVI_LAST;
ts[0].item = ti[0];
SendMessage((HWND)hTree,TVM_INSERTITEM,0,(LPARAM)&ts[0]); for(int i=1;i<5;++i)
{
ti[i].mask = TVIF_TEXT;
ti[i].pszText = TEXT("子条目"); ts[i].hParent = ti[0].hItem ;
ts[i].hInsertAfter = TVI_LAST;
ts[i].item = ti[i]; SendMessage((HWND)hTree,TVM_INSERTITEM,0,(LPARAM)&ts[i]);
}
return 0;CreateWinodw 参数中的 4 个 0 请忽视,后面在 WM_SIZE 中调整树形视图窗口大小。运行结果(只有根条目插入了,子条目没插入)。跟踪是子条目的父结点句柄 ti[0].hItem 没有获取,问题是不知道怎么获取。运行截图:
hTree = CreateWindow ( TEXT("SysTreeView32"),TEXT(""),
WS_VISIBLE|WS_CHILD|WS_VSCROLL|WS_DLGFRAME| TVS_HASBUTTONS|TVS_HASLINES|TVS_LINESATROOT,// +、根连线、子连线
0,0,0,0,
hwnd,0,hInstance,0);
TVITEM ti[5];
TVINSERTSTRUCT ts[5]; ti[0].mask = TVIF_TEXT;
ti[0].pszText = TEXT("根条目");
ts[0].hParent = TVI_ROOT;
ts[0].hInsertAfter = TVI_LAST;
ts[0].item = ti[0];
SendMessage((HWND)hTree,TVM_INSERTITEM,0,(LPARAM)&ts[0]); for(int i=1;i<5;++i)
{
ti[i].mask = TVIF_TEXT;
ti[i].pszText = TEXT("子条目"); ts[i].hParent = ti[0].hItem ;
ts[i].hInsertAfter = TVI_LAST;
ts[i].item = ti[i]; SendMessage((HWND)hTree,TVM_INSERTITEM,0,(LPARAM)&ts[i]);
}
return 0;CreateWinodw 参数中的 4 个 0 请忽视,后面在 WM_SIZE 中调整树形视图窗口大小。运行结果(只有根条目插入了,子条目没插入)。跟踪是子条目的父结点句柄 ti[0].hItem 没有获取,问题是不知道怎么获取。运行截图:
解决方案 »
- 关于变量定义的一个小问题
- 在辅线程里怎么与主线程消息通信?
- vc,右键快捷菜单,那位老兄帮忙讲讲,谢谢啦!!
- 》》》》菜鸟问题:如何在运行期获得CEDIT 的内容。。《〈〈〈
- 如何通过串口设置无线modem不回传
- 如何将.BMP文件包含进联编后的exe中去?
- 请问:如何修改系统的日期?
- 还是hook的问题,为什么我在CallWndProc能捕捉到WM_NCPAINT消息,在CallWndRetProc中却捕捉不到?在GetMsgProc中也捕捉不到。
- 带表格、图片的文字编辑界面的实现
- ===关于listctl的又一问?===
- creatfile函数的dwShareMode变量
- 推荐一些有用的网站
hTree = CreateWindow ( L"SysTreeView32",L"",
WS_VISIBLE|WS_CHILD|WS_VSCROLL|WS_DLGFRAME|
TVS_HASBUTTONS|TVS_HASLINES|TVS_LINESATROOT,// +、根连线、子连线
0,70,100,100,
hWnd,500,g_hInst,0);
TVITEM ti[5];
TVINSERTSTRUCT ts[5]; ti[0].mask = TVIF_TEXT;
ti[0].pszText = TEXT("根条目");
ts[0].hParent = TVI_ROOT;
ts[0].hInsertAfter = TVI_LAST;
ts[0].item = ti[0];
HWND h = (HWND)SendMessage((HWND)hTree,TVM_INSERTITEM,0,(LPARAM)&ts[0]); int i;
for(i=1;i<5;++i)
{
ti[i].mask = TVIF_TEXT;
ti[i].pszText = TEXT("子条目"); ts[i].hParent = h;//ti[0].hItem;
ts[i].hInsertAfter = TVI_LAST;
ts[i].item = ti[i]; SendMessage((HWND)hTree,TVM_INSERTITEM,0,(LPARAM)&ts[i]);
}
多谢指导。再请教几个问题:怎么修改树形视图的标签文本,怎么上下移动树形视图的标签?我百度了网上张春旺的方法,没有成功。望能够出一些示例代码。附图:一、修改标签文本二、上移或下移标签
请参看TVINSERTSTRUCT结构体中的HTREEITEM hParent;
HTREEITEM hInsertAfter;
这两个成员的说明