亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

C++ 關于MFC List Control 控件的總結

2020-01-26 15:04:56
字體:
來源:轉載
供稿:網友

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

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

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

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

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

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

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

第2個參數是 行的標題

第3個參數是 對應的  顯示圖標 號,后面會講到,如果不使用,就設置為 -1

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

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

(8) 關于行高的調整  調整行高的方法有多個,但是建議使用Cimagelist 來調節

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

   例如:

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

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

//設置字體和大小void CMyListView::SetFontSelf(int nHeight, LPCTSTR lpszFacename){  //先刪除原有字體  if(m_font != NULL)    delete m_font;  m_font = new CFont;  //創建字體  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  //設置字體  CListCtrl &theCtrl = GetListCtrl();    //獲取控制權,引用變量  theCtrl.SetFont(m_font, TRUE);}

(10) 點擊表頭時進行歸類排序

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

          針對上述回調函數,有以下幾點需要搞清楚:

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

int SetItemData(int nIndex,  DWORD_PTR dwItemData )

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

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

BOOL SortItems( PFNLVCOMPARE pfnCompare,DWORD_PTR dwData )

參數 pfnCompare 為回調函數入口地址, 參數dwData 為列項。

③ SetItemData在初始插入數據時進行調用來設置,SortItems則在點擊列表頭時響應的消息處理函數中進行設置。

示例如下:

//初始化列表視圖控件BOOL CDataAnalysis::InitListCtl(){  //其他處理,包括設置風格,插入列等等  //插入行  for(int i=0; i<LineNum; i++)  {    //要將char*轉換為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);    //事件    //設置回調函數的參數    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  //設置回調函數的參數和入口地址  m_listAnalysis.SortItems(SortFunc, phdr->iItem);  *pResult = 0;}//排序的回調函數int CALLBACK SortFunc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort){  int result;    //返回值  //兩行的參數,用于比較  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;}

關于如何使用圖標的方法

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

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

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

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

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

目的:     調用此功能分離圖像列表從 CImageList 對象。

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲国产欧美精品| 啪一啪鲁一鲁2019在线视频| 日韩在线观看高清| 亚洲视频国产视频| 欧美成人免费一级人片100| 欧美电影免费观看高清| 久久久久久这里只有精品| 亚洲人成电影在线| 性欧美xxxx视频在线观看| 日韩高清免费观看| 992tv成人免费影院| 午夜精品久久久久久久男人的天堂| 国产v综合v亚洲欧美久久| 九九九热精品免费视频观看网站| 欧美精品一区二区免费| 国产亚洲精品高潮| 精品女同一区二区三区在线播放| 欧美激情手机在线视频| 一区二区三区美女xx视频| 亚洲日本欧美日韩高观看| 综合国产在线视频| 国模精品视频一区二区三区| 亚洲精品美女在线| 亚洲人成亚洲人成在线观看| 在线丨暗呦小u女国产精品| 日韩精品极品在线观看| 91日本视频在线| 国产精品久久久久免费a∨大胸| 中文字幕亚洲自拍| 日韩经典一区二区三区| 日韩av网站在线| 欧美精品成人91久久久久久久| 午夜精品久久久久久99热软件| 欧美极品在线播放| 91久久久久久久久久久久久| 久久久精品一区| 成人国内精品久久久久一区| 91在线观看免费网站| 国产成人一区三区| 欧美精品生活片| 成人免费观看49www在线观看| 欧美多人乱p欧美4p久久| 色综合天天综合网国产成人网| 亚洲精品欧美日韩专区| 国产丝袜一区二区三区免费视频| 亚洲国产精品高清久久久| 中文字幕亚洲欧美日韩高清| 正在播放欧美一区| 欧美日韩国产在线看| 国产精品免费观看在线| 国产成人久久久精品一区| 欧美小视频在线观看| 日韩免费看的电影电视剧大全| 亚洲另类图片色| 欧美激情综合亚洲一二区| 日韩av成人在线| 久久久久亚洲精品成人网小说| 这里只有精品视频| 成人黄色av播放免费| 精品人伦一区二区三区蜜桃网站| 日韩精品在线免费| 欧美成人免费va影院高清| 欧美成人精品xxx| 成人综合国产精品| 亚洲成人a级网| 欧美激情国产日韩精品一区18| 不卡av在线播放| 久久久久久久电影一区| 国产精品免费久久久| 久久久www成人免费精品张筱雨| 亚洲欧美日韩成人| 欧美黑人狂野猛交老妇| 91中文字幕一区| 久久精品国产96久久久香蕉| 91天堂在线视频| 亚洲自拍偷拍网址| 91国产视频在线| 日韩hd视频在线观看| 久久天天躁狠狠躁夜夜躁2014| 国产盗摄xxxx视频xxx69| 欧美日韩国产一区中文午夜| 久久综合伊人77777蜜臀| 亚洲国产精品悠悠久久琪琪| 成人黄色免费片| 色综合伊人色综合网站| 日韩av一区二区在线观看| 最近更新的2019中文字幕| 欧美午夜激情在线| 精品中文字幕在线| www.99久久热国产日韩欧美.com| 日韩欧美亚洲一二三区| 亚洲一区二区三区乱码aⅴ| 亚洲第一页自拍| 日韩中文字幕网站| 国产精品白丝av嫩草影院| 国产高清视频一区三区| 欧美怡春院一区二区三区| 久久久久久久久久久久久久久久久久av| www亚洲欧美| 亚洲一区中文字幕在线观看| 亚洲国产精品999| 日韩欧美在线第一页| 亚洲色图35p| 亚洲欧美一区二区三区四区| 欧美国产高跟鞋裸体秀xxxhd| 欧美第一页在线| 国产欧美最新羞羞视频在线观看| 亚洲a区在线视频| 欧美日韩高清在线观看| 国产精品入口免费视| 久热精品视频在线观看| 91精品国产一区| 国产精品人人做人人爽| 日韩欧美在线第一页| 精品国产依人香蕉在线精品| 日韩电影大全免费观看2023年上| 欧美国产中文字幕| 久久久www成人免费精品| 国产精品午夜一区二区欲梦| 一本一本久久a久久精品综合小说| 色青青草原桃花久久综合| 九九热精品视频在线播放| 日本老师69xxx| 在线看福利67194| 91久久精品国产91久久| 日本高清视频一区| 欧美亚洲国产精品| 亲子乱一区二区三区电影| 亚州精品天堂中文字幕| 欧美一乱一性一交一视频| 欧美日韩黄色大片| 精品小视频在线| 亚洲精品中文字幕女同| 国产在线拍偷自揄拍精品| 国内精品400部情侣激情| 国产色婷婷国产综合在线理论片a| 亚洲人成电影在线| 亚洲欧美日韩区| 日韩精品亚洲元码| 亚洲天堂开心观看| 在线看国产精品| 中文字幕在线国产精品| 精品国产欧美成人夜夜嗨| 成人性生交大片免费看小说| 久久乐国产精品| 国产精品精品久久久| 久久99青青精品免费观看| 久久久久久91| 91亚洲精品视频| 色噜噜亚洲精品中文字幕| 精品中文字幕乱| 91久久久久久久久久久| 欧美激情中文字幕乱码免费| 欧美午夜精品久久久久久人妖| 日韩成人在线视频| 91免费高清视频| 精品久久久久久国产| 亚洲精品91美女久久久久久久| 国产精品xxx视频| 日本免费在线精品| 91精品国产色综合久久不卡98| 欧美日韩在线看| 成人激情视频小说免费下载| 欧美激情啊啊啊|