如题,已经问了好几次了,都没有获得理想的答案,希望这次可以有收获啊,求高手指点MFCListCtrl
解决方案 »
- 新手提问,请大家帮帮我!!
- 关于ListCtrl控件问题
- 您是VC高手吗? 那就进来 一起讨论一下 这个关于 CPtrList 的问题
- 怎样这样来显示BMP图片?
- 如何取得窗口的唯一标示?
- 用SHFileOperation函数拷贝文件时,如何判断哪些文件执行了覆盖操作?
- 为什么我的ontimer成员函数总是有问题?我已经定义了settimer~~
- 编写activex控件时动态生成按钮,但是怎么实现它的事件响应呢?
- 急!release编译出的exe文件在其他机器运行提示找不到成员函数
- 如何获取DLL中函数的入口地址和函数体的字节数?
- CTreeCtrl控件。父项与子项的缩进怎样变成一样?
- 【求助】图像二值化问题
可以用custom draw实现,稍微有点麻烦,需要是单选模式,paint的时候临时取消select状态,设置个背景色作为自定义的高亮色,绘制完再恢复select状态从CListCtrl派生一个类,添加消息反射
BEGIN_MESSAGE_MAP(CMyListVCtrl, CListCtrl)
ON_NOTIFY_REFLECT(NM_CUSTOMDRAW, &CMyListVCtrl::OnNMCustomdraw)
END_MESSAGE_MAP()// CMyListVCtrl message handlersvoid CMyListVCtrl::PreSubclassWindow()
{
ModifyStyle(LVS_SHOWSELALWAYS, LVS_SINGLESEL); // TRICKY!!! can`t with LVS_SHOWSELALWAYS
SetExtendedStyle(GetExtendedStyle()|LVS_EX_FULLROWSELECT); CListCtrl::PreSubclassWindow();
}void CMyListVCtrl::OnNMCustomdraw(NMHDR *pNMHDR, LRESULT *pResult)
{
static BOOL s_bThisItemSelect = FALSE; NMLVCUSTOMDRAW* pLVCD = reinterpret_cast<LPNMLVCUSTOMDRAW>(pNMHDR);
*pResult = CDRF_DODEFAULT; switch (pLVCD->nmcd.dwDrawStage)
{
case CDDS_PREPAINT:
*pResult = CDRF_NOTIFYITEMDRAW;
break; case CDDS_ITEMPREPAINT:
{
UINT ordin = pLVCD->nmcd.lItemlParam; s_bThisItemSelect = FALSE;
if (pLVCD->nmcd.uItemState & CDIS_SELECTED) {
s_bThisItemSelect = TRUE;
SetItemState(pLVCD->nmcd.dwItemSpec, 0, LVIS_SELECTED); pLVCD->clrText = RGB(255,255,255); // your custom color
pLVCD->clrTextBk = RGB(0,128,0);
}
*pResult = CDRF_NOTIFYPOSTPAINT;
}
break; case CDDS_ITEMPOSTPAINT:
if (s_bThisItemSelect)
SetItemState(pLVCD->nmcd.dwItemSpec, 0xFF, LVIS_SELECTED);
break;
}
}