ctreectrl-MFC中关于CTreeCtrl设置焦点到某一项上的问题

问题描述

MFC中关于CTreeCtrl设置焦点到某一项上的问题

我做的是树控件的多选功能,在多选过程中,需要给新点击的项设置focus,只有下面这种情况,能保留多选的高亮
CTreeCtrl::SelectItem(hItem);
CTreeCtrl::SetItemState(hFocus, TVIS_SELECTED, TVIS_SELECTED);
CTreeCtrl::SelectItem(hItem);
其中hFocus是当前选中的item,hItem是要选中的item

这种情况实现的多选,在按住Ctrl取消之前的选择时,会消除之前这一项和他上一次选中项的高亮!目前的问题就是这个,求高人指点啊。

多选我参考的方案原代码是
CTreeCtrl::SelectItem(NULL); //will cause notify, but can be taken as focus change
CTreeCtrl::SetItemState(hFocus, TVIS_SELECTED, TVIS_SELECTED);
CTreeCtrl::SelectItem(hItem); //set focus (will consequently select, if not already focused)
这种在他的原解决方案里能实现多选效果,而且没问题,但是拿出来我用,就实现不了,他是用单文档实现的,我需要在mfc窗口中实现!

解决方案

最后选了个折中的方法,多选时不去控制焦点,仍放到第一个选择的项上,单选时从新设置焦点

解决方案二:

树没有办法多选(高亮)
除非你重绘,不过更好的办法是给tree加上checkbox

解决方案三:

http://blog.csdn.net/headmaster110/article/details/5097972
http://www.2cto.com/kf/201310/250317.html

解决方案四:

可以考虑自绘, 自己控制

解决方案五:

他的第一句CTreeCtrl::SelectItem(NULL); 先取消选中

时间: 2024-10-22 23:49:37

ctreectrl-MFC中关于CTreeCtrl设置焦点到某一项上的问题的相关文章

mfc中静态文本设置好颜色透明后如何删除

问题描述 mfc中静态文本设置好颜色透明后如何删除 已有的文本好像被刷上去,不能通过单纯地改文本去除了,求解决办法 解决方案 MFC 静态文本设置透明

c++-MFC中静态文本框获取鼠标移动到按钮上的消息

问题描述 MFC中静态文本框获取鼠标移动到按钮上的消息 MFC对话框运用程序,对话框上有多个按钮和静态文本框,鼠标移动到不同按钮上时静态文本框输出不同字符串,这个功能怎么实现?我刚学MFC,是个小白,希望各位大神不嫌麻烦,讲详细一点.谢谢! 解决方案 1.重载PreTranslateMessage函数2.实现如下代码BOOL CMouseDlg::PreTranslateMessage(MSG* pMsg) { // TODO: Add your specialized code here an

在MFC中应用CTreeCtrl控件的技巧

首先,我们要创建一个基本对话框的MFC工程MFC_TreeCRTL(名字随便给一个).然后在资源视图中插入两个Dialog,ID分别为IDD_DIALOG11和IDD_DIALOG211,都更改Style属性为Child,Border属性为None,为它们建立两个类,分别命名为Cdialog11和Cdialog211,并在MFC_TreeCRTLDlg.CPP文件中包含dialog11.h和dialog211.h两个头文件.再导入几个资源图标作为树形控件节点的图标及装饰面板.最后在主面板上添加一

前端常见兼容问题系列8: 安卓机器中通过JS设置焦点无法拉起软键盘

有时候,为了优化用户体验,做交互设计的同学可能会希望让输入框自动获得焦点并弹出软键盘,这样用户不用点击输入框就可以直接输入.的确,这对用户来说很方便.但真正用HTML5页面去实现的时候,却遇到了问题. 首先我做了这样一个demo. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="apple-mobile

mfc-MFC中对话框的设置问题

问题描述 MFC中对话框的设置问题 对话框的透明度怎么设置呢?我用了setwindowlong和setlayeredwindowattributes这两个都不行还是自己加的有误,有谁知道的话帮忙细说一下 解决方案 setlayeredwindowattributes,这个思路是对的.你可以google现成的程序来对照 http://www.cnblogs.com/cmooon/archive/2012/04/18/2455402.htmlhttp://blog.csdn.net/glt3953/

iocomp-Iocomp在VS2010-&amp;amp;gt;VC++-&amp;amp;gt;MFC中怎么使用?

问题描述 Iocomp在VS2010->VC++->MFC中怎么使用? 我按照在VC6.0上的操作已经成功了.步骤是:在基于MFC对话框上点击右键,插入控件iplot,然后给这个控件添加对象,然后就会出现很多像aix.channel等很多类.但是我在Vs2010上也是这样操作,就没有这样的很多类出现?所以就不能用这些类中的方法.怎么解决??谢谢了 解决方案 估计不能支持vs2010

在DataGrid中使用下拉列表框和设置焦点

datagrid|下拉|下拉列表 在DataGrid中简单使用下拉列表框 作者:Tushar Ameta 翻译:秋枫 在DataGrid中使用下拉列表问题.这篇文章讲了如何在 System.Windows.Forms.DataGrid中切入使用ComboBox控件.不过原文不全,无法调试,在这里为了说清楚点,对原文作了一些修改,整篇文章主要包括三方面的内容. 1. 在DataGrid中加入ComboBox列: 2. 把在DataGrid中的修改保存到对应的网格: 3. 设置DataGrid中网格

mfc中可以设置列表视图中某一项的颜色吗?网上只有设置某一行颜色的办法,,请大神们指点一下??

问题描述 mfc中可以设置列表视图中某一项的颜色吗?网上只有设置某一行颜色的办法,,请大神们指点一下?? mfc中可以设置列表视图中某一项的颜色吗?网上只有设置某一行颜色的办法,,请大神们指点一下,比如我想使列表视图中0行1列的字符串显示为红色,能实现吗 解决方案 设置视图背景颜色

设置背景颜色-MFC中在View类中改变ClientDC的背景颜色

问题描述 MFC中在View类中改变ClientDC的背景颜色 我在MFC中建立了一个工程,用来在CView类中通过ClientDC来进行画图操作,现在想将ClientDC的默认背景颜色从白色改成黑色或者其他的颜色,求各位C大神指点,谢啦! PS:我试过在PreCreateWindow()和OnEraseBkgnd()函数中进行设置,但是没有成功,代码如下,请各位大神改正. BOOL CTestView::PreCreateWindow(CREATESTRUCT& cs) { cs.lpszCl