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控件基本使用相关推荐
- Android使用ListView控件问题
Android使用ListView控件问题: The application has stopped unexpectedly, please try again. 开发环境:android 1.6 ...
- ASP.NET ListView控件基本操作
1.前台代码 View Code 1 <asp:ListView ID="lvDepartment" runat="server" DataKeyName ...
- 【转】 ASP.NET 3.5中使用新的ListView控件
ASP.NET中新的ListView控件为显示和CURD数据库操作提供了基于模板的布局,使之成为一项极好的方式,建立以数据为中心的Web应用程序. 当你编写以用户为中心的应用程序时,总需要某种形式的数 ...
- C# ListView控件显示表格(自适应宽度),添加 Checkbox,删除选择项,选中颜色和鼠标滑过背景变色
本文转载自:http://www.liangshunet.com/ca/201309/586362553.htm 亮术网 2020-03-07 本网原创 DataGridView控件功能十分强大,显示 ...
- ListView控件的基本使用(方式一:使用ArrayAdapter适配器实现)
ListView绝对可以称得上是Android中最常用的控件之一,几乎所有的应用程序都会用到它.由于手机屏幕空间都比较有限,能够一次性在屏幕上显示的内容并不多,当我们的程序中有大量的数据需要展示的时候 ...
- ListView控件学习系列2-编辑ListView(Edit,Update,Insert,Delete)
目录: ListView控件学习系列1-了解ListView控件 ListView控件学习系列2-编辑ListView ListView控件学习系列3-ListView选择,排序,分页 ListVie ...
- VB.net实现从ListView控件中异地获取文本内容源代码
对于一些VB6工程代码来说,需要完成从VB到VB.net的转换,在转换过程中需要注意很多内容,利用VB.net的直接转换功能很少能完全成功,需要我们付出很大的努力. 下面的VB.net代码实现从其他应 ...
- listview显示mysql数据_C#在listview控件中显示数据库数据
一.了解listview控件的属性 view:设置为details columns:设置列 items:设置行 1.将listview的view设置为details 2.设置列属性 点击添加,添加一列 ...
- 【小技巧积累】设置ListView控件的Item不在Tab键导航序列中
在默认情况下,ListView控件的Item在Tab键导航序列中,就算我们将ListView控件的IsTabStop属性设置为False.而有些情况下,我们需要按Tab键时能跳过ListView控件. ...
最新文章
- 解读eXtremeComponents代码结构--转载
- Ubuntu16.04 安装 OpenMPI4.0.0
- jQuery 选择器汇总-思维导图-选择器
- POS时机未到,POW强攻是实现全球货币的正确道路
- 2个css特效冲突了怎么办_患上类风湿病怎么办?2个方法拿走不谢
- php findall,fleaphp常用函数findAll方法的使用和示例
- 大数据_Hbase-内容回顾和补充---Hbase工作笔记0018
- paip. 'QObject::QObject(const QObject)' is private问题的解决.
- 使用canvas绘制数字雨
- cad图形不见了怎么办_CAD软件常见问题解答,CAD中的工具栏不见了怎么办?如何清理图形...
- 【微信小程序】-授权获取微信绑定手机号两种方案
- Ubuntu 14.04 下的MAC OS X 主题安装
- 关于解决无线拨号(PPPOE)上网的若干问题(WISP)
- Qt实现的简单记账本软件
- 【智能安全车载中控系统】(一)概览
- 记云服务器中挖矿病毒与防范
- 太神了!世界上最著名的菲尔人格测试!
- 佛山计算机专业刁,计算机应用基础 高职计算机大类专业 刁爱军项目策划方案汇报 原始.pptx...
- PDF电子签章,用鼠标拖动印章到指定的位置, 一种在网页PDF中电子签章定位方法
- 一键U盘装系统-【万能U盘启动盘制作工具】
热门文章
- 利用iptables来配置linux禁止所有端口登陆和开放指定端口
- 函数的相关操作——利用函数翻转任意数组||利用函数冒泡排序||利用函数判断闰年
- 用JAVASCRIPT实现静态对象、静态方法和静态属性
- Python 技术篇-用os库实现本地文件重命名实例演示
- 2018 Spring Team Contest B
- Python标准库01 正则表达式 (re包)
- 特征值和特征向量(Eigenvalues and Eigenvectors)
- R语言-画edcf图、直方图、正态概率图,计算分位数(任意分位)
- 第二十三讲 解一阶微分方程组
- BZOJ3336: Uva10572 Black and White(插头Dp)