WC_LISTVIEW二、相關的函數操作 SysListView32
因為是SDK程式設計,是以對控件的操作是向控件發送SendMessage()來實作的
LISTVIEW中的相關消息為:
1、LVM_SETTEXTCOLOR 和 LVM_SETTEXTBKCOLOR 消息設定文本的前景和背景色
2、 LVM_GETNEXTITEM找到選中的行,對應ListView_GetNextItem宏将SendMessage打包為函數方式操作。
3、LVM_SETCOLUMNWIDTH設定列寬,對應ListView_SetColumnWidth
4、LVM_SETEXTENDEDLISTVIEWSTYLE設定擴充風格如:LVS_EX_FULLROWSELECT(選中一整行), LVS_EX_GRIDLINES(網絡線),LVS_EX_CHECKBOXES(選擇按鈕),對應ListView_SetExtendedListViewStyle
5、LVM_INSERTCOLUMN插入新列,對應ListView_InsertColumn
6、LVM_INSERTITEM插入項目(行),對應ListView_InsertItem
7、LVM_SETITEM設定子項(行中的每列),對應ListView_SetItem
8、LVM_GETITEMCOUNT擷取項數,對應ListView_GetItemCount
9、LVM_DELETEITEM删除項,對應ListView_DeleteItem
還有很多關于選中響應的消息就不列舉了,可以在相應的頭檔案中去查找
c:/Program Files/Microsoft SDKs/Windows/v6.0A/Include/CommCtrl.h
三、相關的結構
//
//配置列屬性
//
typedef struct _LVCOLUMN
{
//說明此結構中哪些成員是有效的,LVCF_FMT = fmt有效,
//LVCF_SUBITEM = iSubItem有效,LVCF_TEXT = pszText有效,LVCF_WIDTH = lx有效
UINT mask;
//列的對齊方式
int fmt;
//列的初始寬度,以後您可以發送消息LVM_SETCOLUMNWIDTH來改變列的寬度
int cx;
//列的标題
LPTSTR pszText;
//pszText所指向的緩沖區的大小
int cchTextMax;
//與列關聯的子項的索引值,從0開始,要查詢列的屬性時可以發送LVM_GETCOLUMN消息,
//并在成員變量imask中指定LVCF_SUBITEM标志,
//清單控件将在iSubItem中傳回插入時設定的iSubItem值
int iSubItem;
//與列關聯的圖像清單中指定圖像的索引值
int iImage;
//第幾列,0代表最左一列
int iOrder;
} LVCOLUMN, FAR *LPLVCOLUMN;
//
//配置項,通過向清單視圖發送LVM_INSERTITEM消息來向其中添加項目
//
typedef struct _LVITEM
{
//說明LVITEM結構中哪些成員有效
UINT mask;
//項目的索引值(可以視為行号)從0開始
int iItem;
//子項的索引值(可以視為列号)從0開始
int iSubItem;
//子項的狀态,是否有焦點/高亮度顯示/被選中(由于被剪切)/被選中等
//還包括以1為基數的索引用來代表是否處使用重疊/狀态圖示
UINT state;
//狀态有效的屏蔽位
UINT stateMask;
//主項或子項的名稱
LPTSTR pszText;
//pszText所指向的緩沖區大小
int cchTextMax;
//關聯圖像清單中指定圖像的索引值
int iImage;
//程式定義的32位參數,當您給項目排序時使用。
//當您告訴清單視圖對項目排序時,清單視圖将成對地比較項目
//它将會把兩個項目的lParam的值傳給您,這樣您就可以進行比較先列出那一個了
LPARAM lParam;
//表示圖像位置縮進的機關
int iIndent;
} LVITEM, FAR *LPLVITEM;
typedef struct _LVCOLUMN {
UINT mask; //說明此結構中哪些成員是有效的
int fmt; //列的對齊方式
int cx; //列的初始寬度
LPTSTR pszText; //列的标題
int cchTextMax; //pszText所指向的緩沖區的大小
int iSubItem; //與列關聯的子項的索引值,從0開始
int iImage; //與列關聯的圖像清單中指定圖像的索引值
int iOrder; //第幾列,0代表最左一列
} LVCOLUMN, FAR *LPLVCOLUMN;
typedef struct _LVITEM {
UINT mask; //說明LVITEM結構中哪些成員有效
int iItem; //項目的索引值(可以視為行号)從0開始
int iSubItem; //子項的索引值(可以視為列号)從0開始
UINT state; //子項的狀态
UINT stateMask; //狀态有效的屏蔽位
LPTSTR pszText; //主項或子項的名稱
int cchTextMax; //pszText所指向的緩沖區大小
int iImage; //關聯圖像清單中指定圖像的索引值
LPARAM lParam; //程式定義的32位參數
int iIndent; //表示圖像位置縮進的機關
} LVITEM, FAR *LPLVITEM;
LVM_APPROXIMATEVIEWRECT // 計算需要顯示的項目數的近似寬度和高度。你可以明确的發送這個消息,或者使用宏ListView_ApproximateViewRect。
LVM_ARRANGE // 排列
LVM_CREATEDRAGIMAGE // 建立拖動圖像
LVM_DELETEALLITEMS // 删除所有項
LVM_DELETECOLUMN // 删除列
LVM_DELETEITEM // 删除項
LVM_EDITLABEL // 編輯标簽
LVM_ENSUREVISIBLE // 確定可見
LVM_FINDITEM // 查找項
LVM_GETBKCOLOR // 擷取背景顔色
LVM_GETBKIMAGE // 擷取背景圖像
LVM_GETCALLBACKMASK // 傳回清單視圖控件的回調掩碼。你可以明确的發送這個消息,或者使用ListView_GetCallbackMask宏。
LVM_GETCOLUMN // 取得清單視圖控件的列的屬性
LVM_GETCOLUMNORDERARRAY // 以自左向右的順序取得清單視圖控件目前的列。
LVM_GETCOLUMNWIDTH // 取得列的寬度
LVM_GETCOUNTPERPAGE // 當清單視圖控件使用清單視圖或者報告視圖時,計算顯示區域能垂直顯示的項的數目。隻有能完全顯示的項才會被計數。
LVM_GETEDITCONTROL // 取得編輯清單視圖項文本的編輯控件的句柄。
LVM_GETEXTENDEDLISTVIEWSTYLE // 取得清單視圖控件現在正在使用的擴充風格
LVM_GETHEADER // 取得清單視圖控件使用的标頭控件的句柄
LVM_GETHOTCURSOR // 擷取在焦點項上的滑鼠值
LVM_GETHOTITEM // 擷取焦點項索引
LVM_GETHOVERTIME //
LVM_GETIMAGELIST // 擷取image List
LVM_GETISEARCHSTRING //
LVM_GETITEM // 擷取項
LVM_GETITEMCOUNT // 擷取項數目
LVM_GETITEMPOSITION // 擷取項位置
LVM_GETITEMRECT // 擷取項RECT
LVM_GETITEMSPACING // 擷取項與項的間距
LVM_GETITEMSTATE // 擷取項的狀态
LVM_GETITEMTEXT // 擷取項的文本
LVM_GETNEXTITEM // 擷取下一個項
LVM_GETNUMBEROFWORKAREAS // 在清單視圖控件檢索一些領域的工作
LVM_GETORIGIN // 檢索為清單視圖控件的目前視圖的起源
LVM_GETSELECTEDCOUNT // 擷取所選項的數目
LVM_GETSELECTIONMARK // 擷取選中項的Mark
LVM_GETSTRINGWIDTH // 擷取目前ListView字型的寬度
LVM_GETSUBITEMRECT // 擷取子項的RECT
LVM_GETTEXTBKCOLOR // 擷取文本背景顔色
LVM_GETTEXTCOLOR // 擷取文本顔色
LVM_GETTOOLTIPS // 擷取提示字元
LVM_GETTOPINDEX // 擷取頂端項索引
LVM_GETUNICODEFORMAT // 擷取寬字元格式
LVM_GETVIEWRECT // 擷取View RECT
LVM_GETWORKAREAS // 擷取工作區域
LVM_HITTEST // 擷取滑鼠點選的詳細資訊
LVM_INSERTCOLUMN // 插入列
LVM_INSERTITEM // 插入項
LVM_REDRAWITEMS // 設定一個開始項和結束項, 重繪這個些項
LVM_SCROLL // 滾動的清單視圖控件的内容
LVM_SETBKCOLOR // 設定背景顔色
LVM_SETBKIMAGE // 設定背景image
LVM_SETCALLBACKMASK // 設定清單視圖控件的回調掩碼
LVM_SETCOLUMN // 設定列
LVM_SETCOLUMNORDERARRAY
LVM_SETCOLUMNWIDTH // 設定列的寬度
LVM_SETEXTENDEDLISTVIEWSTYLE
LVM_SETHOTCURSOR // 設定滑鼠焦點到該項
LVM_SETHOTITEM // 設定焦點項
LVM_SETHOVERTIME
LVM_SETICONSPACING
LVM_SETIMAGELIST
LVM_SETITEM
LVM_SETITEMCOUNT
LVM_SETITEMPOSITION
LVM_SETITEMPOSITION32
LVM_SETITEMSTATE // 設定項狀态
LVM_SETITEMTEXT // 設定行文本
LVM_SETSELECTIONMARK
LVM_SETTEXTBKCOLOR // 設定文本背景顔色
LVM_SETTEXTCOLOR // 設定文本顔色
LVM_SETTOOLTIPS // 設定提示
LVM_SETUNICODEFORMAT
LVM_SETWORKAREAS
LVM_SORTITEMS // 排列項
LVM_SUBITEMHITTEST // 子項滑鼠點選的詳細資訊
LVM_UPDATE // 更新資料
2. List View Control Notification Messages
LVN_BEGINDRAG // 開始拖動
LVN_BEGINLABELEDIT // 開始編輯标簽
LVN_BEGINRDRAG
LVN_COLUMNCLICK // 列單擊
LVN_DELETEALLITEMS // 删除所有項
LVN_DELETEITEM // 删除項
LVN_ENDLABELEDIT // 啟用項
LVN_GETDISPINFO // 擷取
LVN_GETINFOTIP
LVN_HOTTRACK
LVN_INSERTITEM // 插入項
LVN_ITEMACTIVATE // 項活動
LVN_ITEMCHANGED // 項改變
LVN_ITEMCHANGING // 項改變中
LVN_KEYDOWN // 鍵按下
LVN_MARQUEEBEGIN // 滑鼠點選開始拖動
LVN_ODCACHEHINT // 滾動視圖時
LVN_ODFINDITEM
LVN_ODSTATECHANGED
LVN_SETDISPINFO
http://blog.csdn.net/yl_wh/article/details/7879837
ZWhwnd = CreateWindow ( WC_LISTVIEW,NULL,WS_VISIBLE | WS_CHILD | WS_BORDER |
LVS_REPORT | LVS_SHOWSELALWAYS,10,10,240,280,hwnd,( HMENU ) 1,( HINSTANCE ) GetWindowLong ( hwnd,GWL_HINSTANCE ),NULL );
SendMessageA ( ZWhwnd,LVM_SETEXTENDEDLISTVIEWSTYLE,LVS_EX_GRIDLINES,-1 );
LVCOLUMN ColInfo1 = { 0 };
LVITEM p1 = { 0 };
ColInfo1.mask = LVCF_TEXT | LVCF_WIDTH | LVCF_FMT | LVS_REPORT;
ColInfo1.fmt = LVCFMT_CENTER;
ColInfo1.iSubItem = 0;
ColInfo1.cx = 80;
ColInfo1.pszText = L"目标位址";
SendMessageA ( ZWhwnd,LVM_INSERTCOLUMN,0,( LPARAM ) &ColInfo1 );
ColInfo1.pszText = L"目前的值";
ColInfo1.iSubItem = 1;
SendMessageA ( ZWhwnd,LVM_INSERTCOLUMN,1,( LPARAM ) &ColInfo1 );
ColInfo1.pszText = L"搜尋的值";
ColInfo1.iSubItem = 2;
SendMessageA ( ZWhwnd,LVM_INSERTCOLUMN,2,( LPARAM ) &ColInfo1 );
p1.mask = LVIF_TEXT | LVIF_STATE;
p1.state = INDEXTOSTATEIMAGEMASK ( 1 );
p1.pszText = L"00400000";
SendMessageA ( ZWhwnd,LVM_INSERTITEM,0,( LPARAM ) &p1 );
SendMessageA ( ZWhwnd,LVM_INSERTITEM,0,( LPARAM ) &p1 );
p1.pszText = L"00400001";
p1.iSubItem = 1;//第幾列
SendMessageA ( ZWhwnd,LVM_SETITEMTEXT,0,( LPARAM ) &p1 );
SendMessageA ( ZWhwnd,LVM_SETITEMTEXT,1,( LPARAM ) &p1 );
SendMessageA ( ZWhwnd,LVM_SETITEMTEXT,2,( LPARAM ) &p1 );