如何让listctrl中已选的行全部高亮度显示?谢谢! 首先保证有多选属性SetItemState 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 m_listctrl.SetExtendedStyle(LVS_EX_FULLROWSELECT|//高亮显示选中的项目 LVS_EX_GRIDLINES|//显示网格线。 LVS_EX_ONECLICKACTIVATE );//当鼠标移动到项目上面时高亮显示,但是并不是被选中 SetExtendedStyle(LVS_EX_FULLROWSELECT); 你可能没有选Show selection always属性。 njg_jh(糨糊):他的方法是可以的!我的设置方法如下:(其实本质是一样的) DWORD dwlstOperationStyle = GetWindowLong(m_lstOperation.m_hWnd, GWL_STYLE); dwlstOperationStyle &= ~(LVS_TYPEMASK); SetWindowLong ( m_lstOperation.m_hWnd , GWL_STYLE , dwlstOperationStyle | LVS_REPORT ); DWORD OperationStyles = LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES ; //| LVS_EX_HEADERDRAGDROP ; //此处不允许列头被拖拽 m_lstOperation.SetExtendedStyle( OperationStyles );呵呵,高亮消失是别的原因,比如焦点的问题。我的解决方法是再增加一个响应就可以了!如下,为你的 ListCtrl增加一个OnClick事件(利用ClassWizard或者消息响应等方法)://点击 ListView字段表 事件响应//设置字段表 列表热点void CDataBaseToolDlg::OnlstOperationClick(NMHDR* pNMHDR, LRESULT* pResult) { LPNMITEMACTIVATE lpnmitem = (LPNMITEMACTIVATE) pNMHDR; long nItem=lpnmitem->iItem; if(nItem!=-1) { m_lstOperation.SetHotItem(nItem); } *pResult = 0;} 对于Show selection always属性和设置热点的区别:我个人认为 设置热点比较好:因为仅设置Show selection always属性,将会在控件失去焦点时使所选择项的高亮颜色(如果未修改,应该是蓝色)变成灰色,并且会在点击控件空白行时失去高亮,这些也许是用户不愿意看到的。而设置热点不存在上面的限制,不论什么时候,所选择的项都是蓝色的,很醒目。 我试了一下,当我把焦点从ListCtrl移到一个Edit中时,原来高亮显示的项也会变成灰色;但先点击一下ListCtrl中的空白区,然后再把焦点移到一个Edit中时会保持高亮显示,请tpProgramer说详细一点儿,如何解决我刚说的情况啊 vc++ 图像处理 颜色问题 求教LoadImage函数 MFC里如何初始化ToolBar的大小和位置? 如何在对话框上加工具栏,和状态栏。 我在对话框上添加一个list ctrl,有谁有这个控件的代码,能共享一下么? 请问如何将一个自绘字体对话框程序嵌到一个其他程序中,谢谢. 欢迎到,菜鸟一问? 急救关于Winsock编程时accpet函数的问题!!! 奇怪 ,VC 开发环境的断点设置不好使了 ???????????????????? 关于多播的一个很容易的问题,快来抢分 请问如何通过程序使IE工具条上的刷新按钮消失? vs2008下WideCharToMultiByte参数报错,
LVS_EX_GRIDLINES|//显示网格线。
LVS_EX_ONECLICKACTIVATE );//当鼠标移动到项目上面时高亮显示,但是并不是被选中
他的方法是可以的!我的设置方法如下:(其实本质是一样的)
DWORD dwlstOperationStyle = GetWindowLong(m_lstOperation.m_hWnd, GWL_STYLE);
dwlstOperationStyle &= ~(LVS_TYPEMASK);
SetWindowLong ( m_lstOperation.m_hWnd , GWL_STYLE , dwlstOperationStyle | LVS_REPORT );
DWORD OperationStyles = LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES ; //| LVS_EX_HEADERDRAGDROP ; //此处不允许列头被拖拽
m_lstOperation.SetExtendedStyle( OperationStyles );呵呵,高亮消失是别的原因,比如焦点的问题。我的解决方法是
再增加一个响应就可以了!
如下,为你的 ListCtrl增加一个OnClick事件(利用ClassWizard或者消息响应等方法)://点击 ListView字段表 事件响应
//设置字段表 列表热点
void CDataBaseToolDlg::OnlstOperationClick(NMHDR* pNMHDR, LRESULT* pResult)
{
LPNMITEMACTIVATE lpnmitem = (LPNMITEMACTIVATE) pNMHDR; long nItem=lpnmitem->iItem;
if(nItem!=-1)
{
m_lstOperation.SetHotItem(nItem);
}
*pResult = 0;
}
因为仅设置Show selection always属性,将会在控件失去焦点时使所选择项的高亮颜色(如果未修改,应该是蓝色)变成灰色,并且会在点击控件空白行时失去高亮,这些也许是
用户不愿意看到的。而设置热点不存在上面的限制,不论什么时候,所选择的项都是蓝色的,很醒目。