已閱讀5頁(yè),還剩14頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
MFC ListControl控件用法開(kāi)發(fā)環(huán)境:visual studio 20081、新建一個(gè)基于對(duì)話框的MFC應(yīng)用程序。在對(duì)話框上拖放一個(gè)listcontrol控件和一個(gè)button控件,給listcontrol控件添加一個(gè)名為m_StoreItems的變量。添加button的點(diǎn)擊響應(yīng)函數(shù)。void CDepartmentStoreDlg:OnBnClickedNewitem()/ TODO: 在此添加控件通知處理程序代碼srand(unsigned)time(NULL);TCHAR strNumber20;/這里不要定義為char或者CString類型,不然后面 lvItem.pszText會(huì)報(bào)錯(cuò)。int number1 = rand() % 100;int number2 = rand() % 100;wsprintf(strNumber,_T(%d-%d), number1, number2);LVITEM lvItem;lvItem.mask = LVIF_TEXT;lvItem.iItem = 0;lvItem.iSubItem = 0;lvItem.pszText = strNumber;m_StoreItems.InsertItem(&lvItem);運(yùn)行效果如下,效果相當(dāng)于listbox控件,就是一個(gè)列表,一行一行的:現(xiàn)在設(shè)置為報(bào)表視圖,顯示成表格形式。在初始化函數(shù)里添加:BOOL CDepartmentStoreDlg:OnInitDialog()CDialog:OnInitDialog();/ TODO: 在此添加額外的初始化代碼m_StoreItems.SetView(LVS_REPORT);/如果在屬性里面設(shè)置了listview的view是report,這里就沒(méi)必要了,默認(rèn)的是iconLVCOLUMN lvColumn;lvColumn.mask = LVCF_FMT | LVCF_TEXT | LVCF_WIDTH; /掩碼設(shè)置了fmt值、顯示列標(biāo)題和指定寬度lvColumn.fmt = LVCFMT_LEFT; /設(shè)置作對(duì)其模式lvColumn.cx = 120; /設(shè)置標(biāo)題的寬度為120個(gè)像素lvColumn.pszText = _T(Full Name); /設(shè)置標(biāo)題(列名)m_StoreItems.InsertColumn(0, &lvColumn); /添加列,索引為0lvColumn.mask = LVCF_FMT | LVCF_TEXT | LVCF_WIDTH;lvColumn.fmt = LVCFMT_LEFT;lvColumn.cx = 100;lvColumn.pszText = _T(Profession);m_StoreItems.InsertColumn(1, &lvColumn);lvColumn.mask = LVCF_FMT | LVCF_TEXT | LVCF_WIDTH;lvColumn.fmt = LVCFMT_LEFT;lvColumn.cx = 80;lvColumn.pszText = _T(Fav Sport);m_StoreItems.InsertColumn(2, &lvColumn);lvColumn.mask = LVCF_FMT | LVCF_TEXT | LVCF_WIDTH;lvColumn.fmt = LVCFMT_LEFT;lvColumn.cx = 75;lvColumn.pszText = _T(Hobby);m_StoreItems.InsertColumn(3, &lvColumn);下面給報(bào)表添加點(diǎn)實(shí)際的內(nèi)容。繼續(xù)在初始化函數(shù)里添加:LVITEM lvItem;int nItem;lvItem.mask = LVIF_TEXT;/這里的掩碼設(shè)置一定要注意,因?yàn)閕tem和column的掩碼值很像,例如LVIF_TEXT和LVCF_TEXT,I對(duì)應(yīng)的item,C對(duì)應(yīng)的column,不然的話會(huì)顯示不出來(lái)的,這個(gè)地方害死我了,因?yàn)橛胁寮詣?dòng)補(bǔ)全代碼,補(bǔ)全后沒(méi)注意看,結(jié)果沒(méi)有對(duì)應(yīng),郁悶了好一會(huì)lvItem.iItem = 0;/行號(hào)(索引,從0開(kāi)始),報(bào)表相當(dāng)于二維數(shù)組的模式,添加行內(nèi)容時(shí)要指定行號(hào)和列號(hào)lvItem.iSubItem = 0;/列號(hào)(索引,從0開(kāi)始)lvItem.pszText = _T(Sandra C. Anschwitz);/內(nèi)容nItem = m_StoreItems.InsertItem(&lvItem);/插入這一行,返回行號(hào)(索引)m_StoreItems.SetItemText(nItem, 1, _T(Singer);/設(shè)置行索引(行號(hào))和列索引(列號(hào))的值m_StoreItems.SetItemText(nItem, 2, _T(HandBall);m_StoreItems.SetItemText(nItem, 3, _T(Beach);lvItem.mask = LVIF_TEXT;lvItem.iItem = 1;lvItem.iSubItem = 0;lvItem.pszText = _T(Roger A. Miller);nItem = m_StoreItems.InsertItem(&lvItem);m_StoreItems.SetItemText(nItem, 1, _T(Footballer);m_StoreItems.SetItemText(nItem, 2, _T(Tennis);m_StoreItems.SetItemText(nItem, 3, _T(Teaching);lvItem.mask = LVIF_TEXT;lvItem.iItem = 2;lvItem.iSubItem = 0;lvItem.pszText = _T(Marie-Julie W. Gross);nItem = m_StoreItems.InsertItem(&lvItem);m_StoreItems.SetItemText(nItem, 1, _T(Student);m_StoreItems.SetItemText(nItem, 2, _T(Boxing);m_StoreItems.SetItemText(nItem, 3, _T(Programming);lvItem.mask = LVIF_TEXT;lvItem.iItem = 3;lvItem.iSubItem = 0;lvItem.pszText = _T(Ella Pius Roger);nItem = m_StoreItems.InsertItem(&lvItem);m_StoreItems.SetItemText(nItem, 1, _T(Architect);m_StoreItems.SetItemText(nItem, 2, _T(Ping-Pong);m_StoreItems.SetItemText(nItem, 3, _T(Songo);中途小結(jié):在報(bào)表視圖中,要做的主要有下面幾步:1)確保當(dāng)前視圖為報(bào)表視圖,在屬性窗口設(shè)置view或者在代碼中設(shè)置為view模式2)添加列:用到的數(shù)據(jù)結(jié)構(gòu)是LVCOLUMN (就是list view column,對(duì)應(yīng)的掩碼也是LVCF_,list view column format)3)添加行:用到的數(shù)據(jù)結(jié)構(gòu)是LVITEM (list view item,對(duì)應(yīng)的掩碼是LVIF_,list view item format)添加行的時(shí)候先添加第一個(gè)元素,即行索引為nItem,列索引為0,然后InsertItem,返回當(dāng)前行的索引,之后就是設(shè)置該行的其他元素了,指定行、列索引和設(shè)置值即可。4)刪除行:BOOL DeleteItem(int nItem);刪除指定的索引為nItem的行內(nèi)容。有時(shí)候我們會(huì)先選中某行,然后刪除,這個(gè)時(shí)候需要用到函數(shù)int GetNextItem(int nItem, int nFlags);從指定的索引nItem(不包括該索引,如果要包括該行的話,設(shè)置nItem -1即可)開(kāi)始尋找滿足nFlags條件的Item,成功則返回找到的Item的索引(如果有多個(gè),則返回第一個(gè)),失敗返回-1.這樣的話如果要?jiǎng)h除選中的某行,則可以這樣實(shí)現(xiàn) m_StoreItems.DeleteItem(m_StoreItems.GetNextItem(-1,LVNI_SELECTED);(建議設(shè)置擴(kuò)展風(fēng)格時(shí),把整行選中設(shè)置進(jìn)來(lái)this-m_StoreItems.SetExtendedStyle( LVS_EX_FULLROWSELECT);這樣選中的時(shí)候就是一行了,否則會(huì)是一格)。如果要?jiǎng)h除多行選中的,則可以用下面的代碼:int nIndex;do nIndex = m_StoreItems.GetNextItem(-1,LVNI_SELECTED);m_StoreItems.DeleteItem(nIndex); while (nIndex != -1);這里添加一點(diǎn)調(diào)整列寬的,以下代碼可供參考(摘自CSDN):voidCMyListView:AutoAdjustColumnWidth() CHeaderCtrl*pHeaderCtrl=m_pListCtrl-GetHeaderCtrl(); m_pListCtrl-SetRedraw(FALSE);/防止閃爍 pHeaderCtrl-SetRedraw(FALSE);/防止閃爍intnColumnCount=pHeaderCtrl-GetItemCount(); /獲取列數(shù)for(inti=0; iSetColumnWidth(i, LVSCW_AUTOSIZE);intnColumnWidth=m_pListCtrl-GetColumnWidth(i); m_pListCtrl-SetColumnWidth(i, LVSCW_AUTOSIZE_USEHEADER); intnHeaderWidth=m_pListCtrl-GetColumnWidth(i); m_pListCtrl-SetColumnWidth(i, max(nColumnWidth, nHeaderWidth)+10);pHeaderCtrl-SetRedraw(TRUE);/此處開(kāi)啟刷新,避免閃爍 m_pListCtrl-SetRedraw(TRUE);pHeaderCtrl-Invalidate();/Update Window to redraw. pHeaderCtrl-UpdateWindow();下面就開(kāi)始設(shè)置圖片了。新建兩個(gè)bitmap資源,大小為16*16,ID分別為IDB_UP和IDB_LOSANGE,初始化函數(shù)CDepartmentStoreDlg:OnInitDialog()改為如下:m_StoreItems.SetView(LVS_REPORT);LVCOLUMN lvColumn;CBitmap bmpUP, bmpLosange;bmpUP.LoadBitmap(IDB_UP);bmpLosange.LoadBitmap(IDB_LOSANGE);CImageList *ImgHeaders = new CImageList();ImgHeaders-Create(16, 16, ILC_MASK, 1, 1);ImgHeaders-Add(&bmpUP, RGB(0, 0, 0);ImgHeaders-Add(&bmpLosange, RGB(0, 0, 0);m_StoreItems.SetImageList(ImgHeaders, LVSIL_SMALL);lvColumn.mask = LVCF_FMT | LVCF_TEXT | LVCF_WIDTH | LVCF_IMAGE;lvColumn.fmt = LVCFMT_LEFT | LVCFMT_IMAGE;lvColumn.cx = 120;lvColumn.pszText = _T(Full Name);lvColumn.iImage = 0;m_StoreItems.InsertColumn(0, &lvColumn);lvColumn.mask = LVCF_FMT | LVCF_TEXT | LVCF_WIDTH;lvColumn.fmt = LVCFMT_LEFT;lvColumn.cx = 100;lvColumn.pszText = _T(Profession);m_StoreItems.InsertColumn(1, &lvColumn);lvColumn.mask = LVCF_FMT | LVCF_TEXT | LVCF_WIDTH | LVCF_IMAGE;lvColumn.fmt = LVCFMT_LEFT | LVCFMT_IMAGE;lvColumn.iImage = 1;lvColumn.cx = 80;lvColumn.pszText = _T(Fav Sport);m_StoreItems.InsertColumn(2, &lvColumn);lvColumn.mask = LVCF_FMT | LVCF_TEXT | LVCF_WIDTH;lvColumn.fmt = LVCFMT_LEFT;lvColumn.cx = 75;lvColumn.pszText = _T(Hobby);m_StoreItems.InsertColumn(3, &lvColumn);繼續(xù)完善。給CDepartmentStoreDlg類添加變量:CImageList m_SmallImg;CImageList m_LargeImg; 函數(shù):DWORD GetViewType(void);void SetViewType(DWORD dwViewType);cpp中的實(shí)現(xiàn):DWORD CDepartmentStoreDlg:GetViewType(void)return (GetStyle() & LVS_TYPEMASK);void CDepartmentStoreDlg:SetViewType(DWORD dwViewType)DWORD dwCurType;HWND hWnd;hWnd = this-m_StoreItems;GetSafeHwnd();dwCurType = :GetWindowLong(hWnd, GWL_STYLE);dwCurType &= LVS_TYPEMASK;dwViewType |= dwCurType;:SetWindowLong(hWnd, GWL_STYLE, dwViewType);窗體上添加Large、Small、List、Details四個(gè)button,添加鼠標(biāo)點(diǎn)擊事件的響應(yīng)函數(shù),如下:void CDepartmentStoreDlg:OnBnClickedLarge()/ TODO: 在此添加控件通知處理程序代碼SetViewType(LVS_ICON);void CDepartmentStoreDlg:OnBnClickedSmall()/ TODO: 在此添加控件通知處理程序代碼if( GetViewType() != LVS_SMALLICON)SetViewType(LVS_SMALLICON);void CDepartmentStoreDlg:OnBnClickedDetail()/ TODO: 在此添加控件通知處理程序代碼if( GetViewType() != LVS_REPORT)SetViewType(LVS_REPORT);void CDepartmentStoreDlg:OnBnClickedList()/ TODO: 在此添加控件通知處理程序代碼if( GetViewType() != LVS_LIST)SetViewType(LVS_LIST);窗體上的New Item按鈕調(diào)用的窗體如下,用來(lái)添加數(shù)據(jù), 給窗體創(chuàng)建類,并給控件添加相應(yīng)變量。添加2個(gè)位圖資源,屬性為ID:IDB_Larging Weight:162 Height:32,ID:IDB_Smalling Weight:80 Height:16 初始化函數(shù)代碼:m_StoreItems.SetView(LVS_REPORT);LVCOLUMN lvColumn;lvColumn.mask = LVCF_FMT | LVCF_TEXT | LVCF_WIDTH;lvColumn.fmt = LVCFMT_CENTER;lvColumn.cx = 60;lvColumn.pszText = _T(Item #);this-m_StoreItems.InsertColumn(0, &lvColumn);lvColumn.mask = LVCF_FMT | LVCF_TEXT | LVCF_WIDTH;lvColumn.fmt = LVCFMT_LEFT;lvColumn.cx = 100;lvColumn.pszText = _T(Category);this-m_StoreItems.InsertColumn(1, &lvColumn);lvColumn.mask = LVCF_FMT | LVCF_TEXT | LVCF_WIDTH;lvColumn.fmt = LVCFMT_LEFT;lvColumn.cx = 160;lvColumn.pszText = _T(Item Name);this-m_StoreItems.InsertColumn(2, &lvColumn);lvColumn.mask = LVCF_FMT | LVCF_TEXT | LVCF_WIDTH;lvColumn.fmt = LVCFMT_LEFT;lvColumn.cx = 80;lvColumn.pszText = _T(Size);this-m_StoreItems.InsertColumn(3, &lvColumn);lvColumn.mask = LVCF_FMT | LVCF_TEXT | LVCF_WIDTH;lvColumn.fmt = LVCFMT_RIGHT;lvColumn.cx = 60;lvColumn.pszText = _T(Unit Price);this-m_StoreItems.InsertColumn(4, &lvColumn);lvColumn.mask = LVCF_FMT | LVCF_TEXT | LVCF_WIDTH;lvColumn.fmt = LVCFMT_RIGHT;lvColumn.cx = 30;lvColumn.pszText = _T(Qty);this-m_StoreItems.InsertColumn(5, &lvColumn);this-m_StoreItems.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);/設(shè)置擴(kuò)展風(fēng)格m_SmallImg.Create(IDB_Smalling, 16, 1, RGB(255, 255, 255); m_LargeImg.Create(IDB_Larging, 32, 1, RGB(255, 255, 245); m_StoreItems.SetImageList(&m_SmallImg, LVSIL_SMALL); m_StoreItems.SetImageList(&m_LargeImg, LVSIL_NORMAL);New Item按鈕的響應(yīng)函數(shù)為(將添加item的類include進(jìn)來(lái)):void CDepartmentStoreDlg:OnBnClickedNewitem()/ TODO: 在此添加控件通知處理程序代碼CNewItemDlg dlg;/這個(gè)是添加新數(shù)據(jù)的窗體類srand(unsigned)time(NULL);TCHAR strNumber20;int num
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- racemic-9-Nor-9β-hydroxy-Hexahydrocannabinol-生命科學(xué)試劑-MCE-7978
- Glyceryl-dilaurate-生命科學(xué)試劑-MCE-3370
- 二零二五年度美發(fā)店租賃合同包含美發(fā)店品牌形象維護(hù)條款
- 2025年度智能化舞臺(tái)搭建安全責(zé)任及技術(shù)服務(wù)合同
- 2025年度銀行貸款反擔(dān)保合同違約責(zé)任合同
- 2025年度父母出資購(gòu)房子女房產(chǎn)增值收益分配協(xié)議書(shū)
- 施工日志填寫樣本屋面防水工程
- 職場(chǎng)技能提升與自主創(chuàng)業(yè)的實(shí)踐案例分析
- DB6108T105-2025山楂栽培技術(shù)規(guī)范
- 中外合作辦學(xué)合同協(xié)議
- 急性缺血性卒中再灌注治療指南2024解讀
- 暑假假期安全教育(課件)-小學(xué)生主題班會(huì)
- 2025年中考英語(yǔ)總復(fù)習(xí):閱讀理解練習(xí)題30篇(含答案解析)
- 陜西省英語(yǔ)中考試卷與參考答案(2024年)
- 中建醫(yī)院幕墻工程專項(xiàng)方案
- 基于OBE理念的世界現(xiàn)代史教學(xué)與學(xué)生歷史思維培養(yǎng)探究
- 施工現(xiàn)場(chǎng)揚(yáng)塵污染治理巡查記錄
- 2024年列車員技能競(jìng)賽理論考試題庫(kù)500題(含答案)
- 中南大學(xué)《藥理學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 《無(wú)人機(jī)測(cè)繪技術(shù)》項(xiàng)目3任務(wù)2無(wú)人機(jī)正射影像數(shù)據(jù)處理
- 《ISO 55013-2024 資產(chǎn)管理-數(shù)據(jù)資產(chǎn)管理指南》專業(yè)解讀和應(yīng)用指導(dǎo)材料(雷澤佳編制-2024B0)-121-240
評(píng)論
0/150
提交評(píng)論