List Control 粗略使用

    xiaoxiao2021-03-25  150

    MFC里面的重要控件CListCtrl 对象    

    外观有四种模式        

    1 图标(Icon)

    2 小图标(Small Icon)

            3 列表(List)

            4 报表(Report)

    如何修改他的模式呢 ?  在视图哪里选择 属性-> View->Report

    CListCtrl 对象的可以使用的函数

    GetBkColor   获取背景颜色

    SetBkColor   设置背景颜色

    GetImageList  获取列表图像

    SetImageList   设置列表图像

    GetItemCount  获取ltem个数

    Getltem 获取ltem属性

    Setltem 设置ltem属性

    GetCallbackMask 获取Mask

    SetCallbackMask  设置Mask

    GetNextItem 获取下一个Item

    GetFirstSelectedItemPosition 获取首选项

    GetNextSelectedItem  转换为int

    GetItemRect  获取Item矩形

    SetItemPosition 设置 Item 位置

    GetItemPosition 获取 Item 位置

    GetStringWidth  获取字符串宽带

    InsertColumn  插入一个标题拦

    GetEditControl 获取输入框

    GetColumn 获取标题

    SetColumn 设置标题

    GetColumnWidth 获取一列的宽度

    SetColumnWidth 设置一列的宽度

    GetCheck  获取选择 SetCheck  设置选择 GetViewRect 获取矩形 GetTextColor 获取字体颜色 SetTextColor  设置字体颜色 GetTextBkColor 获取字体背景颜色 SetTextBkColor 设置字体背景颜色 GetTopIndex  获取顶部下标   不会用 GetCountPerPage  获取当前显示最大行 GetOrigin    获取起源  不会用。 SetItemState 设置ltem状态 GetItemState 获取ltem状态 GetItemText  获取ltem内容 SetItemText  设置ltem内容 SetItemCount 设置他的个数 SetItemData 获取与某项相关的应用所指定的值 GetItemData 设置项的应用指定的值 GetSelectedCount 获取选中的数量 SetColumnOrderArray  设置列表视图控件的列序(左或右) GetColumnOrderArray 获取列表视图控件的列序(左或右) SetIconSpacing  图标间距值 GetHeaderCtrl 获取头 GetHotCursor  获取在热调试对列表视图控件有效时使用的游标 SetHotCursor  设置在热调试对列表视图控件有效时使用的游标 GetSubItemRect 获取列表视图控件中某项的有界矩形 GetHotItem 获取当前在游标下的列表视图项 SetHotItem  设置列表视图控件的当前热项 GetSelectionMark  获取选中的位置 SetSelectionMark  设置选择 GetExtendedStyle 获取扩展风格 SetExtendedStyle  设置扩展风格 GetSelectionMark 获取列表视图控件的选择屏蔽 SetSelectionMark 设置列表视图控件的选择屏蔽 GetExtendedStyle 获取列表视图控件的当前扩展风格 SetExtendedStyle 设置列表视图控件的当前扩展风格 SubItemHitTest 指定哪个列表视图项在指定位置,若存在 GetWorkAreas 获取列表视图控件的当前工作区 GetNumberOfWorkAreas 获取列表视图控件的当前工作区数量 SetItemCountEx 设置虚列表视图控件的项的数量 SetWorkAreas 设置列表视图控件中图标可以显示的区域 ApproximateViewRect 指定显示列表视图控件项所需的宽度和高度 GetBkImage 获取列表视图控件的当前背景图象 SetBkImage 设置列表视图控件的当前背景图象 GetHoverTime 获取列表视图控件的当前逗留时间 SetHoverTime 设置列表视图控件的当前逗留时间

    操作 InsertItem 在列表视图控件中插入一个新项 DeleteItem 从控件中删除一项 DeleteAllItems 从控件中删除所有项 FindItem 查找具有指定的字符的列表视图项 SortItems 使用应用定义的比较函数排序列表视图项 HitTest 指定哪个列表视图在指定的位置上 EnsureVisible 保证项是可见的 Scroll 滚动列表视图控件的内容 ReDrawItems 强迫列表视图控件刷新一些项 Update 强迫控件刷新一个指定的项 Arrange 调整一栏里的项 EditLabel 开始项文本该处编辑 InsertColumn 插入列表视图控件中的新列 DeleteColumn 从列表视图控件中删除一列 CreateDragImage 为指定的项构造一个拖动图象列表

    CListCtrl 函数使用

    GetBkColor  获取背景颜色

    COLORREF cr = m_list.GetBkColor(); COLORREF      是什么类型   COLORREF          ->DWORD -> unsigned long   实际上就是保存一个 RGB的值 

    获取到的数是16711680  why? 查了一下资料才发现是RGB(255,255,255) 为什么会是这样的呢?

    RGB函数计算公式:   颜色值    =    (65536    *    Blue)    +    (256    *    Green)    +    (Red)  

    SetBkColor  设置背景颜色

    需要设置COLORREF类型的变量  但是我懒得计算或者不会计算怎么办?

    m_list.SetBkColor(RGB(255, 0, 255))

    GetImageList 获取列表图像

    CImageList *Imagelist = m_list.GetImageList(LVSIL_NORMAL);         首先设置里面有三个选项  

            LVSIL_NORMAL  一般的图标

            LVSIL_SMALL      小图标

    LVSIL_STATE大图标

    CImageList 开单张来讲

    SetImageList       设置列表图像

    m_list.SetImageList(Imagelist, LVSIL_SMALL); 传递一个需要设置的 CImageList   

    LVSIL_SMALL 需要给什么类型图标设置

    GetItemCount 获取ltem个数

    int nCount = m_list.GetItemCount();

    Getltem获取ltem属性 

    Setltem设置ltem属性

    //修改某行某列的信息 LVITEMW item = { 0 }; if (m_list.GetItem(&item)) { item.mask = LVIF_TEXT; item.iItem = m_list.GetItemCount()-1;//设置多少行 item.iSubItem = 1;//第多少列 item.pszText = L"第八列"; //显示的内容 item.cchTextMax = MAX_PATH; m_list.SetItem(&item); }

    GetFirstSelectedItemPosition 获取首选项

    GetNextSelectedItem  转换为int

    POSITION pos = m_list.GetFirstSelectedItemPosition();//获取点击的首位pos if (pos == NULL) TRACE0("No items were selected!\n");//在输出显示 else { while (pos) { int nItem = m_list.GetNextSelectedItem(pos);//转换为 int TRACE1("Item %d was selected!\n", nItem); } } GetItemRect  

    RECT rect; m_list.GetItemRect(1, &rect, LVIR_LABEL); LVIR_BOUNDS 返回整个项目的边界矩形, 包括图标和标签。 LVIR_ICON 返回的边界矩形图标或小图标 LVIR_LABEL 返回的项目的边界矩形文本。 ret BOOL

    GetStringWidth  获取字符串宽带

    InsertColumn  插入一个标题拦

    CString str(L"color"); int width = 3 * m_list.GetStringWidth(str) / 2; m_list.InsertColumn(0, //插入位置 pos str,//插入内容 LVCFMT_LEFT, //插入的属性 width//宽度 ); GetColumn 获取标题

    SetColumn 设置标题

    TCHAR strlvc[MAX_PATH]={0}; ZeroMemory(&lvc, sizeof(lvc)); LVCOLUMN lvc; lvc.mask = LVCF_TEXT; lvc.pszText = strlvc; //显示的内容 lvc.cchTextMax = MAX_PATH; if (m_list.GetColumn(0, &lvc)) { lvc.pszText = L"color"; m_list.SetColumn(0, &lvc); } GetColumnWidth SetColumnWidth 设置一列的宽度

    TCHAR strlvc[MAX_PATH] = { 0 }; LVCOLUMN lvc; ZeroMemory(&lvc, sizeof(lvc)); lvc.mask = LVCF_TEXT; lvc.pszText = strlvc; //显示的内容 lvc.cchTextMax = MAX_PATH; if (m_list.GetColumn(0, &lvc)) { int width= m_list.GetStringWidth(strlvc) * 3 / 2; m_list.SetColumnWidth(0, width); }

    GetCheck  获取选择

    SetCheck  全部选择 

    m_list.SetExtendedStyle(LVS_EX_CHECKBOXES); 必须设置的 CString str; for (int i = 0; i < m_list.GetItemCount(); i++) { m_list.SetCheck(i); }

    GetItemState 删除选中状态

    DeletItem

    int nCount = m_list.GetItemCount(); for (int i = nCount - 1; i >= 0; --i) { if (m_list.GetItemState(i, LVIS_SELECTED) == LVIS_SELECTED) { m_list.DeleteItem(i); break; } }

    
    转载请注明原文地址: https://ju.6miu.com/read-7476.html

    最新回复(0)