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列插入数据
  • 相关阅读:
    python tarfile模块基本使用
    Python shutil模块
    python的gzip库使用方法
    python的gzip库使用方法
    python的gzip库使用方法
    linux 下查看文件修改时间,访问时间,状态改变时间
    linux 下查看文件修改时间,访问时间,状态改变时间
    linux 下查看文件修改时间,访问时间,状态改变时间
    mysqldump使用
    windows 7环境下配置oracle 11g 客户端
  • 原文地址:https://www.cnblogs.com/wangfx91/p/4993881.html
Copyright © 2011-2022 走看看