欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
VS2010/MFC編程入門(mén)之二十九(常用控件:列表視圖控件List Control 下)

       上一節是關(guān)于列表視圖控件List Control的上半部分,簡(jiǎn)單介紹了列表視圖控件,其通知消息的處理和有關(guān)結構體的定義。本節繼續講解下半部分,包括列表視圖控件的創(chuàng )建、CListCtrl類(lèi)的主要成員函數和CListCtrl類(lèi)應用實(shí)例。

       列表視圖控件的創(chuàng )建

       MFC同樣為列表視圖控件的操作提供了CListCtrl類(lèi)。

       如果我們不想在對話(huà)框模板中直接拖入List Control來(lái)使用列表視圖控件,而是希望動(dòng)態(tài)創(chuàng )建它,則要用到CListCtrl類(lèi)的成員函數Create函數,原型如下:

virtual BOOL Create(
   DWORD dwStyle,
   const RECT& rect,
   CWnd* pParentWnd,
   UINT nID
);

       參數rect為列表視圖控件的位置和尺寸,pParentWnd為指向父窗口的指針,nID指定列表視圖控件的ID,最復雜的一個(gè)參數同樣還是dwStyle,它用于設定列表視圖控件的風(fēng)格,可以是以下風(fēng)格的組合:

               風(fēng)格                                                含義
       LVS_ALIGNLEFT                        顯示格式是大圖標或小圖標時(shí),標簽放在圖標的左邊
       LVS_ALIGNTOP                         顯示格式是大圖標或小圖標時(shí),標題放在圖標的上邊
       LVS_AUTOARRANGE                 顯示格式是大圖標或小圖標時(shí),自動(dòng)排列控件中的列表項
       LVS_EDITLABELS                      用戶(hù)可以修改標簽文本
       LVS_ICON                                 指定大圖標顯示格式
       LVS_LIST                                  指定列表顯示格式
       LVS_NOCOLUMNHEADER         在報表格式中不顯示列的表頭
       LVS_NOLABELWRAP                顯示格式是大圖標時(shí),使標簽文本單行顯示。默認是多行顯示
       LVS_NOSCROLL                       列表視圖控件無(wú)滾動(dòng)條,此風(fēng)格不能與LVS_LIST或LVS_REPORT組合使用
       LVS_NOSORTHEADER              報表格式的列表視圖控件的表頭不能作為排序按鈕使用
       LVS_OWNERDRAWFIXED        由控件的擁有者負責繪制表項
       LVS_REPORT                           指定報表顯示格式
       LVS_SHAREIMAGELISTS           使列表視圖共享圖像序列
       LVS_SHOWSELALWAYS           即使控件失去輸入焦點(diǎn),仍顯示出項的選擇狀態(tài)
       LVS_SINGLESEL                       指定只能有一個(gè)列表項被選中。默認時(shí)可以多項選擇
       LVS_SMALLICON                      指定小圖標顯示格式
       LVS_SORTASCENDING             按升序排列列表項
       LVS_SORTDESCENDING          按降序排列列表項

       與前面的控件一樣,除了以上風(fēng)格一般我們還要為列表視圖控件設置WS_CHILD和WS_VISIBLE風(fēng)格。對于直接在對話(huà)框模板中創(chuàng )建的列表視圖控件,其屬性頁(yè)中的屬性與上述風(fēng)格是對應的,例如,屬性Alignment默認為L(cháng)eft,也就等價(jià)于指定了LVS_ALIGNLEFT風(fēng)格。

       CListCtrl類(lèi)的主要成員函數

       CListCtrl類(lèi)有很多成員函數,雞啄米這里就為大家介紹幾個(gè)常用的主要成員函數。

       UINT GetSelectedCount( ) const;

       該函數返回列表視圖控件中被選擇列表項的數量。

       POSITION GetFirstSelectedItemPosition( ) const;

       獲取列表視圖控件中第一個(gè)被選擇項的位置。返回的POSITION值可以用來(lái)迭代來(lái)獲取其他選擇項,可以當作參數傳入下面的GetNextSelectedItem函數來(lái)獲得選擇項的索引。如果沒(méi)有被選擇項則返回NULL。

       int GetNextSelectedItem(POSITION& pos) const;

       該函數獲取由pos指定的列表項的索引,然后將pos設置為下一個(gè)位置的POSITION值。參數pos為之前調用GetNextSelectedItem或GetFirstSelectedItemPosition得到的POSITION值的引用。返回值就是pos指定列表項的索引。

       int GetItemCount( ) const;

       獲取列表視圖控件中列表項的數量。

       int InsertColumn(int nCol,const LVCOLUMN* pColumn );
       int InsertColumn(int nCol,LPCTSTR lpszColumnHeading,int nFormat = LVCFMT_LEFT,int nWidth = -1,int nSubItem = -1 );

       這兩個(gè)函數用于在報表式列表視圖控件中插入列。第一個(gè)函數中,nCol參數為插入列的索引,pColumn參數指向LVCOLUMN結構,其中包含了插入列的屬性。第二個(gè)函數中,nCol參數也是插入列的索引,lpszColumnHeading參數為列標題字符串,nFormat參數為列中文本的對齊方式,可以是LVCFMT_LEFT、LVCFMT_RIGHT或LVCFMT_CENTER,nWidth參數為列寬,nSubItem為插入列對應列表子項的索引。兩個(gè)函數在成功時(shí)都返回新列的索引,失敗都返回-1。

       BOOL DeleteColumn(int nCol);

       該函數用于刪除列表視圖控件中的某列。參數nCol為刪除列的索引。刪除成功則返回TRUE,失敗返回FALSE。

       int InsertItem(int nItem,LPCTSTR lpszItem);

       向列表視圖控件中插入新的列表項。參數nItem為要插入項的索引,參數lpszItem為要插入項的標簽字符串。如果插入成功則返回新列表項的索引,否則返回-1。

       BOOL DeleteItem(int nItem);

       從列表視圖控件中刪除某個(gè)列表項。參數nItem指定了要刪除的列表項的索引。刪除成功則返回TRUE,否則返回FALSE。

       CString GetItemText(int nItem,int nSubItem) const;

       獲取指定列表項或列表子項的顯示文本。參數nItem指定了列表項的索引,參數nSubItem指定了列表子項的索引。 

       BOOL SetItemText(int nItem,int nSubItem,LPCTSTR lpszText);

       設置指定列表項或列表子項的顯示文本。參數nItem和nSubItem同GetItemText。參數lpszText為要設置的顯示文本字符串。如果設置成功則返回TRUE,否則返回FALSE。

       DWORD_PTR GetItemData(int nItem) const;

       該函數用于獲取指定列表項的附加32位數據。參數nItem為列表項的索引。返回值就是由nItem指定列表項的附加32位數據。

       BOOL SetItemData(int nItem,DWORD_PTR dwData);

       該函數用于為指定列表項設置附加32位是數據。參數nItem為列表項的索引,參數dwData為列表項的附加32位數據。

       CListCtrl類(lèi)應用實(shí)例

       最后雞啄米還是給大家寫(xiě)一個(gè)簡(jiǎn)單的實(shí)例,說(shuō)明CListCtrl類(lèi)的幾個(gè)成員函數及通知消息等的使用方法。因為在開(kāi)發(fā)中最常用的要屬報表風(fēng)格的List Control了,所以雞啄米給大家寫(xiě)的是一個(gè)報表List Control的例子。

       此實(shí)例實(shí)現的功能:在單選列表視圖控件中顯示一個(gè)簡(jiǎn)單的編程語(yǔ)言排行榜,然后在用鼠標左鍵選擇某列表項時(shí),將選中列表項的文本顯示到編輯框中。下面是具體實(shí)現步驟:

       1. 創(chuàng )建一個(gè)基于對話(huà)框的MFC工程,名稱(chēng)設置為“Example29”。

       2. 在自動(dòng)生成的對話(huà)框模板IDD_EXAMPLE29_DIALOG中,刪除“TODO: Place dialog controls here.”靜態(tài)文本控件、“OK”按鈕和“Cancel”按鈕。添加一個(gè)List Control控件,ID設置為IDC_PROGRAM_LANG_LIST,View屬性設為Report,即為報表風(fēng)格,Single Selection屬性設為T(mén)rue。再添加一個(gè)靜態(tài)文本控件和一個(gè)編輯框,靜態(tài)文本控件的Caption屬性設為“選擇的語(yǔ)言:”,編輯框的ID設為IDC_LANG_SEL_EDIT,Read Only屬性設為T(mén)rue。此時(shí)的對話(huà)框模板如下圖:

       3. 為列表視圖控件IDC_PROGRAM_LANG_LIST添加CListCtrl類(lèi)型的控件變量m_programLangList。

       4. 在對話(huà)框初始化時(shí),我們將編程語(yǔ)言排行榜加入到列表視圖控件中,那么需要修改CExample29Dlg::OnInitDialog()函數為:

C++代碼
  1. BOOL CExample29Dlg::OnInitDialog()   
  2. {   
  3.     CDialogEx::OnInitDialog();   
  4.   
  5.     // Add "About..." menu item to system menu.   
  6.   
  7.     // IDM_ABOUTBOX must be in the system command range.   
  8.     ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);   
  9.     ASSERT(IDM_ABOUTBOX < 0xF000);   
  10.   
  11.     CMenu* pSysMenu = GetSystemMenu(FALSE);   
  12.     if (pSysMenu != NULL)   
  13.     {   
  14.         BOOL bNameValid;   
  15.         CString strAboutMenu;   
  16.         bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);   
  17.         ASSERT(bNameValid);   
  18.         if (!strAboutMenu.IsEmpty())   
  19.         {   
  20.             pSysMenu->AppendMenu(MF_SEPARATOR);   
  21.             pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);   
  22.         }   
  23.     }   
  24.   
  25.     // Set the icon for this dialog.  The framework does this automatically   
  26.     //  when the application's main window is not a dialog   
  27.     SetIcon(m_hIcon, TRUE);         // Set big icon   
  28.     SetIcon(m_hIcon, FALSE);        // Set small icon   
  29.   
  30.     // TODO: Add extra initialization here   
  31.     CRect rect;   
  32.   
  33.     // 獲取編程語(yǔ)言列表視圖控件的位置和大小   
  34.     m_programLangList.GetClientRect(&rect);   
  35.   
  36.     // 為列表視圖控件添加全行選中和柵格風(fēng)格   
  37.     m_programLangList.SetExtendedStyle(m_programLangList.GetExtendedStyle() | LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);   
  38.   
  39.     // 為列表視圖控件添加三列   
  40.     m_programLangList.InsertColumn(0, _T("語(yǔ)言"), LVCFMT_CENTER, rect.Width()/3, 0);   
  41.     m_programLangList.InsertColumn(1, _T("2012.02排名"), LVCFMT_CENTER, rect.Width()/3, 1);   
  42.     m_programLangList.InsertColumn(2, _T("2011.02排名"), LVCFMT_CENTER, rect.Width()/3, 2);   
  43.   
  44.     // 在列表視圖控件中插入列表項,并設置列表子項文本   
  45.     m_programLangList.InsertItem(0, _T("Java"));   
  46.     m_programLangList.SetItemText(0, 1, _T("1"));   
  47.     m_programLangList.SetItemText(0, 2, _T("1"));   
  48.     m_programLangList.InsertItem(1, _T("C"));   
  49.     m_programLangList.SetItemText(1, 1, _T("2"));   
  50.     m_programLangList.SetItemText(1, 2, _T("2"));   
  51.     m_programLangList.InsertItem(2, _T("C#"));   
  52.     m_programLangList.SetItemText(2, 1, _T("3"));   
  53.     m_programLangList.SetItemText(2, 2, _T("6"));   
  54.     m_programLangList.InsertItem(3, _T("C++"));   
  55.     m_programLangList.SetItemText(3, 1, _T("4"));   
  56.     m_programLangList.SetItemText(3, 2, _T("3"));   
  57.   
  58.     return TRUE;  // return TRUE  unless you set the focus to a control   
  59. }  

       5. 我們希望在選中列表項改變時(shí),將最新的選擇項實(shí)時(shí)顯示到編輯框中,那么可以使用NM_CLICK通知消息。為列表框IDC_PROGRAM_LANG_LIST的通知消息NM_CLICK添加消息處理函數CExample29Dlg::OnNMClickProgramLangList,并修改如下:

C++代碼
  1. void CExample29Dlg::OnNMClickProgramLangList(NMHDR *pNMHDR, LRESULT *pResult)   
  2. {   
  3.     LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);   
  4.     // TODO: Add your control notification handler code here   
  5.     *pResult = 0;   
  6.   
  7.     CString strLangName;    // 選擇語(yǔ)言的名稱(chēng)字符串   
  8.     NMLISTVIEW *pNMListView = (NMLISTVIEW*)pNMHDR;   
  9.   
  10.     if (-1 != pNMListView->iItem)        // 如果iItem不是-1,就說(shuō)明有列表項被選擇   
  11.     {   
  12.         // 獲取被選擇列表項第一個(gè)子項的文本   
  13.         strLangName = m_programLangList.GetItemText(pNMListView->iItem, 0);   
  14.         // 將選擇的語(yǔ)言顯示與編輯框中   
  15.         SetDlgItemText(IDC_LANG_SEL_EDIT, strLangName);   
  16.     }   
  17. }  

       6. 運行程序,彈出結果對話(huà)框,在對話(huà)框的列表框中用鼠標改變選中項時(shí),編輯框中的顯示會(huì )相應改變。效果圖如下:

       關(guān)于列表視圖控件List Control的內容總算講完了,內容不少,但實(shí)際上這些還只是一部分,在實(shí)際開(kāi)發(fā)中會(huì )遇到各種問(wèn)題,需要大家去查閱MSDN或上網(wǎng)找資料等來(lái)解決。最后雞啄米仍然感謝大家對本VS2010/MFC教程的關(guān)注。

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
[轉] MFC CListCtrl 使用介紹
MFC控件的使用
CListCtrl控件主要事件及LVN
VC++列表控件的編寫(xiě)
VC編程技術(shù)點(diǎn)滴(六)使用ListControl控件顯示數據表
圖表控件TeeChart干貨分享(繪制2D、3D實(shí)時(shí)曲線(xiàn)
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久