当我点在listctrl控件的空白地方的时候,图标的选中状态会消失,怎么避免这个情况?

 我来答
sdghchj
2011-05-17 · TA获得超过1.2万个赞
知道大有可为答主
回答量:3977
采纳率:0%
帮助的人:6136万
展开全部
不是选中状态消失,而是失去了焦点。
listctrl.setitemstate(i,LVIS_FOCUSED,LVIS_FOCUSED);
如果还不行就在NM_CUSTOMDRAW消息里重绘该选中行,添加背影色
void CEditListCtrl::OnNMCustomdrawList(NMHDR* pNMHDR, LRESULT* pResult)
{
NMLVCUSTOMDRAW* pNMLVCustomDraw = (NMLVCUSTOMDRAW*)pNMHDR;
*pResult = CDRF_DODEFAULT;
if (pNMLVCustomDraw->nmcd.dwDrawStage == CDDS_PREPAINT)
{
*pResult = CDRF_NOTIFYITEMDRAW;
return;
}
else if (pNMLVCustomDraw->nmcd.dwDrawStage == CDDS_ITEMPREPAINT)
{
if (m_iItem==(int)pNMLVCustomDraw->nmcd.dwItemSpec)
{
this->SetItemState(m_iItem,LVIS_SELECTED,LVIS_SELECTED);
pNMLVCustomDraw->clrTextBk=RGB(150,200,250);
}
*pResult = CDRF_NOTIFYSUBITEMDRAW;
return;
}
else if (pNMLVCustomDraw->nmcd.dwDrawStage == (/*CDDS_ITEMPREPAINT |*/ CDDS_SUBITEM))
{

}
*pResult=0;

}
更多追问追答
追问
我使用的是listctrl的图标模式(ICON),setitemstate加进去后没达到效果(我是在某项获得焦点时,GetSelectionMark获得其列数,然后添加该函数的)。由于图标经过排列后,在listctrl控件总会留下空白,而点击空白的地方就会使一项失去焦点,这个怎么解决啊?你给的那个消息重绘适合否?
追答
我只能应该可以,report模式下就是主这样做的。自己试。
来自:求助得到的回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式