win32 ListView 部分用法总结

2017-10-03  本文已影响0人  牛魔王的眼泪

 现在编程慢慢的抛弃了黑框,喜欢用界面编程。前几天想起来大学的时候C语言做的学生信息管理系统。 突然兴趣来了,用 win32 做了界面来完成当年的编程,做了简化。 效果图如下:

接下来, 我就总结listView的一点基本用法:

1. ListView 初始化:(选择 view 为 report)

1.1 给list控件添加列标题,设置网格线风格 。在WM_INITDIALOG 消息里面做如下处理:

ListView_SetExtendedListViewStyle(hListWnd, LVS_EX_FULLROWSELECT | LVS_EX_CHECKBOXES | LVS_EX_GRIDLINES); 

/*

LVS_EX_FULLROWSELECT 选中高亮

LVS_EX_CHECKBOXES 勾选框

LVS_EX_GRIDLINES 网格线

*/

lvcolum.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;

lvcolum.fmt = LVCFMT_CENTER;

lvcolum.cx = 100;

lvcolum.pszText = L"学号";

lvcolum.iSubItem = 0;

ListView_InsertColumn(hListWnd, 0, &lvcolum);

lvcolum.cx = 140;

lvcolum.pszText = L"姓名";

lvcolum.iSubItem = 1;

ListView_InsertColumn(hListWnd, 1, &lvcolum);

lvcolum.cx = 140;

lvcolum.pszText = L"班级";

lvcolum.iSubItem = 2;

ListView_InsertColumn(hListWnd, 2, &lvcolum);

lvcolum.cx = 210;

lvcolum.pszText = L"入学时间";

lvcolum.iSubItem = 3;

ListView_InsertColumn(hListWnd, 3, &lvcolum);

2. 向list控件里面添加内容, 这个在响应“增加”按钮里面处理:

lv.mask = LVIF_TEXT;

lv.iSubItem = 0;

lv.iItem = nIndex++; //第几行的索引

lv.iImage = 0;

lv.pszText = wstrId;

ListView_InsertItem(hListWnd, &lv);

lv.iSubItem = 1;

lv.pszText = wstrName;

ListView_SetItem(hListWnd, &lv);  //先要插入一项,然后再设置每一项item

lv.iSubItem = 2;

lv.pszText = wstrClass;

ListView_SetItem(hListWnd, &lv);

lv.iSubItem = 3;

lv.pszText = wstrEnterTime;

ListView_SetItem(hListWnd, &lv);

3. 删除list控件里面的内容:

int nSelectItem = ListView_GetSelectionMark(hListWnd); //获取鼠标选中项的索引

SendMessage(hListWnd, LVM_DELETEITEM, nSelectItem, 0); //LVM_DELETEITEM 消息删除nSelectItem item。

4. 查询信息:

int nSelectIndex = ListView_GetSelectionMark(hListWnd);

TCHAR wstrText[4][128] = { 0 };

//通过一个for循环 能够获取第 nSelectIndex item的所有内容 

for (int i = 0; i < 4; i++)

{

ListView_GetItemText(hListWnd, nSelectIndex, i, wstrText[i], sizeof(wstrText[i]));

}

5. 修改学生信息:(以修改学生姓名为例)

if (lstrlen(wstrName) != 0)

{

lv.mask = LVIF_TEXT;

lv.iSubItem = 1;

lv.iItem = nSelectIndex;

lv.pszText = wstrName;

SendMessage(hListWnd, LVM_SETITEM, 0, (LPARAM)&lv);

}

LVM_SETITEM 消息设置item内容。wparam 必须是0;

上一篇下一篇

猜你喜欢

热点阅读