win32 sdk,listview控件在失去焦点以后如何保持其中被选中项的高亮
如题,用listview控件做一个音乐播放器的播放列表,在其中选中一首歌,这一项就变为了高亮,但是这时如果去点别的按钮,比如播放按钮,那么listview控件就会失去焦点...
如题,用listview控件做一个音乐播放器的播放列表,在其中选中一首歌,这一项就变为了高亮,但是这时如果去点别的按钮,比如播放按钮,那么listview控件就会失去焦点,被选中项的高亮也消失了,就不知道在放哪首歌了。
有什么可以解决的方法吗? 展开
有什么可以解决的方法吗? 展开
1个回答
展开全部
你说不知道放哪首歌的时候是针对你的软件用户还是你自己
第一个, 如果你是针对软件用户, 可以在当它失去焦点后再重新把焦点设定回去。比如在你点击了播放按钮后在处理完一系列事务后加上ListView_setfocus函数我不清楚是不是这个,你自己查下。这样就可以让它高亮了, 另外你可以再设置一个textbox或static控制的东西,然后把当前正在播放的歌曲名称显示在那里边
第二个, 如果是你自己想知道这个是放哪首歌曲,自然是需要一个全局变量来记录当前正在播放的歌曲的ID,这样就OK
第一个, 如果你是针对软件用户, 可以在当它失去焦点后再重新把焦点设定回去。比如在你点击了播放按钮后在处理完一系列事务后加上ListView_setfocus函数我不清楚是不是这个,你自己查下。这样就可以让它高亮了, 另外你可以再设置一个textbox或static控制的东西,然后把当前正在播放的歌曲名称显示在那里边
第二个, 如果是你自己想知道这个是放哪首歌曲,自然是需要一个全局变量来记录当前正在播放的歌曲的ID,这样就OK
更多追问追答
追问
是针对用户的。
你说的方法可行,但是不太可取,因为控件有很多,在每一个控件被点击而获得焦点以后,都再把焦点重置到listview上,比较麻烦。而且在用户操作其他控件的时候,LV还是会失去焦点,比如用户在拖动音量滑块或者播放进度滑块时,鼠标左键一直点击着滑块拖动但长时间不松开,在这段时间里,LV还是会失去焦点,其中被选择项还是没有高亮。
设置static也想过,不过就是想用LV天然地解决,想知道可不可以,呵呵。
追答
那这样吧,我想的方法是手动给某一项加上颜色, 即自绘某一项。 用户选中项获得以后你得到该行号然后对它处理NM_CUSTOMDRAW消息。进行自绘, 把它换成蓝色或其它什么颜色达到高度显示的效果。这样做可能比较复杂,我没有实现过, 只能给你一些提示信息, 你可以看看这个文章blog csdn net / sidyhe / article / details / 7176162
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询