CListCtrl 详解
来源:互联网 发布:知乎专栏怎么写文章 编辑:程序博客网 时间:2024/04/30 22:08
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);
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);
- CListCtrl详解
- CListCtrl详解
- CListCtrl详解
- ClistCtrl 详解
- CListCtrl 详解
- CListCtrl用法 CListCtrl使用详解
- CListCtrl使用详解
- CListCtrl使用详解
- CListCtrl使用详解
- CListCtrl详解(转)
- CListCtrl使用详解
- [转]CListCtrl使用详解
- CListCtrl使用详解
- CListCtrl使用详解
- CListCtrl使用详解
- CListCtrl详解 zt
- 内存泄露 CListCtrl详解
- [zz] CListCtrl使用详解
- 都是“注册”惹的祸之解决方案
- 基于配置的ORMapping框架浅析之4(面向方面的AOP切面思想引入)
- SQL Server大型服务器:伸缩性、可用性与易管理性
- 说说Google Map的Mapplets
- String StringBuffer StringBuilder 三者的区别
- CListCtrl 详解
- 【.net】3des加密
- PL/SQL基础学习
- How DirectShow Decides Which Filters to Use
- 使用生成后事件(将一些文件自动放入Bin目录下面)
- Google Chrome 试用感受
- 要开始做事了
- SqlDependency 的数据库配置步骤
- ORACLE用户管理