zoukankan      html  css  js  c++  java
  • CListCtrl 使用笔记

    1. 如何获取和设置某一行的选中状态? 
        1) 获取选中状态
            int state = listCtrl.GetItemState(item, LVIS_SELECTED);
            if (state & LVIS_SELECTED){
                // 选中
            }
            else{
                // 为选中
            }

        2) 设置选中状态
            取消选中: listCtrl.SetItemState(item, 0, LVIS_SELECTED);
            设置选中: listCtrl.SetItemState(item, 1, LVIS_SELECTED);

    2. 如何获取所有选中的行? 
        方式一 :
            POSITION pos = listCtrl.GetFirstSelectedItemPosition();
            while (pos){
                int index = listCtrl.GetNextSelectedItem(pos);
                // do something
            }
        方式二 :
            int item = -1;
            while ( -1 != (item = GetNextItem(item, LVIS_SELECTED)) ){
                // do something with item
            }

    3. 如何使用EditLabel ? 
        1) 创建控件的时候应该设置 : LVS_EDITLABELS 风格
        2) 接收Notify消息:LVN_BEGINLABELEDIT, 用以处理是否开始编辑指定条目。这个消息是可选的
           一个实现可能是这个样子
            void CMyView::OnBeginLabelEdit(NMHDR *pNMHDR, LRESULT *pResult)
            {
                NMLVDISPINFO *pNmlvDispInfo = reinterpret_cast<NMLVDISPINFO*>(pNMHDR);
                int item = pNmlvDispInfo->item.iItem; // 编辑框所在的条目
                if (item < 0) *pResult = 1;
            }
        3) 接受Notify消息:LVN_ENDLABELEDIT, 用以处理编辑完成事件,在这个时间里我们可以获取编辑框的内容
            一个可能的实现:
            void CMyView::OnEndLabelEdit(NMHDR *pNMHDR, LRESULT *pResult)
            {
                NMLVDISPINFO* pLVDI = reinterpret_cast<NMLVDISPINFO*>(pNMHDR);

                if(pLVDI->item.pszText!=NULL){ //判断是否已经取消取消编辑
                    // 将编辑行的第一列设置为编辑框中的字符串
                    listCtrl.SetItemText(pLVDI->item.iItem, 0, pLVDI->item.pszText);
                }

                *pResult = 0;
            }
  • 相关阅读:
    Now Task
    数据库的死锁及解决
    Java小对象的解决之道——对象池(Object Pool)的设计与应用
    Java中的对象池技术
    npm install时报错 npm ERR!Windows_NT 6.1.7601
    Angular 入门学习
    React 之 Hello world
    react webpack.config.js 入门学习
    React/React Native 的ES5 ES6写法对照表
    ES5和ES6中对于继承的实现方法
  • 原文地址:https://www.cnblogs.com/hdtianfu/p/2783268.html
Copyright © 2011-2022 走看看