六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 2180|回复: 0

CListCtrl使用技巧汇总【3】

[复制链接]

升级  30%

3

主题

3

主题

3

主题

童生

Rank: 1

积分
15
 楼主| 发表于 2013-11-10 19:04:37 | 显示全部楼层 |阅读模式
本帖最后由 mall 于 2013-11-10 19:06 编辑

33.在ListCtrl中OnTimer只响应两次的问题Q200054:
PRB: OnTimer() Is Not Called Repeatedly for a List Control
http://support.microsoft.com/kb/200054/en-us

34.以下为一些为实现各种自定义功能的listctrl派生类         (1)   拖放      
                  http://www.codeproject.com/listctrl/dragtest.asp

                  在CListCtrl和CTreeCtrl间拖放
                  http://support.microsoft.com/kb/148738/en-us

         (2)   多功能listctrl
                  支持subitem可编辑,图标,radiobutton,checkbox,字符串改变颜色的类
                  http://www.codeproject.com/listctrl/quicklist.asp

                  支持排序,subitem可编辑,subitem图标,subitem改变颜色的类
                  http://www.codeproject.com/listctrl/ReportControl.asp

         (3)   subitem中显示超链接
                  http://www.codeproject.com/listctrl/CListCtrlLink.asp

         (4)   subitem的tooltip提示
                  http://www.codeproject.com/listctrl/ctooltiplistctrl.asp

         (5)   subitem中显示进度条   
                  http://www.codeproject.com/listctrl/ProgressListControl.asp
                  http://www.codeproject.com/listctrl/napster.asp
                  http://www.codeguru.com/Cpp/controls/listview/article.php/c4187/

         (6)   动态改变subitem的颜色和背景色
                   http://www.codeproject.com/listctrl/highlightlistctrl.asp
                http://www.codeguru.com/Cpp/controls/listbox/colorlistboxes/article.php/c4757/

         (7)   类vb属性对话框
            &bsp;      http://www.codeproject.com/listctrl/propertylistctrl.asp
                   http://www.codeguru.com/Cpp/controls/listview/propertylists/article.php/c995/
                   http://www.codeguru.com/Cpp/controls/listview/propertylists/article.php/c1041/

         (8)   选中subitem(只高亮选中的item)
                   http://www.codeproject.com/listctrl/SubItemSel.asp
                   http://www.codeproject.com/listctrl/ListSubItSel.asp

         (9)   改变行高
                   http://www.codeproject.com/listctrl/changerowheight.asp

         (10)   改变行颜色
                   http://www.codeproject.com/listctrl/coloredlistctrl.asp

         (11)   可编辑subitem的listctrl
                   http://www.codeproject.com/listctrl/nirs2000.asp
                   http://www.codeproject.com/listctrl/editing_subitems_in_listcontrol.asp

         (12)   subitem可编辑,插入combobox,改变行颜色,subitem的tooltip提示
                   http://www.codeproject.com/listctrl/reusablelistcontrol.asp

         (13)   header 中允许多行字符串
                   http://www.codeproject.com/listctrl/headerctrlex.asp

         (14)   插入combobox
                   http://www.codeguru.com/Cpp/controls/listview/editingitemsandsubitem/article.php/c979/

         (15)   添加背景图片
                   http://www.codeguru.com/Cpp/controls/listview/backgroundcolorandimage/article.php/c4173/
                   http://www.codeguru.com/Cpp/controls/listview/backgroundcolorandimage/article.php/c983/
                   http://www.vchelp.net/vchelp/archive.asp?type_id=9&class_id=1&cata_id=1&article_id=1088&search_term=
   
         (16)  自适应宽度的listctrl
                   http://www.codeproject.com/useritems/AutosizeListCtrl.asp

        (17) 改变ListCtrl高亮时的颜色(默认为蓝色)
              处理 NM_CUSTOMDRAW
         
http://www.codeproject.com/listctrl/lvcustomdraw.asp

//2009-05-06
35. 隐藏滚动条
void  CListView_ScrollBarView::OnSize(UINT   nType,  int   cx,  int   cy)   
  {  
  CListCtrl   &  ctrl   =  this->GetListCtrl   ();
  if   (ctrl)
  {  
                      //隐藏垂直滚动条  
         ::ShowScrollBar(  ctrl.m_hWnd,   SB_VERT,  FALSE);  
  }  
  CListView::OnSize(nType,   cx,  cy);  
  }
//2009-05-07
36.处理键盘,循环滚动,不要在对话框中处理该消息,否则WListCtrlEx会产生两次按键事件
BOOL WListCtrlEx:reTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/orcall the base class
if (pMsg->message ==WM_KEYDOWN)
{
  if (pMsg->wParam== VK_DOWN)
  {
   int nSel =GetNextItem(-1, LVNI_SELECTED);
   if (nSel ==-1)
    returnFALSE;
   if (nSel ==GetItemCount()-1)
   {
    EnsureVisible(0,FALSE);  //滚动条自动滚动到第80行  
    SetItemState(0,LVIS_SELECTED|LVIS_FOCUSED, LVIS_SELECTED|LVIS_FOCUSED);
    returnTRUE;
   }
  }
  if (pMsg->wParam== VK_UP)
  {   
   int nSel =GetNextItem(-1, LVNI_SELECTED);
   if (nSel ==-1)
    returnFALSE;
   if (nSel ==0)
   {
    EnsureVisible(GetItemCount()-1,FALSE);  //滚动条自动滚动到第80行
    SetItemState(GetItemCount()-1,LVIS_SELECTED|LVIS_FOCUSED, LVIS_SELECTED|LVIS_FOCUSED);
    returnTRUE;
   }
  }
}

returnCListCtrl:reTranslateMessage(pMsg);
}

本文摘自:http://blog.sina.com.cn/s/blog_4171e80d0100ynch.html


您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表