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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Win32 ListView控件基本使用

發布時間:2025/4/14 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Win32 ListView控件基本使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

首先看一下Windows公共控件庫,參閱;

https://blog.csdn.net/bcbobo21cn/article/details/106287676

https://blog.csdn.net/bcbobo21cn/article/details/106289420

這幾個公共控件庫的控件,基本使用原理是一樣的;

首先創建,添加列頭;完成之后如下;

設置各部位顏色,使用SendMessage實現;

插入具體項目信息;

代碼;

#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] = { { "無忌", "20", "技術部", "工程師" }, { "三豐", "80", "總經理", "總經理" }, { "遠橋", "40", "技術部", "經理" }, { "敏敏", "18", "客服部", "經理" }, { "芷若", "18", "行政部", "經理" }, { "小昭", "16", "行政部", "前臺" } }; 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 = "職務";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++) { //先添加項再設置子項內容 vitem.pszText = stu[i].name; vitem.iItem = i; vitem.iSubItem = 0; ListView_InsertItem(hListview, &vitem); // 設置子項 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創建控件,類名為"SysListView32";創建風格這些枚舉值可以網上查;

其他操作都是通過定義相應結構體對象并賦值,然后用SendMessage實現;

ListView_InsertItem,ListView_SetItem,這兩個是預定義宏,它們也是調用SendMessage,傳遞結構體地址;

添加列頭用結構體LV_COLUMN,添加具體信息用結構體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

結構體第二個成員,int age,賦值時賦值為?"20",這么也構建出了exe;可以自己改;

總結

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

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