Win32 树视图控件的基本使用
首先参阅
https://blog.csdn.net/bcbobo21cn/article/details/106287676
认识Windows公共控件库的使用;
一 创建树视图
首先用如下代码看一下,创建树视图控件是否成功返回句柄;
hTree = CreateWindow("SysTreeView32", NULL,
WS_CHILD | WS_BORDER |WS_VISIBLE | TVS_HASLINES | TVS_HASBUTTONS | TVS_LINESATROOT,
10, 20, 200, 400, hwnd, NULL, NULL, NULL);
wsprintf(szBuffer, "0x%X",hTree);
MessageBox(NULL,szBuffer,TEXT("树视图句柄"),0);
创建成功;但此时树视图是空的;只有一个框;
二 添加第一个结点
代码;
TvInsertItem.hParent = NULL;
TvInsertItem.hInsertAfter = TVI_LAST;
TvInsertItem.item.mask = TVIF_TEXT;
TvInsertItem.item.pszText = pStrText;
//TVI_LAST:insert the item at the end of list
hitema=SendMessage(hTree, TVM_INSERTITEM, 0, (LPARAM)(&TvInsertItem));;
添加结点的操作为:
定义 TVINSERTSTRUCT 结构体对象TvInsertItem,此结构体代表一个结点;
为TvInsertItem赋值,.hParent是此结点的父,根结点填为NULL;
向树视图发送消息,第一个参数是树视图句柄,第四个参数是TvInsertItem结构体地址并转为LPARAM类型;
创建成功返回的是此次创建的结点的句柄,为 HTREEITEM 类型;
效果如下;
工程;
三 添加更多结点
创建子结点,.hParent成员填为父结点句柄;如果再创建根结点,.hParent填为NULL;
效果如下;
码:
#include <windows.h>
#include <commctrl.h>
#include "resource.h"LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);HINSTANCE hInst;
TCHAR szClassName[] = TEXT("win32TreeDemo");
HWND hTree;int WINAPI
WinMain (HINSTANCE hThisInstance,HINSTANCE hPrevInstance,LPSTR lpszArgument,int nFunsterStil)
{HWND hwnd;MSG messages;WNDCLASSEX wincl;hInst = hThisInstance;wincl.hInstance = hThisInstance;wincl.lpszClassName = szClassName;wincl.lpfnWndProc = WindowProcedure;wincl.style = CS_DBLCLKS;wincl.cbSize = sizeof (WNDCLASSEX);wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);wincl.hCursor = LoadCursor (NULL, IDC_ARROW);wincl.lpszMenuName = MAKEINTRESOURCE (IDC_WIN32TREEDEMO);wincl.cbClsExtra = 0;wincl.cbWndExtra = 0;wincl.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);if (!RegisterClassEx (&wincl))return 0;hwnd = CreateWindowEx (0,szClassName,TEXT("win32TreeDemo"),WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,300,500,HWND_DESKTOP,NULL,hThisInstance,NULL);ShowWindow (hwnd, nFunsterStil);while (GetMessage (&messages, NULL, 0, 0)){TranslateMessage(&messages);DispatchMessage(&messages);}return messages.wParam;
}LRESULT CALLBACK
WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{PAINTSTRUCT ps;HDC hdc;RECT rt;int ret;char szBuffer[100];char* pStrText="根结点AAAA";char* pStrText2="子结点AABB";char* pStrText3="子结点AACC";char* pStrText4="根结点BBBB";TVINSERTSTRUCT TvInsertItem, TvInsertItem2, TvInsertItem3, TvInsertItem4;HTREEITEM hitema, hitemb, hitemab, hitemac;switch (message){case WM_COMMAND:switch (LOWORD(wParam)){case IDM_ABOUT:MessageBox (hwnd, TEXT ("win32TreeDemo v1.0\nCopyright (C) 2020\n by bo"),TEXT ("win32TreeDemo"), MB_OK | MB_ICONINFORMATION);break;case IDM_EXIT:DestroyWindow(hwnd);break;default:return DefWindowProc(hwnd, message, wParam, lParam); }break;case WM_CREATE:hTree = CreateWindow("SysTreeView32", NULL, WS_CHILD | WS_BORDER |WS_VISIBLE | TVS_HASLINES | TVS_HASBUTTONS | TVS_LINESATROOT,10, 20, 200, 400, hwnd, NULL, NULL, NULL);//wsprintf(szBuffer, "0x%X",hTree);//MessageBox(NULL,szBuffer,TEXT("树视图句柄"),0); TvInsertItem.hParent = NULL;TvInsertItem.hInsertAfter = TVI_LAST;TvInsertItem.item.mask = TVIF_TEXT;TvInsertItem.item.pszText = pStrText; //TVI_LAST:insert the item at the end of listhitema=SendMessage(hTree, TVM_INSERTITEM, 0, (LPARAM)(&TvInsertItem));;TvInsertItem2.hParent = hitema;TvInsertItem2.hInsertAfter = TVI_LAST;TvInsertItem2.item.mask = TVIF_TEXT;TvInsertItem2.item.pszText = pStrText2; hitemab=SendMessage(hTree, TVM_INSERTITEM, 0, (LPARAM)(&TvInsertItem2));;TvInsertItem3.hParent = hitema;TvInsertItem3.hInsertAfter = TVI_LAST;TvInsertItem3.item.mask = TVIF_TEXT;TvInsertItem3.item.pszText = pStrText3; hitemac=SendMessage(hTree, TVM_INSERTITEM, 0, (LPARAM)(&TvInsertItem3));;TvInsertItem4.hParent = NULL;TvInsertItem4.hInsertAfter = TVI_LAST;TvInsertItem4.item.mask = TVIF_TEXT;TvInsertItem4.item.pszText = pStrText4; hitemb=SendMessage(hTree, TVM_INSERTITEM, 0, (LPARAM)(&TvInsertItem4));;break;case WM_PAINT:hdc = BeginPaint(hwnd, &ps); GetClientRect(hwnd, &rt); EndPaint(hwnd, &ps);break;case WM_DESTROY:PostQuitMessage (0);break;default:return DefWindowProc (hwnd, message, wParam, lParam);}return 0;
}
资源文件,头文件;
#include "resource.h"
#include <windows.h>/
//
// Menu
//IDC_WIN32TREEDEMO MENU
BEGINPOPUP "&File"BEGINMENUITEM "E&xit", IDM_EXITENDPOPUP "&Help"BEGINMENUITEM "&About ...", IDM_ABOUTEND
END
#define IDM_EXIT 10001
#define IDM_ABOUT 10002#define IDC_WIN32TREEDEMO 10101
#define IDD_ABOUTBOX 10102
Win32 树视图控件的基本使用相关推荐
- linux sort -w32,WIN32汇编: 31.列表视图控件
第三十一课 列表视图控件 本课中我们将学习如何创建和使用列表视图控件. 理论: 列表视图控件和树型视图.丰富文本编辑控件一样是通用控件的一种.可能您都已经知道了列表视图控件,只不过是不知道它的确切名字 ...
- PIE SDK图层树伙伴控件示例
1. 功能简介 TocControl控件的主要作用是显示当前加载的图层有哪些.采用什么样的符号等,目的是使用户对当前加载的数据和结构有一个总体的把握.与之相关联的伙伴控件有MapControl,Pa ...
- LVITEM结构-列表视图控件的一个数据结构
列表视图控件(List Control) 列表视图控件是一种非常常用的控件,在需要以报表形式显示数据时,列表控件通常是最好的选择,许多专用的数据报表控件,也是在它的基础上派生而来.与树视图类似,列表控 ...
- 树型控件TreeView的几种用法
1 基本用法 void TreeViewDataBind() { //首先清除树型控件内的结点 this.TreeView1.Nodes ...
- VS2010/MFC编程入门之二十九(常用控件:列表视图控件List Control 下)
上一节是关于列表视图控件List Control的上半部分,简单介绍了列表视图控件,其通知消息的处理和有关结构体的定义.本节继续讲解下半部分,包括列表视图控件的创建.CListCtrl类的主要成员函数 ...
- 学习笔记(五)——数据适配器、数据表、数据网格视图控件的综合应用。
学习笔记(五)--数据适配器.数据表.数据网格视图控件的综合应用. 1. 批量修改 修改包括增加,删除以及更新3个操作,所以声明实力化3个SQL命令分别应用于插入,删除以及修改 将声明的SQL命令连 ...
- vc++树状控件(TreeCtrl)用法
/添加树状/ HTREEITEM hItem,hChildItem; //定义树状控件的句柄 CTreeCtrl *pTree = (CTreeCtrl*)GetDlgItem(IDC_TREE);/ ...
- GTK构件 --- 文本视图控件GTKtextview
GTK构件 - 文本视图控件GTKtextview 文本视图控件(GtkTextView)是用以取代原有的文本编辑(GtkText)控件的,它包括一个文本缓冲区(GtkTextBuffer),用来 ...
- C#|Winform编程之(列表视图控件)listView控件
列表视图控件主要功能是将对象(文件.图片.项目)等通过列表的形式展示出来.就像我们在windows操作系统中点开每个文件夹之后对于文件夹下的文件,都是一种列表视图.我们可以选择大图标视图.小图标视图. ...
最新文章
- JS验证控制输入中英文字节长度(input、textarea等)
- hibernate-jpa/hibernate-jpa-2.1-api-1.0.0.final.jar源代码下载地址
- WEB前端学习五 js什么是引用类型
- js模板引擎 之handlebars.js
- 【华为云技术分享】如何处理暗数据?
- python改文件名_python 怎么改文件名
- Digix联合创始人:在接下来的12个月中 比特币将被称为真正的价值存储
- Web应用开发基本技术及思想
- python,pygame下载与安装详细步骤
- C# OpenCV OpenCVSharp应用实例--LCD屏幕脏污检测
- 拉结尔6月21日服务器维护,《拉结尔》3月5日更新公告-S6赛季降临
- 基于NXP i.MX 8M Plus处理器的核心板和开发板有什么功能
- python指纹识别_Python实现指纹识别你见过没?
- Android百度地图
- 【python初学者日记】selenium初体验——“秒杀商品”、“清空购物车”技能养成记(一)
- CAD进阶练习(二)
- LYNC 中文版安装详解-第一部分
- Beam Failure Detection
- SLF4J: The requested version 1.5.8 by your slf4j binding is not compatible with [1.6] SLF4J: See htt
- 经典一百句(俞敏洪推荐)