zoukankan      html  css  js  c++  java
  • 列表视图控件

    设计登陆窗口

    首先创建一个图像列表,并通过SetImageList方法将列表视图控件和图像列表关联到一起。

    CImageList* SetImageList(CImageList* pImageList,int nImageList);

    pImageList:标识图像列表指针。

    nImageList:标识图像列表类型。

    LVSIL_NORMAL:图像列表具有大图标

    LVSIL_SMALL:图像列表具有小图标

    LVSIL_STATE:图像列表具有状态图标

    然后调用InsertItem方法向列表视图控件插入数据

    CImageList m_ImageList;
    CListCtrl    m_Icon;
    
    m_ImageList.Create(32,32,ILC_COLOR24|ILC_MASK,1,0);//创建列表视图窗口
    m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON1));    //向图像列表中添加图标
    m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON2)); 
    m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON3));
    m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON4));
    m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON5));
    m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON6));
    m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON7));
    m_Icon.SetImageList(&m_ImageList,LVSIL_NORMAL);//将图像列表关联到列表视图控件中
    m_Icon.InsertItem(0,"王一",0);
    m_Icon.InsertItem(1,"孙二",1);//向列表视图中添加数据
    m_Icon.InsertItem(2,"刘三",2);
    m_Icon.InsertItem(3,"吕四",3);
    m_Icon.InsertItem(4,"庞五",4);
    m_Icon.InsertItem(5,"宋六",5);
    m_Icon.InsertItem(6,"孙七",6);

    将数据加载到列表

    首先调用SetExtendStyle方法设置列表视图控件的扩展风格。

    然后调用InsertColoumn方法向列表视图控件添加列。

    在插入数据时先调用InsertItem方法插入列,接着调用SetItemText方法向列表中的每一列插入数据;

    在使用列表视图控件时,有时会因为数据插入错误需要删除数据。在删除数据前首先要获得要删除数据的索引,可以调用

    GetSelectionMark方法实现,该方法用于获取列表视图中当前选中的视图项索引,还可以使用DeleteAllItems方法删除所有的视图项。

    CListCtrl    m_Grid;
    CString    m_Name;
    CString    m_Agname;
    
    //设置列表视图的扩展风格
    m_Grid.SetExtendedStyle(LVS_EX_FLATSB    //扁平风格显示滚动条
            |LVS_EX_FULLROWSELECT                //允许整行选中
            |LVS_EX_HEADERDRAGDROP                //允许整列拖动
            |LVS_EX_ONECLICKACTIVATE            //单击选中项
            |LVS_EX_GRIDLINES);                    //画出网格线
    //设置表头
    m_Grid.InsertColumn(0,"姓名",LVCFMT_LEFT,130,0); //设置姓名列
    m_Grid.InsertColumn(1,"绰号",LVCFMT_LEFT,130,1); //设置绰号列
    void CInsertListDlg::OnButadd() 
    {
        // TODO: Add your control notification handler code here
        UpdateData(TRUE);
        int count = m_Grid.GetItemCount();
        m_Grid.InsertItem(count,"");
        m_Grid.SetItemText(count,0,m_Name);
        m_Grid.SetItemText(count,1,m_Agname);
    }
    
    void CInsertListDlg::OnClickList1(NMHDR* pNMHDR, LRESULT* pResult) 
    {
        // TODO: Add your control notification handler code here
        int pos  = m_Grid.GetSelectionMark();
        m_Name   = m_Grid.GetItemText(pos,0);
        m_Agname = m_Grid.GetItemText(pos,1);
        UpdateData(FALSE);
        *pResult = 0;
    }
    
    void CInsertListDlg::OnButdel() 
    {
        // TODO: Add your control notification handler code here
        int pos  = m_Grid.GetSelectionMark();
        m_Grid.DeleteItem(pos);
    }
    
    void CInsertListDlg::OnButclear() 
    {
        // TODO: Add your control notification handler code here
        m_Grid.DeleteAllItems();
    }

    具有位图背景的控件

    可以使用SetBkImage方法设置列表视图控件的当前背景图像

    如果只使用此方法为控件添加背景,在显示文字时字体的白色背景会将位图背景覆盖,从而影响界面的美观

    要解决这一问题,可以通过SetTextBkColor方法设置文本背景颜色

    在程序初始化时调用CoInitialize函数初始化COM环境

    CImageList m_ImageList;
    CListCtrl    m_Icon;
    
    m_ImageList.Create(32,32,ILC_COLOR24|ILC_MASK,1,0);    //创建列表视图窗口
    m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON1));        //向图像列表中添加图标
    m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON2));         //向图像列表中添加图标
    m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON3));         //向图像列表中添加图标
    m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON4));         //向图像列表中添加图标
    m_Icon.SetImageList(&m_ImageList,LVSIL_NORMAL);        //将图像列表关联到列表视图控件中
    m_Icon.InsertItem(0,"王一",0);                            //向列表视图中添加数据
    m_Icon.InsertItem(1,"孙二",1);                             //向列表视图中添加数据
    m_Icon.InsertItem(2,"刘三",2);                             //向列表视图中添加数据
    m_Icon.InsertItem(3,"吕四",3);                             //向列表视图中添加数据
    char buf[256];
    ::GetCurrentDirectory(256,buf);
    strcat(buf,"\BK.bmp");
    m_Icon.SetBkImage(buf);
    m_Icon.SetTextBkColor(CLR_NONE);

    动态创建列表视图控件

    动态创建列表视图控件需要使用Create方法,该方法可以创建一个列表视图控件

    在对话框头文件中声明一个CListCtrl类变量m_List

    然后调用MoveWindow函数设置控件的显示位置,最后调用ShowWindow函数显示控件

    CListCtrl m_List;
    m_List.Create(LVS_REPORT|LVS_SINGLESEL|LVS_SHOWSELALWAYS|WS_BORDER,
            CRect(0,0,0,0),this,10001);
    //设置列表视图的扩展风格
    m_List.SetExtendedStyle(LVS_EX_FLATSB            //扁平风格显示滚动条
            |LVS_EX_FULLROWSELECT                    //允许整行选中
            |LVS_EX_HEADERDRAGDROP                //允许整列拖动
            |LVS_EX_ONECLICKACTIVATE                //单击选中项
            |LVS_EX_GRIDLINES);                        //画出网格线
    
    m_List.MoveWindow(10,10,300,200);
    m_List.ShowWindow(SW_SHOW);
    //设置表头
    m_List.InsertColumn(0,"姓名",LVCFMT_LEFT,150,0);     //设置姓名列
    m_List.InsertColumn(1,"所属国家",LVCFMT_LEFT,150,1);     //设置所属国家列
    m_List.InsertItem(0,"");                        //插入第0行
    m_List.SetItemText(0,0,"关羽");                //向第0列插入数据
    m_List.SetItemText(0,1,"蜀国");                //向第1列插入数据
    m_List.InsertItem(1,"");                        //插入第1行
    m_List.SetItemText(1,0,"赵云");                //向第0列插入数据
    m_List.SetItemText(1,1,"蜀国");                //向第1列插入数据
  • 相关阅读:
    各国语言缩写列表,各国语言缩写-各国语言简称,世界各国域名缩写
    How to see log files in MySQL?
    git 设置和取消代理
    使用本地下载和管理的免费 Windows 10 虚拟机测试 IE11 和旧版 Microsoft Edge
    在Microsoft SQL SERVER Management Studio下如何完整输出NVARCHAR(MAX)字段或变量的内容
    windows 10 x64系统下在vmware workstation pro 15安装macOS 10.15 Catelina, 并设置分辨率为3840x2160
    在Windows 10系统下将Git项目签出到磁盘分区根目录的方法
    群晖NAS(Synology NAS)环境下安装GitLab, 并在Windows 10环境下使用Git
    使用V-2ray和V-2rayN搭建本地代理服务器供局域网用户连接
    windows 10 专业版安装VMware虚拟机碰到的坑
  • 原文地址:https://www.cnblogs.com/wangfx91/p/4993881.html
Copyright © 2011-2022 走看看