CListCtrl使用

CListCtrl使用  

2010-09-10 11:17:46|  分类: Visual C++ |  标签:clistctrl   |字号 订阅

1、显示checkbox
      LVS_EX_CHECKBOXES
      SetExtendedStyle(GetExtendedStyle()|LVS_EX_CHECKBOXES);
2、允许非第一列显示图片。
      LVS_EX_SUBITEMIMAGES
      SetExtendedStyle(GetExtendedStyle()|LVS_EX_SUBITEMIMAGES);
3、禁止拖动列宽。重载OnNotify,代码如下。
      BOOL CExternListCtrl::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult)
{
 // TODO: Add your specialized code here and/or call the base class
 HD_NOTIFY *pHDN = (HD_NOTIFY*)lParam;
 if((pHDN->hdr.code==HDN_BEGINTRACKW||pHDN->hdr.code==HDN_BEGINTRACKA))// &&((pHDN->iItem==2)||(pHDN->iItem==3))
 {
  *pResult=TRUE;
  return TRUE;
 }
 return CListCtrl::OnNotify(wParam, lParam, pResult);
}
4、解决首次单击不能触发click事件的方法,派生右键down事件处理函数,代码如下:
void CExternListCtrl::OnLButtonDown(UINT nFlags, CPoint point)
{
 // TODO: Add your message handler code here and/or call default
 SetFocus();
 CListCtrl::OnLButtonDown(nFlags, point);
}
5、处理图片单击事件,判断区域,处理单击。代码如下。
void CYourDlg::OnNMClickList(NMHDR *pNMHDR, LRESULT *pResult)
{
 // TODO: Add your control notification handler code here
    POINT point;
 UINT uFlags;
 GetCursorPos(&point);
 m_ls.ScreenToClient(&point);
 int nItem = m_lst.HitTest(point, &uFlags);
 if(nItem >= 0)
 {
  CRect rc;
  m_lst.GetSubItemRect(nItem,3,LVIR_BOUNDS,rc);
  if(PtInRect(&rc,point))
  {
   MessageBox(L"...OnNMClickList");
  }
 }
 *pResult = 0;
}
6、改变列显示顺序。
 int nArQ[] = { 1,2,0,3};
 m_lst.GetHeaderCtrl()->SetOrderArray(4,nArQ);
7、让ListCtrl可以编辑
m_lst.ModifyStyle(0,LVS_EDITLABELS);
8、让ListCtrl可以选中一行
m_lst.SetExtendedStyle(m_lst.GetExtendedStyle()|LVS_EX_FULLROWSELECT);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值