zoukankan      html  css  js  c++  java
  • MFC中 CListCtrl控件的使用及定位、选中

    首先摆好ListCtrl控件,关联成员变量m_list1

    在初始化中:

    //列表控件
    m_count=0;  //列表控件的序号
    CRect rect;

    // 获取编程语言列表视图控件的位置和大小
    m_list1.GetClientRect(&rect);

    // 为列表视图控件添加全行选中和栅格风格
    m_list1.SetExtendedStyle(m_list1.GetExtendedStyle() | LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);

    // 为列表视图控件添加4列
    m_list1.InsertColumn(0, _T("序号"), LVCFMT_CENTER, rect.Width()/10, 0);
    m_list1.InsertColumn(1, _T("算法名称"), LVCFMT_CENTER, rect.Width()/4, 1);
    m_list1.InsertColumn(2, _T("清晰度"), LVCFMT_CENTER, rect.Width()/4, 2);
    m_list1.InsertColumn(3, _T("颜色个数"), LVCFMT_CENTER, rect.Width()/4, 3);

    然后:

    void CLXTDlg::OnDblclkTree1(NMHDR *pNMHDR, LRESULT *pResult)
    {

    HTREEITEM m_hTreeItem;
    m_hTreeItem = m_tree1.GetSelectedItem();

    CString S1 = m_tree1.GetItemText(m_hTreeItem);
    CString str;

    m_count++;
    str.Format(_T("%d"),m_count);   //整型转化为字符串

    // 在列表视图控件中插入列表项,并设置列表子项文本
    m_list1.InsertItem(m_count-1, _T(str));
    m_list1.SetItemText(m_count-1, 1, _T(S1));
    m_list1.SetItemText(m_count-1, 2, _T(S1));
    m_list1.SetItemText(m_count-1, 3, _T(S1));

    m_list1.EnsureVisible(m_count-1,FALSE);    //不断向CListCtrl添加记录时,每添加一条,视图就自动滚动以便能看到刚插入的这条记录
    m_list1.SetItemState(m_count-2,0, -1);     //设置上一条记录不被选中
    m_list1.SetItemState(m_count-1,LVIS_SELECTED|LVIS_ACTIVATING|LVIS_DROPHILITED , LVIS_SELECTED|LVIS_ACTIVATING|LVIS_DROPHILITED );//设置某一条记录被选中

    ..............

    *pResult = 0;

    }

    虽然能实现自动滑动条的自动滚动了,但是还有点瑕疵:

    双击树状控件时,这里有一瞬间出现两行相同的。不到一秒时间吧,就恢复正常了:

          

    不知道该怎么解决了,希望知道的帮帮忙了。。。。。

  • 相关阅读:
    C#随机数字生成的一种方法
    SqlServer2012自增主键跳跃增长的问题解决方案
    Mysql5.7初始化成空密码或随机密码的方式
    StyleCop的常见错误
    数据库同步相关的SQL语句
    Linux Shell角本中的条件判断
    Linux(CentOS)中使用Mono+jexus部署Asp.net4.5网站
    Mina.Net实现的UDP多路广播
    Linux CentOS 6.6安装JDK1.7
    linux 常用命令
  • 原文地址:https://www.cnblogs.com/lxt287994374/p/3056700.html
Copyright © 2011-2022 走看看