MFC ListControl用法


http://blog.csdn.net/lovton/article/details/6527208

1.建立一個對象m_LogList

步驟:在對話listcontrol控件右鍵點擊添加變量-》類別Control->變量類型CListCtrl-》變量名m_LogList-》完成。

 

2.listcontrol// 設置擴展風格l風格

在OnInitDialog()函數內添加下面代碼:

DWORD dwStyle = m_LogList.GetExtendedStyle(); 
dwStyle |= LVS_EX_FULLROWSELECT;//鼠標選中某行使整行高亮(只適用與屬性為report 風格的listctrl )
dwStyle |= LVS_EX_GRIDLINES;// 列表有網格線(只適用與report 風格的listctrl )
m_LogList.SetExtendedStyle(dwStyle); // 設置擴展風格

3.插入數據

插入列頭:

int nIndex = 0;
m_LogList.InsertColumn(nIndex++, _T("序號"), LVCFMT_CENTER,60);

m_LogList.InsertColumn(nIndex++, _T("日志類型"), LVCFMT_CENTER,80);

插入行頭:m_LogList.InsertItem(i, Int32ToCString(m_pHQReadLogInfo[i].nNo));//把整型轉換為字符串函數(Int32ToCString),i為第幾行,從0開始。

插入列表中的內容:    m_list.SetItemText(i, j, "jacky");// 設置其它列數據,i,j分別表示第i行和第j列,i和j分別從0開始,如果已經插入了表頭,j就從1開始。“jacky”報錯,那么在屬性中字符集改為“使用多字節符集”

在具體插入哪行:http://blog.csdn.net/lovton/article/details/6527208

4.點擊右鍵出現菜單。

具體步驟:右鍵點擊項目名-》添加-》資源-》Menu,建立主菜單。

添加函數,在對話框中右鍵點擊listcontrol-》類向導-》消息-》WM_CONTEXTMENU->函數名稱(OnContextMenu)

函數添加如下內容:注意 IDR_MENU1為菜單名 IDC_LIST1 listcontrol的ID名

void CJGHQLOGTOOLDlg::OnContextMenu(CWnd* pWnd, CPoint point)
{
    // TODO: 在此處添加消息處理程序代碼
    CWnd* pCtl = GetDlgItem(IDC_LIST1);

    if (pWnd == pCtl)
    {    
        m_menu.LoadMenu(IDR_MENU1);
        CMenu *pPopup;
        pPopup = m_menu.GetSubMenu(0); //獲得子菜單指針

        pPopup->EnableMenuItem(ID_TOEXCEL,MF_BYCOMMAND|MF_ENABLED); //允許菜單項使用
        pPopup->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,point.x,point.y,this); //顯示彈出菜單,參數依次為(鼠標在菜單左邊|跟蹤右鍵,x,y,this)
        pPopup->Detach();
        m_menu.DestroyMenu();
    }
}

5.刪除數據

  m_LogList.DeleteAllItems();或者

while(m_LogList.DeleteItem(0));

6. 得到點擊右鍵的listctrl的行列號,左鍵類似

 步驟:右鍵點擊-》添加事件處理程序-》消息類型選擇NM_RCLICK,對應函數處理名稱為OnNMRClickList1

出現函數添加內容: 

  

void CJGHQLOGTOOLDlg::OnClickList1(NMHDR* pNMHDR, LRESULT* pResult)
      {
           // 方法一:
           /*
           DWORD dwPos = GetMessagePos();
           CPoint point( LOWORD(dwPos), HIWORD(dwPos) );
   
           m_list.ScreenToClient(&point);
   
           LVHITTESTINFO lvinfo;
           lvinfo.pt = point;
           lvinfo.flags = LVHT_ABOVE;
     
           int nItem = m_list.SubItemHitTest(&lvinfo);
           if(nItem != -1)
           {
                CString strtemp;
                strtemp.Format("單擊的是第%d行第%d列", lvinfo.iItem, lvinfo.iSubItem);
                AfxMessageBox(strtemp);
           }
          */
   
          // 方法二:
          /*
           NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
           if(pNMListView->iItem != -1)
           {
                CString strtemp;
                strtemp.Format("單擊的是第%d行第%d列",
                                pNMListView->iItem, pNMListView->iSubItem);
                AfxMessageBox(strtemp);
           }
          */
           *pResult = 0;
      }

7.在點擊子菜單插入對話框

 步驟:1.點擊項目名字-》添加資源-》Dialog

           2.MeNU菜單中點擊右鍵添加事件處理程序-》COMMAND-》添加編輯

      添加如下內容: void CJGHQLOGTOOLDlg::On132778()

{ // TODO: 在此添加命令處理程序代碼
//int i,temp,k;
cDlgCheck dlg; dlg.DoModal(); TRACE(dlg.m_strValue); }

8.listcontrol列表數據實現分頁功能

思路:添加倆個按鈕上一頁和下一頁,把數據用結構體存起來,重復的刪除和插入,就ok了

遇到慢慢更新。。。。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM