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了

遇到慢慢更新。。。。

原文地址:https://www.cnblogs.com/cancangood/p/5148565.html