欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++ 關(guān)于MFC List Control 控件的總結(jié)

 更新時(shí)間:2015年06月29日 11:04:16   投稿:hebedich  
這篇文章主要介紹了C++ 關(guān)于MFC List Control 控件的總結(jié)的相關(guān)資料,十分的詳細(xì),有需要的朋友可以參考下

1\在開(kāi)發(fā)項(xiàng)目時(shí),使用到了 listcontrol 控件,就一些問(wèn)題,做一下備注,以備以后使用

(1)  給list項(xiàng)目 刪除所有的項(xiàng)目  DeleteAllItems();

(2) 給list項(xiàng)目 添加一個(gè)列 .InsertColumn(0, _T("編號(hào)"));

(3)給list a項(xiàng)目 設(shè)置列的寬度 .SetColumnWidth(0, 50);

(4) 在添加項(xiàng)目之前 可以使用 .SetRedraw(false); 來(lái)禁止 重畫(huà),這樣可以提高效率.當(dāng)添加完成后,可以 使用 .SetRedraw(true);  重新啟用重畫(huà)

  (5) 添加項(xiàng)目:  m_List_IpList.InsertItem(3, _T("4"), 3);

     第1個(gè)參數(shù)是 行數(shù),  如果放在第0行,就寫(xiě)為0 .這里的號(hào)必須是一個(gè)合理的號(hào),不合理的號(hào),會(huì)出現(xiàn)錯(cuò)誤

第2個(gè)參數(shù)是 行的標(biāo)題

第3個(gè)參數(shù)是 對(duì)應(yīng)的  顯示圖標(biāo) 號(hào),后面會(huì)講到,如果不使用,就設(shè)置為 -1

(6)對(duì)于非 report項(xiàng)目來(lái)講,第 (5)條就可以了,但是對(duì)于 Report 樣式,還需要添加一些其它列的信息,可以使用   SetItemText(0, 1, _T("192.168.1.4"));  來(lái)添加其它的內(nèi)容

(7)  可以使用 SetItemData() 來(lái)在對(duì)應(yīng)的行中,保存一些重要的數(shù)據(jù)信息.用于程序處理

(8) 關(guān)于行高的調(diào)整  調(diào)整行高的方法有多個(gè),但是建議使用Cimagelist 來(lái)調(diào)節(jié)

     設(shè)置CListCtrl的行高沒(méi)有函數(shù)接口,可以通過(guò)自繪來(lái)實(shí)現(xiàn),但是比較麻煩。有一個(gè)比較簡(jiǎn)單的方法是通過(guò)使用一個(gè)空白的圖像將行撐起來(lái),使其高度發(fā)生變化。示例如下:

   例如:

CImageList m_image; 
m_image.Create(1,24,ILC_COLOR32,1,0); 
m_listInfo.SetImageList(&m_image, LVSIL_SMALL);
 

(9 )  對(duì)于字體的設(shè)置,我們可以使用SetFont函數(shù)來(lái)實(shí)現(xiàn)。以修改CListView的字體為例,在OnInitialUpdate函數(shù)中插入列之前調(diào)用SetFontSelf函數(shù)(該函數(shù)自定義,如下示例所示)。首先創(chuàng)建一個(gè)字體,然后調(diào)用SetFont進(jìn)行設(shè)置。需要注意的是,在退出時(shí)需要delete 掉創(chuàng)建的字體,避免內(nèi)存泄露。

//設(shè)置字體和大小
void CMyListView::SetFontSelf(int nHeight, LPCTSTR lpszFacename)
{
  //先刪除原有字體
  if(m_font != NULL)
    delete m_font;
  m_font = new CFont;
  //創(chuàng)建字體
  m_font->CreateFont(
    nHeight,          // nHeight
    0,             // nWidth
    0,             // nEscapement
    0,             // nOrientation
    FW_NORMAL,         // nWeight
    FALSE,           // bItalic
    FALSE,           // bUnderline
    0,             // cStrikeOut
    ANSI_CHARSET,       // nCharSet
    OUT_DEFAULT_PRECIS,    // nOutPrecision
    CLIP_DEFAULT_PRECIS,    // nClipPrecision
    DEFAULT_QUALITY,      // nQuality
    DEFAULT_PITCH | FF_SWISS, // nPitchAndFamily
    lpszFacename);       // lpszFacename

  //設(shè)置字體
  CListCtrl &theCtrl = GetListCtrl();    //獲取控制權(quán),引用變量
  theCtrl.SetFont(m_font, TRUE);
}

(10) 點(diǎn)擊表頭時(shí)進(jìn)行歸類排序

         系統(tǒng)通過(guò)發(fā)送LVM_SORTITEMS消息來(lái)處理歸類問(wèn)題,在該消息的處理函數(shù)中需要調(diào)用一個(gè)回調(diào)函數(shù),這個(gè)回調(diào)函數(shù)需要我們來(lái)設(shè)計(jì),以完成不同的歸類方法?;卣{(diào)函數(shù)原型如下:
int CALLBACK CompareFunc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)

          針對(duì)上述回調(diào)函數(shù),有以下幾點(diǎn)需要搞清楚:

① 對(duì)于參數(shù)lparam1和lparam2,分別為CListCtrl的兩行數(shù)據(jù),是用于比較的對(duì)象。通過(guò)CListCtrl的成員函數(shù)SetItemData來(lái)設(shè)置,該函數(shù)原型:

int SetItemData(int nIndex,  DWORD_PTR dwItemData )

其第一個(gè)參數(shù)為行號(hào),第二個(gè)參數(shù)指明了該行對(duì)應(yīng)的參數(shù)。參數(shù)dwItemData 通常設(shè)為一行參數(shù)的數(shù)組,如: pData[2][2] = {{1, 3},{2, 3}}; 每次使用pData[i]作為dwItemData。

② 對(duì)于參數(shù)lParamSort,用于指明列項(xiàng),即第幾列。該參數(shù)和回調(diào)函數(shù)一同通過(guò)CListCtrl的成員函數(shù)SortItems來(lái)設(shè)置,其函數(shù)原型為:

BOOL SortItems( PFNLVCOMPARE pfnCompare,DWORD_PTR dwData )

參數(shù) pfnCompare 為回調(diào)函數(shù)入口地址, 參數(shù)dwData 為列項(xiàng)。

③ SetItemData在初始插入數(shù)據(jù)時(shí)進(jìn)行調(diào)用來(lái)設(shè)置,SortItems則在點(diǎn)擊列表頭時(shí)響應(yīng)的消息處理函數(shù)中進(jìn)行設(shè)置。

示例如下:

//初始化列表視圖控件
BOOL CDataAnalysis::InitListCtl()
{
  //其他處理,包括設(shè)置風(fēng)格,插入列等等
  //插入行
  for(int i=0; i<LineNum; i++)
  {
    //要將char*轉(zhuǎn)換為wchar_t*
    mbstowcs_s(&converted, wStr, 30, m_analysis[i].Date, _TRUNCATE);
    m_listAnalysis.InsertItem(i, wStr);                //日期
    mbstowcs_s(&converted, wStr, 30, m_analysis[i].Time, _TRUNCATE);
    m_listAnalysis.SetItemText(i, 1, wStr);              //時(shí)間
    mbstowcs_s(&converted, wStr, 30, m_analysis[i].ID, _TRUNCATE);
    m_listAnalysis.SetItemText(i, 2, wStr);              //ID
    m_listAnalysis.SetItemText(i, 3, m_analysis[i].lpszEvent);    //事件

    //設(shè)置回調(diào)函數(shù)的參數(shù)
    m_listAnalysis.SetItemData(i, (LPARAM)(m_analysis+i));
  }

  return TRUE;
}
void CDataAnalysis::OnHdnItemclickAnalysisList(NMHDR *pNMHDR, LRESULT *pResult)
{
  LPNMHEADER phdr = reinterpret_cast<LPNMHEADER>(pNMHDR);
  // TODO: Add your control notification handler code here

  //設(shè)置回調(diào)函數(shù)的參數(shù)和入口地址
  m_listAnalysis.SortItems(SortFunc, phdr->iItem);

  *pResult = 0;
}
//排序的回調(diào)函數(shù)
int CALLBACK SortFunc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
{
  int result;    //返回值

  //兩行的參數(shù),用于比較
  ANALYSISFORMAT* pAnalysis1 = (ANALYSISFORMAT*)lParam1;
  ANALYSISFORMAT* pAnalysis2 = (ANALYSISFORMAT*)lParam2;

  //排序
  switch(lParamSort)
  {
  case 0:    //日期
    result = strcmp(pAnalysis1->Date, pAnalysis2->Date);
    break;
  case 1:    //時(shí)間
    result = strcmp(pAnalysis1->Time, pAnalysis2->Time);
    break;
  case 2:    //ID
    result = strcmp(pAnalysis1->ID, pAnalysis2->ID);
    break;
  case 3:    //事件
    result = wcscmp(pAnalysis1->lpszEvent, pAnalysis2->lpszEvent);
    break;
  default:
    break;
  }

  return result;
}

關(guān)于如何使用圖標(biāo)的方法

需要首先將 list control 控件綁定一個(gè) imagelist 項(xiàng)目

方法如下

CImageList m_image;
m_image.Create(IDB_IP_BITMAP, 16, 1, RGB(255, 255, 0));
m_List_IpList.SetImageList(&m_image, LVSIL_SMALL);
m_image.Detach();   //這一句話 非常的重要,如果沒(méi)有這句話, 圖標(biāo)不會(huì)顯示

前兩句的意思就是 建立一個(gè) CImagelist 項(xiàng)目

其中 第二句 在VB6.0上 可能不存在, 在 VS2012中 可以使用

就是直接加載 位圖資源到 圖象列表

在將圖象列表綁定到需要顯示的項(xiàng)目后, 要執(zhí)行一次 Detach() 函數(shù)

目的:     調(diào)用此功能分離圖像列表從 CImageList 對(duì)象。

以上所述就是本文的全部?jī)?nèi)容了,希望大家能夠喜歡。

相關(guān)文章

  • C++中友元類和嵌套類使用詳解

    C++中友元類和嵌套類使用詳解

    友元是一種允許非類成員函數(shù)訪問(wèn)類的非公有成員的一種機(jī)制??梢园岩粋€(gè)函數(shù)指定為類的友元,也可以把整個(gè)類指定為另一個(gè)類的友元,所謂嵌套類,就是在類中聲明的類。如下代碼中,類Inner就是一個(gè)嵌套類,類Outer是外圍類
    2022-08-08
  • C++計(jì)算整數(shù)序列的最長(zhǎng)遞增子序列的長(zhǎng)度操作

    C++計(jì)算整數(shù)序列的最長(zhǎng)遞增子序列的長(zhǎng)度操作

    這篇文章主要介紹了C++計(jì)算整數(shù)序列的最長(zhǎng)遞增子序列的長(zhǎng)度操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-12-12
  • C++ Template 基礎(chǔ)篇(一):函數(shù)模板詳解

    C++ Template 基礎(chǔ)篇(一):函數(shù)模板詳解

    這篇文章主要介紹了C++ Template函數(shù)模板,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • 深入解析C++編程中的純虛函數(shù)和抽象類

    深入解析C++編程中的純虛函數(shù)和抽象類

    這篇文章主要介紹了深入解析C++編程中的純虛函數(shù)和抽象類,是C++入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-09-09
  • DSP中浮點(diǎn)轉(zhuǎn)定點(diǎn)運(yùn)算--定點(diǎn)數(shù)的加減乘除運(yùn)算

    DSP中浮點(diǎn)轉(zhuǎn)定點(diǎn)運(yùn)算--定點(diǎn)數(shù)的加減乘除運(yùn)算

    本文主要介紹DSP中定點(diǎn)數(shù)的加減乘除運(yùn)算,很值得學(xué)習(xí)一下,需要的朋友可以參考一下。
    2016-06-06
  • C++如何去掉字符串首尾的空格

    C++如何去掉字符串首尾的空格

    這篇文章主要介紹了C++如何去掉字符串首尾的空格問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • OpenCV基于背景減除實(shí)現(xiàn)行人計(jì)數(shù)

    OpenCV基于背景減除實(shí)現(xiàn)行人計(jì)數(shù)

    本文主要介紹了如何使用OpenCV C++對(duì)視頻中的人流量進(jìn)行統(tǒng)計(jì)。文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)OpenCV有一定的幫助,需要的可以了解一下
    2022-01-01
  • C語(yǔ)言實(shí)現(xiàn)ATM機(jī)存取款系統(tǒng)

    C語(yǔ)言實(shí)現(xiàn)ATM機(jī)存取款系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)ATM機(jī)存取款系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • C/C++程序鏈接與反匯編工具objdump的使用介紹

    C/C++程序鏈接與反匯編工具objdump的使用介紹

    這篇文章主要介紹了C/C++程序鏈接與反匯編工具objdump的使用,程序構(gòu)建過(guò)程的第二個(gè)階段就是鏈接,鏈接過(guò)程輸入的是目標(biāo)文件的集合。每個(gè)目標(biāo)文件可以被看作單個(gè)源代碼文件的二進(jìn)制存儲(chǔ)版本
    2023-02-02
  • C++破壞MBR的代碼

    C++破壞MBR的代碼

    這篇文章主要介紹了C++破壞MBR的代碼,涉及到對(duì)硬盤(pán)的主引導(dǎo)記錄的破壞性操作,具有一定的參考價(jià)值,需要的朋友可以參考下
    2014-10-10

最新評(píng)論