• 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了

    遇到慢慢更新。。。。

  • 相关阅读:
    HTML5学习
    Python随手记
    Python学习之warn()函数
    Redis学习
    多线程--wait()和notify(),Thread中的等待和唤醒方法
    Interrupt中断线程注意点
    Thread中yield方法
    mysql创建唯一索引,避免数据重复插入
    Jquery自动补全插件的使用
    linux ssh免密登陆远程服务器
  • 原文地址:https://www.cnblogs.com/cancangood/p/5148565.html
Copyright © 2020-2023  润新知