RT,,
高亮度是可以实现的,但是不知道为什么,
一旦列表控件失去焦点之后,所做的选择(即某行被选中)
就失效了(即推动焦点或者没了高亮度显示了),
不知道有没有一种更好的办法,能让它在失去焦点
之后保持选中的行高亮度显示,,,,
-------------------------
高亮度是可以实现的,但是不知道为什么,
一旦列表控件失去焦点之后,所做的选择(即某行被选中)
就失效了(即推动焦点或者没了高亮度显示了),
不知道有没有一种更好的办法,能让它在失去焦点
之后保持选中的行高亮度显示,,,,
-------------------------
解决方案 »
- Graphics不能正常构造的奇怪问题
- MFC中框架上面的按钮 字体样式的设计
- 如何在同一个位置交替显示不同的控件
- link 时出的问题
- 欢迎大家加入我的群,一起讨论问题
- 我想让程序随timer(timer达到一定的数值的时候),自动改变描画对象的颜色,如何动态的设定timer的RGB颜色(rgb值改变多少)能够足以从
- 哪位高人帮我看一段程序,实在搞不懂了!!!!!!!!!!加了WSAAsyncSelect(s,this->m_hWnd,UM_SOCK,FD_CONNECT)就连不上,不加能连上,奇怪了
- 小弟在线恭候,请懂delphi、vc的大侠解答
- VC中怎样测试光驱的盘符?
- 进程调用的查询
- 求助如何查找窗口(VC)
- initialize the crt more than once 错误
INDEXTOSTATEIMAGEMASK(2) | INDEXTOOVERLAYMASK(1),
LVIS_STATEIMAGEMASK | LVIS_OVERLAYMASK);更加详细的,请参见网上关于LVIS_OVERLAYMASK 参数的使用
同时你要用一张bitmap图片作为选中状态覆盖在item上面的图标
----------------------
这个就一头雾水了,,不知道具体该从何入手了,,
//楼主,你的需求:当CListCtrl失去焦点的时候,它被选中的item也可高亮显示,是这样吧?//是这样的话,可以通过响应消息NM_CUSTOMDRAW实现1 ON_NOTIFY ( NM_CUSTOMDRAW, IDC_LIST, OnCustomdrawMyList ) //消息响应2 m_ctrlList.SetItemState(item,LVIS_SELECTED,LVIS_SELECTED); //item为被选中的项
m_strKeySelect = m_ctrlList.GetItemText(item,isubkey); //成员变量m_strKeySelect记录下选中项的key
m_ctrlList.Invalidate();3 void CDlgYour::OnCustomdrawMyList ( NMHDR* pNMHDR, LRESULT* pResult )
{
NMLVCUSTOMDRAW* pLVCD = reinterpret_cast<NMLVCUSTOMDRAW*>( pNMHDR );
COLORREF crText,crBkgnd; //文字和背景色
if ( CDDS_PREPAINT == pLVCD->nmcd.dwDrawStage )
{
*pResult = CDRF_NOTIFYITEMDRAW;
}
else if ( CDDS_ITEMPREPAINT == pLVCD->nmcd.dwDrawStage )
{
// This is the prepaint stage for an item.
*pResult = CDRF_NOTIFYSUBITEMDRAW;
}
else if ( (CDDS_ITEMPREPAINT | CDDS_SUBITEM) == pLVCD->nmcd.dwDrawStage )
{
CString strselect = m_ctrlList.GetItemText((int)pLVCD->nmcd.dwItemSpec,isubkey);
if(strselect == m_strkeyselect) //当重画的项为选中项时,重设文字和背景色
{
crText = RGB(0,0,0);
crBkgnd = RGB(49,106,197); //高亮背景色
pLVCD->clrText = crText;
pLVCD->clrTextBk = crBkgnd;
}
*pResult = CDRF_DODEFAULT;
}
}//vc2003测试通过,大概是这个意思,你可以参考下
当前还是不行,,选中是选中的了,,但是高亮度显示的不是蓝色,,而像银灰色(同win98界面风格的颜色)
NM_CUSTOMDRAW是将CListCtrl每项都重画的下面这句判断是否是你选中的项,是的话再重画,不是的话当然不会画啊
if(strselect == m_strkeyselect) //当重画的项为选中项时,重设文字和背景色要不留个邮箱,我发个例程给你
不是你要的效果,你可以参考下面的例子,我也正在测试http://topic.csdn.net/t/20011214/17/421843.html
非常感谢你的帮助,,
m_cListCtrl.SetFocus();
m_cListCtrl.SetItemState(m_nCurIndex, LVIS_SELECTED, LVIS_SELECTED);
UpdateData(FALSE);
你的DrawItem是自己手机添加的吗?
但看上去好像是系统添加的,,,因为
有// TODO: Add your code to draw the specified item一句
可如果是系统添加的,可我也没找到映射是什么呀,,