欧美大屁股bbbbxxxx,狼人大香伊蕉国产www亚洲,男ji大巴进入女人的视频小说,男人把ji大巴放进女人免费视频,免费情侣作爱视频

歡迎來到入門教程網(wǎng)!

C語言

當(dāng)前位置:主頁 > 軟件編程 > C語言 >

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

來源:本站原創(chuàng)|時間:2020-01-10|欄目:C語言|點擊: 次

1\在開發(fā)項目時,使用到了 listcontrol 控件,就一些問題,做一下備注,以備以后使用

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

(2) 給list項目 添加一個列 .InsertColumn(0, _T("編號"));

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

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

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

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

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

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

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

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

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

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

   例如:

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

(9 )  對于字體的設(shè)置,我們可以使用SetFont函數(shù)來實現(xiàn)。以修改CListView的字體為例,在OnInitialUpdate函數(shù)中插入列之前調(diào)用SetFontSelf函數(shù)(該函數(shù)自定義,如下示例所示)。首先創(chuàng)建一個字體,然后調(diào)用SetFont進行設(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) 點擊表頭時進行歸類排序

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

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

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

int SetItemData(int nIndex,  DWORD_PTR dwItemData )

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

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

BOOL SortItems( PFNLVCOMPARE pfnCompare,DWORD_PTR dwData )

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

③ SetItemData在初始插入數(shù)據(jù)時進行調(diào)用來設(shè)置,SortItems則在點擊列表頭時響應(yīng)的消息處理函數(shù)中進行設(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);              //時間
    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:    //時間
    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 控件綁定一個 imagelist 項目

方法如下

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();   //這一句話 非常的重要,如果沒有這句話, 圖標(biāo)不會顯示

前兩句的意思就是 建立一個 CImagelist 項目

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

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

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

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

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

上一篇:C++ 簡單實現(xiàn)MFC ListControl 點擊列頭排序

欄    目:C語言

下一篇:VC實現(xiàn)對話框窗口任意分割

本文標(biāo)題:C++ 關(guān)于MFC List Control 控件的總結(jié)

本文地址:http://mengdiqiu.com.cn/a1/Cyuyan/3034.html

網(wǎng)頁制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語言數(shù)據(jù)庫服務(wù)器

如果侵犯了您的權(quán)利,請與我們聯(lián)系,我們將在24小時內(nèi)進行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負任何責(zé)任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有