国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
SysListView32 的使用資料

SysListView32 的使用資料

作者:coderlee  來源:博客園  發(fā)布時(shí)間:2010-01-06 22:41  閱讀:1401 次  原文鏈接   [收藏]  

使用列表控制的步驟如下:

  1. 調(diào)用CreateWindowEx函數(shù)來創(chuàng)建一個(gè)列表控件,指定它的類名為SysListView32。您還可以在此處指定控件初次顯示時(shí)的方式。
  2. 創(chuàng)建和初始化用在列表控件中顯示項(xiàng)目的圖象列表(如果存在)。
  3. 向列表控件中插入列,如果顯示的方式是報(bào)告方式這一步是必須的。
  4. 向控件中插入項(xiàng)目和自項(xiàng)目。

所用到的兩種數(shù)據(jù)結(jié)構(gòu):
列:

LV_COLUMN STRUCT
  imask dd ?
  fmt dd ?
  lx dd ?
  pszText dd ?
  cchTextMax dd ?
  iSubItem dd ?
  iImage dd ?
  iOrder dd ?
LV_COLUMN ENDS

Field name Meanings
imask 一組標(biāo)志位標(biāo)明該結(jié)構(gòu)體中那些成員變量中的值有效。它的意義和上面我們提到的LV_COLUMN型結(jié)構(gòu)體中向?qū)?yīng)的成員變量基本相同。更詳細(xì)的信息,可以查詢WIN32 API 手冊。
iItem 該結(jié)構(gòu)體代表的項(xiàng)目的索引號。索引號是從0開始編號的。該值和表單的“行”類似。
iSubItem 和上一個(gè)成員變量指定的項(xiàng)目相連的子項(xiàng)目的索引號。您可以把它當(dāng)作表單的“列”。譬如您想要把一個(gè)項(xiàng)目插入到新創(chuàng)建的列表視圖控件,iItem的 值應(yīng)為0(因?yàn)樵擁?xiàng)目是第一個(gè)項(xiàng)目),iSubItem的值也應(yīng)當(dāng)為0(我們想把該項(xiàng)目插到第一列)。如果你想指定一個(gè)子項(xiàng)目和該項(xiàng)目相連,iItem中 應(yīng)該是您想要相連的項(xiàng)目的索引號,iSubItem的值應(yīng)當(dāng)是大于0的值,具體的值取決于您想把該子項(xiàng)目插在那一列。如果你的列表視圖控件一共有4列的 化,第一列包含了項(xiàng)目,其余3列是留給子項(xiàng)目的。如果您想把子項(xiàng)目插在第四列,應(yīng)當(dāng)指定該值為3。
state

該成員變量包含的標(biāo)志位反應(yīng)了項(xiàng)目的狀態(tài)。狀態(tài)的改變可能是由用戶的操作引起的或是程序改變的。這些狀態(tài)包括:是否有焦點(diǎn)/高亮度顯示/被選中(由于被剪切)/被選中等。另外還包括,以1為基數(shù)的索引用來代表是否處使用重疊/狀態(tài)圖標(biāo)。

stateMask 由于上面的成員變量包含狀態(tài)標(biāo)志位、重疊的位圖索引號、和狀態(tài)位圖的索引號,我們需要告訴WINDOWS我們到底需要設(shè)定或查詢那一個(gè)值。該成員變量就是用來做這項(xiàng)工作的。
pszText 當(dāng)我們想設(shè)定項(xiàng)目的屬性時(shí),它包含項(xiàng)目名稱的ASCII碼的字符串的地址。當(dāng)查詢項(xiàng)目的屬性時(shí),該成員變量將用來接收查詢返回的項(xiàng)目的名稱。
cchTextMax 僅當(dāng)您用來查詢項(xiàng)目的屬性時(shí)才需要使用該值,這時(shí)它包含上一個(gè)成員變量的大小。
iImage 圖標(biāo)在列表視圖中的圖象鏈表中的索引號。
lParam 用戶定義的值,當(dāng)您給項(xiàng)目排序時(shí)使用。當(dāng)您告訴列表視圖對項(xiàng)目排序時(shí),列表視圖將成對地比較項(xiàng)目。 它將會把兩個(gè)項(xiàng)目的lParam的值傳給您,這樣您就可以進(jìn)行比較先列出那一個(gè)了。如果您現(xiàn)在還不太明白的話,沒有系,我們稍后還要講關(guān)于排序的問題。

控件通過SendMessage來發(fā)送消息來控制,常用的消息有:

LVM_INSERTCOLUMN  加入列,wParam 為整型,指定列號,lParam 為指向LV_COLUMN結(jié)構(gòu)的指針
LVM_SETCOLUMN  設(shè)置列,參數(shù)同上
LVM_INSERTITEM  加入項(xiàng)目或子項(xiàng)目,wParam 為0,lParam 為指向LV_ITEM結(jié)構(gòu)的指針
LVM_SETITEM  設(shè)置項(xiàng)目或子項(xiàng)目,參數(shù)同上
LVM_GETITEM  取得項(xiàng)目或子項(xiàng)目,參數(shù)同上
LVM_GETNEXTITEM  取得下一個(gè)項(xiàng)目或子項(xiàng)目,可以用來取得光標(biāo)選擇的項(xiàng)目
LVM_DELETEITEM  刪除項(xiàng)目或子項(xiàng)目,wParam 為整型,指定項(xiàng)目索引號,lParam 為0
LVM_DELETEALLITEMS  刪除所有項(xiàng)目,wParam 和 lParam 均為0
LVM_SETTEXTCOLOR  設(shè)置文字顏色,wParam 為0,lParam 為顏色的RGB值
LVM_SETTEXTBKCOLOR  設(shè)置文字背景色,參數(shù)同上
LVM_SETBKCOLOR  設(shè)置背景色,參數(shù)同上

下面是用SysListView32控件實(shí)現(xiàn)的簡單的學(xué)生管理系統(tǒng)程序的一部分:

代碼
void InsertColumn(void)
{
    LV_COLUMN lvc;

    lvc.mask 
= LVCF_TEXT | LVCF_WIDTH;
    lvc.pszText 
= "學(xué)號";
    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 
= "入學(xué)時(shí)間";
    lvc.cx 
= 100;
    SendMessage(hList, LVM_INSERTCOLUMN, 
6, (long)&lvc);
    lvc.pszText 
= "數(shù)學(xué)";
    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, 0000, 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, 
00);
                    
break;
                
case IDABOUT:
                    MessageBox(hwnd, 
"Students Info Administration System Developed by anonymous""About", MB_OK | MB_ICONINFORMATION);
            }
            
break;
        
case WM_SIZE:
            MoveWindow(hList, 
00, LOWORD(lParam), HIWORD(lParam), TRUE);
            
break;
        
case WM_DESTROY:
            PostQuitMessage(
0);
            
break;
        
default:
            
return DefWindowProc(hwnd, message, wParam, lParam);
    }

    
return 0;
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
WIN32匯編: 31.列表視圖控件
關(guān)于CListCtrl條目的字符數(shù)限制-
VC++ 中WM_COPYDATA 怎么樣應(yīng)用來實(shí)現(xiàn)兩個(gè)進(jìn)程間的數(shù)據(jù)傳輸[轉(zhuǎn)]
VB.NET自動操作其他程序(4)
CListCtrl的使用
MFC Controls: The List Control
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服