Win32 ListView控件基本使用
首先看一下Windows公共控件庫(kù),參閱;
https://blog.csdn.net/bcbobo21cn/article/details/106287676
https://blog.csdn.net/bcbobo21cn/article/details/106289420
這幾個(gè)公共控件庫(kù)的控件,基本使用原理是一樣的;
首先創(chuàng)建,添加列頭;完成之后如下;
設(shè)置各部位顏色,使用SendMessage實(shí)現(xiàn);
插入具體項(xiàng)目信息;
代碼;
#include <windows.h> #include <commctrl.h> #include "resource.h"LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);HINSTANCE hInst; TCHAR szClassName[] = TEXT("listviewDemo"); HWND hListview;struct STUDENTINFO { char name[15]; int age; char dept[20]; char job[20]; }; 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_LISTVIEWDEMO);wincl.cbClsExtra = 0;wincl.cbWndExtra = 0;wincl.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);if (!RegisterClassEx (&wincl))return 0;hwnd = CreateWindowEx (0,szClassName,TEXT("listviewDemo"),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;int i;struct STUDENTINFO stu[6] = { { "無(wú)忌", "20", "技術(shù)部", "工程師" }, { "三豐", "80", "總經(jīng)理", "總經(jīng)理" }, { "遠(yuǎn)橋", "40", "技術(shù)部", "經(jīng)理" }, { "敏敏", "18", "客服部", "經(jīng)理" }, { "芷若", "18", "行政部", "經(jīng)理" }, { "小昭", "16", "行政部", "前臺(tái)" } }; switch (message){case WM_COMMAND:switch (LOWORD(wParam)){case IDM_ABOUT:MessageBox (hwnd, TEXT ("listviewDemo v1.0\nCopyright (C) 2020\n by bo"),TEXT ("listviewDemo"), MB_OK | MB_ICONINFORMATION);break;case IDM_EXIT:DestroyWindow(hwnd);break;default:return DefWindowProc(hwnd, message, wParam, lParam); }break;case WM_CREATE:hListview = CreateWindowEx(NULL, TEXT("SysListView32"), NULL, LVS_REPORT | WS_CHILD | WS_VISIBLE, 0, 0,300, 400, hwnd, NULL, hInst, NULL);LV_COLUMN lvc;lvc.mask = LVCF_TEXT | LVCF_WIDTH;lvc.pszText = "姓名";lvc.cx = 80;SendMessage(hListview, LVM_INSERTCOLUMN, 0, (long)&lvc);lvc.pszText = "年齡";lvc.cx = 80;SendMessage(hListview, LVM_INSERTCOLUMN, 1, (long)&lvc);lvc.mask = LVCF_TEXT | LVCF_WIDTH;lvc.pszText = "部門";lvc.cx = 80;SendMessage(hListview, LVM_INSERTCOLUMN, 2, (long)&lvc);lvc.pszText = "職務(wù)";lvc.cx = 80;SendMessage(hListview, LVM_INSERTCOLUMN, 3, (long)&lvc);SendMessage(hListview, LVM_SETTEXTCOLOR, 0, RGB(255, 255, 255));SendMessage(hListview, LVM_SETBKCOLOR, 0, RGB(135, 160, 135));SendMessage(hListview, LVM_SETTEXTBKCOLOR, 0, RGB(60, 100, 130)); LVITEM vitem; vitem.mask = LVIF_TEXT; for (i = 0; i < 6; i++) { //先添加項(xiàng)再設(shè)置子項(xiàng)內(nèi)容 vitem.pszText = stu[i].name; vitem.iItem = i; vitem.iSubItem = 0; ListView_InsertItem(hListview, &vitem); // 設(shè)置子項(xiàng) vitem.iSubItem = 1; vitem.pszText = stu[i].age; ListView_SetItem( hListview, &vitem); vitem.iSubItem = 2; vitem.pszText = stu[i].dept; ListView_SetItem(hListview, &vitem);vitem.iSubItem = 3; vitem.pszText = stu[i].job; ListView_SetItem(hListview, &vitem); } 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; }先用CreateWindowEx創(chuàng)建控件,類名為"SysListView32";創(chuàng)建風(fēng)格這些枚舉值可以網(wǎng)上查;
其他操作都是通過(guò)定義相應(yīng)結(jié)構(gòu)體對(duì)象并賦值,然后用SendMessage實(shí)現(xiàn);
ListView_InsertItem,ListView_SetItem,這兩個(gè)是預(yù)定義宏,它們也是調(diào)用SendMessage,傳遞結(jié)構(gòu)體地址;
添加列頭用結(jié)構(gòu)體LV_COLUMN,添加具體信息用結(jié)構(gòu)體LVITEM;
工程;
資源和頭文件;
#include "resource.h" #include <windows.h>/ // // Menu //IDC_LISTVIEWDEMO MENU BEGINPOPUP "&File"BEGINMENUITEM "E&xit", IDM_EXITENDPOPUP "&Help"BEGINMENUITEM "&About ...", IDM_ABOUTEND END #define IDM_EXIT 10001 #define IDM_ABOUT 10002#define IDC_LISTVIEWDEMO 10101 #define IDD_ABOUTBOX 10102結(jié)構(gòu)體第二個(gè)成員,int age,賦值時(shí)賦值為?"20",這么也構(gòu)建出了exe;可以自己改;
總結(jié)
以上是生活随笔為你收集整理的Win32 ListView控件基本使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 超图专题图类别概览
- 下一篇: Windows 公共控件库研究