日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Win32 树视图控件的基本使用

發布時間:2025/4/14 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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

?

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的Win32 树视图控件的基本使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。