创真绘里奈婚后渣片:SysListView32 的使用资料
来源:百度文库 编辑:偶看新闻 时间:2024/04/28 08:03:48
SysListView32 的使用资料
作者:coderlee 来源:博客园 发布时间:2010-01-06 22:41 阅读:1401 次 原文链接 [收藏]使用列表控制的步骤如下:
- 调用CreateWindowEx函数来创建一个列表控件,指定它的类名为SysListView32。您还可以在此处指定控件初次显示时的方式。
- 创建和初始化用在列表控件中显示项目的图象列表(如果存在)。
- 向列表控件中插入列,如果显示的方式是报告方式这一步是必须的。
- 向控件中插入项目和自项目。
所用到的两种数据结构:
列:
LV_COLUMN STRUCT
imask dd ?
fmt dd ?
lx dd ?
pszText dd ?
cchTextMax dd ?
iSubItem dd ?
iImage dd ?
iOrder dd ?
LV_COLUMN ENDS
该成员变量包含的标志位反应了项目的状态。状态的改变可能是由用户的操作引起的或是程序改变的。这些状态包括:是否有焦点/高亮度显示/被选中(由于被剪切)/被选中等。另外还包括,以1为基数的索引用来代表是否处使用重叠/状态图标。
stateMask 由于上面的成员变量包含状态标志位、重叠的位图索引号、和状态位图的索引号,我们需要告诉WINDOWS我们到底需要设定或查询那一个值。该成员变量就是用来做这项工作的。 pszText 当我们想设定项目的属性时,它包含项目名称的ASCII码的字符串的地址。当查询项目的属性时,该成员变量将用来接收查询返回的项目的名称。 cchTextMax 仅当您用来查询项目的属性时才需要使用该值,这时它包含上一个成员变量的大小。 iImage 图标在列表视图中的图象链表中的索引号。 lParam 用户定义的值,当您给项目排序时使用。当您告诉列表视图对项目排序时,列表视图将成对地比较项目。 它将会把两个项目的lParam的值传给您,这样您就可以进行比较先列出那一个了。如果您现在还不太明白的话,没有系,我们稍后还要讲关于排序的问题。控件通过SendMessage来发送消息来控制,常用的消息有:
LVM_INSERTCOLUMN 加入列,wParam 为整型,指定列号,lParam 为指向LV_COLUMN结构的指针
LVM_SETCOLUMN 设置列,参数同上
LVM_INSERTITEM 加入项目或子项目,wParam 为0,lParam 为指向LV_ITEM结构的指针
LVM_SETITEM 设置项目或子项目,参数同上
LVM_GETITEM 取得项目或子项目,参数同上
LVM_GETNEXTITEM 取得下一个项目或子项目,可以用来取得光标选择的项目
LVM_DELETEITEM 删除项目或子项目,wParam 为整型,指定项目索引号,lParam 为0
LVM_DELETEALLITEMS 删除所有项目,wParam 和 lParam 均为0
LVM_SETTEXTCOLOR 设置文字颜色,wParam 为0,lParam 为颜色的RGB值
LVM_SETTEXTBKCOLOR 设置文字背景色,参数同上
LVM_SETBKCOLOR 设置背景色,参数同上
下面是用SysListView32控件实现的简单的学生管理系统程序的一部分:
代码void InsertColumn(void)
{
LV_COLUMN lvc;
lvc.mask = LVCF_TEXT | LVCF_WIDTH;
lvc.pszText = "学号";
lvc.cx = 60;
SendMessage(hList, LVM_INSERTCOLUMN, 0, (long)&lvc);
lvc.pszText = "姓名";
lvc.cx = 80;
SendMessage(hList, LVM_INSERTCOLUMN, 1, (long)&lvc);
lvc.pszText = "性别";
lvc.cx = 40;
SendMessage(hList, LVM_INSERTCOLUMN, 2, (long)&lvc);
lvc.pszText = "年龄";
lvc.cx = 40;
SendMessage(hList, LVM_INSERTCOLUMN, 3, (long)&lvc);
lvc.pszText = "出生日期";
lvc.cx = 100;
SendMessage(hList, LVM_INSERTCOLUMN, 4, (long)&lvc);
lvc.pszText = "籍贯";
lvc.cx = 150;
SendMessage(hList, LVM_INSERTCOLUMN, 5, (long)&lvc);
lvc.pszText = "入学时间";
lvc.cx = 100;
SendMessage(hList, LVM_INSERTCOLUMN, 6, (long)&lvc);
lvc.pszText = "数学";
lvc.cx = 40;
SendMessage(hList, LVM_INSERTCOLUMN, 7, (long)&lvc);
lvc.pszText = "英语";
lvc.cx = 40;
SendMessage(hList, LVM_INSERTCOLUMN, 8, (long)&lvc);
lvc.pszText = "政治";
lvc.cx = 40;
SendMessage(hList, LVM_INSERTCOLUMN, 9, (long)&lvc);
}
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
static HINSTANCE hInst;
HMENU hMenu;
LV_ITEM lvi;
int i;
switch (message) {
case WM_CREATE:
hInst = ((LPCREATESTRUCT)lParam) -> hInstance;
hMenu = GetMenu(hwnd);
InitCommonControls();
hList = CreateWindowEx(NULL, TEXT("SysListView32"), NULL, LVS_REPORT | WS_CHILD | WS_VISIBLE, 0, 0, 0, 0, hwnd, NULL, hInst, NULL);
InsertColumn();
SendMessage(hList, LVM_SETTEXTCOLOR, 0, #ffffff);
SendMessage(hList, LVM_SETBKCOLOR, 0, #646464);
SendMessage(hList, LVM_SETTEXTBKCOLOR, 0, #000000);
Refresh();
break;
case WM_COMMAND:
switch (LOWORD(wParam)) {
case IDREFRESH:
Refresh();
break;
case IDINSERT:
if (DialogBox(hInst, TEXT("StudInfo"), hwnd, InsertDlgProc)) InvalidateRect(hwnd, NULL, TRUE);
break;
case IDEDIT:
lvi.iItem = SendMessage(hList, LVM_GETNEXTITEM, -1, LVNI_SELECTED);
if (-1 == lvi.iItem) {
MessageBox(hwnd, "请选择一条记录!", "Edit Info", MB_OK | MB_ICONWARNING);
break;
}
lvi.mask = LVIF_TEXT;
lvi.cchTextMax = 20;
for (i = 0; i < 10; ++i) {
lvi.iSubItem = i;
lvi.pszText = buf[i];
SendMessage(hList, LVM_GETITEM, 0, (long)&lvi);
}
if (DialogBox(hInst, TEXT("StudInfo"), hwnd, EditDlgProc)) InvalidateRect(hwnd, NULL, TRUE);
break;
case IDDELETE:
lvi.iItem = SendMessage(hList, LVM_GETNEXTITEM, -1, LVNI_SELECTED);
if (-1 == lvi.iItem) {
MessageBox(hwnd, "请选择一条记录!", "Delete Info", MB_OK | MB_ICONWARNING);
break;
}
SendMessage(hList, LVM_DELETEITEM, lvi.iItem, 0);
lvi.mask = LVIF_TEXT;
lvi.iSubItem = 0;
lvi.pszText = buf[0];
lvi.cchTextMax = 20;
SendMessage(hList, LVM_GETITEM, 0, (long)&lvi);
sprintf(query, "DELETE FROM student WHERE id = %s", buf[0]);
ODBCConnect(hwnd);
ODBCQuery(query);
ODBCQueryEnd();
ODBCDisconnect(hwnd);
break;
case IDEXIT:
SendMessage(hwnd, WM_CLOSE, 0, 0);
break;
case IDABOUT:
MessageBox(hwnd, "Students Info Administration System Developed by anonymous", "About", MB_OK | MB_ICONINFORMATION);
}
break;
case WM_SIZE:
MoveWindow(hList, 0, 0, LOWORD(lParam), HIWORD(lParam), TRUE);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd, message, wParam, lParam);
}
return 0;
}
如何得到SysListView32中文件夹的相关信息
c975的一些使用资料
轮状病毒疫苗的使用有无统计学资料?
有没有WIN XPE的使用资料??
cosmoswork使用资料的下载或购买
金长城-显示器5S0765C的使用资料
网上哪能找到冷镦机的使用资料。
关于人类使用机械的资料
谁知道集成电路AD536的使用资料?
统计方法的使用,等级资料的处理
求关于量具的使用和维护方面的资料
找winamp MilkDrop视觉效果的使用资料,高级的。
如何使用NERO擦掉光盘上不要的资料
如何使用扫描仪扫描照片之类的资料?
哪里有介绍使用办公软件的资料?
为什么WORD文档里的资料,不能使用项目编号了
有谁有CAXA数控车的使用资料,指教一下
想要一份关于协议和使用端口的资料
如何在百度中使用 我的资料
求详细的NASA World Wind下载安装使用资料
使用GHOST覆盖后会使原存储的资料消失,如何保存?
有谁能够找到cect8380直板贴牌机的相关使用资料?
FTP我想了解关于FTP的使用即资料
有办法查看使用同一台电脑登陆的QQ资料(聊天记录、好友资料)吗?