⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 treeview.c

📁 《嵌入式Linux应用开发详解》中的源代码
💻 C
字号:
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <minigui/common.h>#include <minigui/minigui.h>#include <minigui/gdi.h>#include <minigui/window.h>#include <minigui/control.h>#include <minigui/mgext.h>#define IDC_CTRL1     100#define IDC_CTRL2     110#define IDC_CTRL3     120#define IDC_CTRL4     130#define IDC_CTRL5     140#define IDC_CTRL6     150static HWND hMainWnd = HWND_INVALID;static int ControlTestWinProc(HWND hWnd, int message, WPARAM wParam, LPARAM lParam){	static HWND hChildWnd1,hChildWnd2,hChildWnd3,hChildWnd4,hChildWnd5,hChildWnd6;	static TVITEMINFO tvItemInfo;	switch (message) {		case MSG_CREATE:		{			int i = 0;			PTVITEM ptvItem;			hChildWnd1 = CreateWindow ("treeview", 					"", 					WS_VISIBLE | WS_VSCROLL | WS_HSCROLL					| WS_BORDER | TVS_WITHICON | TVS_SORT, 					IDC_CTRL1, 					10, 20, 250, 150, hWnd, 0);			hChildWnd2 = CreateWindow ("Edit",					"Add a child to current node.",					WS_CHILD | WS_VISIBLE | WS_BORDER,					IDC_CTRL2,					10, 200, 250, 25, hWnd, 0);			hChildWnd3 = CreateWindow ("Edit",					"Find a node in treeview.",					WS_CHILD | WS_VISIBLE | WS_BORDER,					IDC_CTRL3,					10, 250, 250, 25, hWnd, 0);			hChildWnd4 = CreateWindow ("button",					"Add",					WS_CHILD | WS_VISIBLE | BS_DEFPUSHBUTTON,					IDC_CTRL4,					270, 200, 60, 25, hWnd, 0);			hChildWnd5 = CreateWindow ("button",					"Del",					WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,					IDC_CTRL5,					270, 300, 60, 25, hWnd, 0);			hChildWnd6 = CreateWindow ("button",					"Find",					WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,					IDC_CTRL6,					270, 250, 60, 25, hWnd, 0);						tvItemInfo.text = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";			SendMessage (hChildWnd1, TVM_ADDITEM, 0, (LPARAM) &tvItemInfo);						tvItemInfo.text = "b";			for (i = 0; i <= 10; i++)				SendMessage (hChildWnd1, TVM_ADDITEM, 0, (LPARAM) &tvItemInfo);						tvItemInfo.text = "ccccccccccc";			SendMessage (hChildWnd1, TVM_ADDITEM, 0, (LPARAM) &tvItemInfo);			tvItemInfo.text = "a.a";			ptvItem = (PTVITEM) SendMessage (hChildWnd1, TVM_GETROOT, 0, 0);			SendMessage (hChildWnd1, TVM_ADDITEM, (WPARAM) ptvItem->child, (LPARAM) &tvItemInfo);			tvItemInfo.text = "a.b";			SendMessage (hChildWnd1, TVM_ADDITEM, (WPARAM) ptvItem->child, (LPARAM) &tvItemInfo);		}		break;		case MSG_COMMAND:		{			int id   = LOWORD(wParam);//			int code = HIWORD(wParam);			char buffer[255];			switch (id)			{				case IDC_CTRL4:					SendMessage (hChildWnd2, MSG_GETTEXT, 99, (LPARAM) buffer);					if (buffer[0] != '\0') {						tvItemInfo.text = buffer;						SendMessage (hChildWnd1, TVM_ADDITEM, 0, (LPARAM) &tvItemInfo);					}				break;            							case IDC_CTRL5:					SendMessage (hChildWnd1, TVM_DELTREE, 0, 0);				break;								case IDC_CTRL6:				{					TVITEM* pp = NULL;					SendMessage (hChildWnd3, MSG_GETTEXT, 99, (LPARAM) buffer);					if (buffer[0] != '\0') {						SendMessage (hChildWnd1, TVM_FINDITEM, 								(WPARAM) &pp, (LPARAM) buffer);					}				}				break;								default:				break;			}		}		break;        		case MSG_CLOSE:			DestroyWindow (hChildWnd1);			DestroyWindow (hChildWnd2);			DestroyWindow (hChildWnd3);			DestroyWindow (hChildWnd4);			DestroyWindow (hChildWnd5);			DestroyWindow (hChildWnd6);			DestroyMainWindow (hWnd);            MainWindowCleanup (hWnd);            hMainWnd = HWND_INVALID;			return 0;	}	return DefaultMainWinProc(hWnd, message, wParam, lParam);}static void InitCreateInfo(PMAINWINCREATE pCreateInfo){	pCreateInfo->dwStyle = WS_CAPTION | WS_BORDER | WS_MINIMIZEBOX 				| WS_MAXIMIZEBOX				| WS_VISIBLE;	pCreateInfo->dwExStyle = WS_EX_IMECOMPOSE;	pCreateInfo->spCaption = "Treeview control" ;	pCreateInfo->hMenu = 0;	pCreateInfo->hCursor = GetSystemCursor(0);	pCreateInfo->hIcon = 0;	pCreateInfo->MainWindowProc = ControlTestWinProc;	pCreateInfo->lx = 0; 	pCreateInfo->ty = 0;	pCreateInfo->rx = 400;	pCreateInfo->by = 300;    pCreateInfo->iBkColor = GetWindowElementColor (BKC_CONTROL_DEF);	pCreateInfo->dwAddData = 0;	pCreateInfo->hHosting = HWND_DESKTOP;}void treeview_demo (HWND hwnd){	MAINWINCREATE CreateInfo;    if (hMainWnd != HWND_INVALID) {        ShowWindow (hMainWnd, SW_SHOWNORMAL);        return;    }	InitCreateInfo(&CreateInfo);    CreateInfo.hHosting = hwnd;	hMainWnd = CreateMainWindow(&CreateInfo);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -