限制CListCtrl列的宽度

本文介绍了一种方法,用于防止CListCtrl列表视图中特定列的宽度被调整到预设最小宽度以下。通过重写OnNotify方法并检查HD_NOTIFY结构来实现这一功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

BOOL   CMyListCtrl::OnNotify(WPARAM   wParam,   LPARAM   lParam,   LRESULT*   pResult)    
  {  
  HD_NOTIFY   *pHDNotify   =   (HD_NOTIFY*)lParam;  
   
                    if(   pHDNotify->iItem   ==   需要限制大小的列   )  
                  {  
  switch(   pHDNotify->hdr.code   )  
  {  
  //   How   to   force   a   minimum   column   width   Cees   Mechielsen.  
  //   http://www.codeguru.com/mfc/comments/866.shtml  
  case   HDN_ITEMCHANGINGA:  
  case   HDN_ITEMCHANGINGW:  
  case   HDN_ENDTRACK:  
  {  
  if(   pHDNotify->pitem->mask   &   HDI_WIDTH   &&  
  pHDNotify->pitem->cxy   <   m_nMinSize   &&  
  pHDNotify->pitem->cxy   >=   0   )  
  {  
  pHDNotify->pitem->cxy   =   m_nMinSize; //   Set   the   column   width  
  }  
  }  
  break;  
   
  //   Prevent   CListCtrl   column   resizing  
                    case   HDN_DIVIDERDBLCLICKA:  
  case   HDN_DIVIDERDBLCLICKW:  
  case   HDN_BEGINTRACKW:  
  case   HDN_BEGINTRACKA:  
  {  
                                        *pResult   =   TRUE;                                 //   disable   tracking  
  return   TRUE;                                    
                                        }  
  }  
   
                    }  
  return   CListCtrl::OnNotify(wParam,   lParam,   pResult);  
  }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值