CListCtrl控件如何禁止check?

yeah2000 2010-01-15 11:21:20
操作过程中改变了check,在最后一步需要禁止改变check状态。
这个改怎么做?
...全文
318 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
hzy694358 2010-01-16
  • 打赏
  • 举报
回复
mark
精锐掷矛手 2010-01-16
  • 打赏
  • 举报
回复
学习
xwsn007 2010-01-16
  • 打赏
  • 举报
回复
要处理列表的鼠标单击和双击消息:
m_bEnableCheck是Dlg的成员变量,为禁用标记,FALSE表示禁用


void CListCtrlDemoDlg::OnClickListCtrl(NMHDR* pNMHDR, LRESULT* pResult)
{
DWORD dwPos = GetMessagePos();
CPoint point( LOWORD(dwPos), HIWORD(dwPos) );

m_cListCtrl.ScreenToClient(&point);

LVHITTESTINFO lvinfo;
lvinfo.pt = point;
lvinfo.flags = LVHT_ABOVE;

UINT nFlag;
int nItem = m_cListCtrl.HitTest(point, &nFlag);

//判断是否点在checkbox上,若是,且check可用标志为假,则恢复原来的值
if(nFlag == LVHT_ONITEMSTATEICON && m_bEnableCheck == FALSE)
{
BOOL bCheck = m_cListCtrl.GetCheck(nItem);
m_cListCtrl.SetCheck(nItem, !bCheck);
}

*pResult = 0;
}

void CListCtrlDemoDlg::OnDblclkListCtrl(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
DWORD dwPos = GetMessagePos();
CPoint point( LOWORD(dwPos), HIWORD(dwPos) );

m_cListCtrl.ScreenToClient(&point);

LVHITTESTINFO lvinfo;
lvinfo.pt = point;
lvinfo.flags = LVHT_ABOVE;

UINT nFlag;
int nItem = m_cListCtrl.HitTest(point, &nFlag);

//判断是否点在checkbox上,若是,且check可用标志为假,则恢复原来的值
if(nFlag == LVHT_ONITEMSTATEICON && m_bEnableCheck == FALSE)
{
BOOL bCheck = m_cListCtrl.GetCheck(nItem);
m_cListCtrl.SetCheck(nItem, !bCheck);
}

*pResult = 0;
}
xwsn007 2010-01-16
  • 打赏
  • 举报
回复
楼主结贴吧,我实现了
xwsn007 2010-01-16
  • 打赏
  • 举报
回复

void CTest6Dlg::OnClickList1(NMHDR* pNMHDR, LRESULT* pResult)
{
DWORD dwPos = GetMessagePos();
CPoint point( LOWORD(dwPos), HIWORD(dwPos) );

m_list.ScreenToClient(&point);

LVHITTESTINFO lvinfo;
lvinfo.pt = point;
lvinfo.flags = LVHT_ABOVE;

UINT nFlag;
int nItem = m_list.HitTest(point, &nFlag);
//判断是否点在checkbox上
if(nFlag == LVHT_ONITEMSTATEICON)
{
m_list.SetCheck(nItem,FALSE);
}
*pResult = 0;
}

15,980

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧