win32 sdk中ListView列表控件的使用


使用ListView控件,我们需要初始化公共控件库,所以我们要在初始化时调用InitCommonControls()函数。

如果调用发生链接错误,说明我们没有链接拥有该函数的库文件。它们对应的头和库 DLL分别为 #include <commctrl.h> comctl32.lib comctl32.dll 


接下来我们要利用CreateWindow方法或者CreateWindowEx方法创建ListView控件,设定自己需要的风格(LVS_REPORT | LVS_SHOWSELALWAYS等)。


ListView最常见的操作就是插入项和列,在这里需要两个结构体:LVITEM和LVCOLUMN

这两个结构体定义分别为:

typedef struct _LVITEM { 
    UINT mask; 
    int iItem; 
    int iSubItem; 
    UINT state; 
    UINT stateMask; 
    LPTSTR pszText; 
    int cchTextMax; 
    int iImage; 
    LPARAM lParam;
#if (_WIN32_IE >= 0x0300)
    int iIndent;
#endif
#if (_WIN32_IE >= 0x560)
    int iGroupId;
    UINT cColumns; // tile view columns
    PUINT puColumns;
#endif

typedef struct _LVCOLUMN { 
    UINT mask; 
    int fmt; 
    int cx; 
    LPTSTR pszText; 
    int cchTextMax; 
    int iSubItem; 
#if (_WIN32_IE >= 0x0300)
    int iImage;
    int iOrder;
#endif
} LVCOLUMN, *LPLVCOLUMN; 

} LVITEM, *LPLVITEM;

有了这两个结构体,我们就可以利用SendMessage来给ListView控件发送消息来为它添加项和列。
我们分别通过下面两个消息来添加项和列。
SendMessage(hButton, LVM_INSERTITEM, 0, (LPARAM)&item);
SendMessage(hButton, LVM_INSERTCOLUMN, 0, (LPARAM)&colmn);

LVM_INSERTITEM表示添加项
LVM_INSERTCOLUMN表示添加列。

其它的一些操作可通过查看msdn来学习。


			//初始化列
			LV_COLUMN   lvc;
			lvc.mask = LVCF_TEXT | LVCF_WIDTH;
			for(i = 0 ; i < 5 ; i ++)
			{
				lvc.cx = 50 ;
				lvc.pszText = _T("test") ;
				ListView_InsertColumn(ListView , i , &lvc );
			}


			//插入行

			LVITEM lvitem;
			lvitem.mask=LVIF_TEXT;
			lvitem.cchTextMax=MAX_PATH;
			lvitem.iSubItem=0;
                        lvitem.pszText = TEXT("");
			lvitem.iItem=0;//插入第几行,从0开始
			
			ListView_InsertItem(Detail_List,&lvitem);
			for(i = 0 ;i < 5 ;i ++)
				ListView_SetItemText(ListView,lvitem.iItem,i,TEXT(_T("test"));
		}


你可能感兴趣的:(ListView,struct,list,report,IE,dll)