列表控制項可以看作是功能增強的
listbox
,它提供了四種風格,而且可以同時顯示一列的多中屬性值。
mfc中使用
clistctrl
類來封裝列表控制項的各種操作。通過呼叫
bool create( dword dwstyle, const rect& rect, cwnd* pparentwnd, uint nid );
建立乙個視窗,
dwstyle
中可以使用以下一些列表控制項的專用風格:
首先你需要設定列表控制項所使用的
imagelist
,如果你使用大圖示顯示風格,你就需要以如下形式呼叫:
cimagelist* setimagelist( cimagelist* pimagelist, lvsil_normal);
如果使用其它三種風格顯示而不想顯示圖示你可以不進行任何設定,否則需要以如下形式呼叫:
cimagelist* setimagelist( cimagelist* pimagelist, lvsil_small);
通過呼叫
int insertitem( int nitem, lpctstr lpszitem );
可以在列表控制項中
nitem
指明位置插入一項,
lpszitem
為顯示字元。除
lvs_report
風格外其他三種風格都只需要直接呼叫
insertitem
就可以了,但如果使用報表風格就必須先設定列表控制項中的列資訊。
通過呼叫
int insertcolumn( int ncol, lpctstr lpszcolumnheading, int nformat , int nwidth, int nsubitem);
可以插入列。
icol
為列的位置,從零開始,
lpszcolumnheading
為顯示的列名,
nformat
為顯示對齊方式,
nwidth
為顯示寬度,
nsubitem
為分配給該列的列索引。
在有多列的列表控制項中就需要為每一項指明其在每一列中的顯示字元,通過呼叫
bool setitemtext( int nitem, int nsubitem, lptstr lpsztext );
可以設定每列的顯示字元。
nitem
為設定的項的位置,
nsubitem
為列位置,
lpsztext
為顯示字元。下面的**演示了如何設定多列並插入資料:
m_list.setimagelist(&m_listsmall,lvsil_small);//
設定imagelist
m_list.insertcolumn(0,"col 1",lvcfmt_left,300,0);//
設定列m_list.insertcolumn(1,"col 2",lvcfmt_left,300,1);
m_list.insertcolumn(2,"col 3",lvcfmt_left,300,2);
m_list.insertitem(0,"item 1_1");//
插入行m_list.setitemtext(0,1,"item 1_2");//
設定該行的不同列的顯示字元
m_list.setitemtext(0,2,"item 1_3");
此外clistctrl
還提供了一些函式用於得到
/修改控制項的狀態。
colorref gettextcolor( )/bool settextcolor( colorref cr );
用於得到
/設定顯示的字元顏色。
colorref gettextbkcolor( )/bool settextbkcolor( colorref cr );
用於得到
/設定顯示的背景顏色。
void setitemcount( int icount );
用於得到新增進列表中項的數量。
bool deleteitem(int nitem);
用於刪除某一項,
bool deleteallitems( );
將刪除所有項。
bool setbkimage(hbitmap hbm, bool ftile , int xoffsetpercent, int yoffsetpercent);
用於設定背景位圖。
cstring getitemtext( int nitem, int nsubitem );
用於得到某項的顯示字元。
列表控制項的訊息對映同樣使用
on_notify
巨集,形式如同:
on_notify( wnotifycode, id, memberfxn )
,wnotifycode
為通知**,
id為產生該訊息的視窗id,
memberfxn
為處理函式,函式的原型如同
void on***list(nmhdr* pnmhdr, lresult* presult)
,其中pnmhdr
為一資料結構,在具體使用時需要轉換成其他型別的結構。對於列表控制項可能取值和對應的資料結構為: 關於
on_notify
有很多內容,將在以後的內容中進行詳細講解。
關於動態提供結點所顯示的字元:首先你在項時需要指明
lpszitem
引數為:
lpstr_textcallback
。在控制項顯示該結點時會通過傳送
tvn_getdispinfo
來取得所需要的字元,在處理該訊息時先將引數
pnmhdr
轉換為lpnmlvdispinfo
,然後填充其中
item.psztext
。通過item
中的iitem,isubitem
可以知道當前顯示的為那一項。下面的**演示了這種方法:
char szout[8][3]=;
//新增結點
m_list.insertitem(lpstr_textcallback,...)
VC List Ctrl控制項
vc list ctrl控制項 790 148普 及 網 633 http www.pujiwang.com 列表控制項可以看作是功能增強的listbox,它提供了四種風格,而且可以同時顯示一列的多中屬性值。mfc中使用clistctrl類來封裝列表控制項的各種操作。通過呼叫bool create ...
VC ListCtrl控制項的使用
在設計面板中,將控制項拉到視窗中,在屬性中修改自己向要的id,並且,右鍵單擊控制項,在新增變數中輸入成員變數,將該控制項新增到視窗類,作為成員變數。一般來說,我們使用listctrl是為了將他作為二維列表使用,那麼就需要在屬性面板裡找到view屬性,將值改為report。在onpaint訊息處理函式...
C 控制項 MenuStrip控制項(選單控制項)
一 概述 選單通過存放按照一般主題分組的命令將功能公開給使用者。menustrip 控制項是此版本的 visual studio 和 net framework 中的新功能。使用該控制項,可以輕鬆建立 microsoft office 中那樣的選單。menustrip 控制項支援多文件介面 mdi ...