直观地指示活动控件(对于不显示焦点矩形的控件)
Posted
技术标签:
【中文标题】直观地指示活动控件(对于不显示焦点矩形的控件)【英文标题】:Visually indicating the active control (for controls that don’t show focus rect) 【发布时间】:2012-06-09 21:11:26 【问题描述】:我正在编写一个小 Windows 应用程序,它有两个列表视图控件。我已经对其进行了设置,以便用户可以在两者之间进行制表符(焦点),但我需要一种直观地指示哪个是活动控件的方法。我不想麻烦自己绘制的控件,所以我尝试了一些不同的窗口样式,如 border 和 client edge,但没有看起来不错。我决定切换 disabled 属性,因为它看起来最好并且易于使用。
现在的问题是我已经设置了控件,因此每当用户单击其中一个时,它都会抓住焦点(调用SetFocus()
,为其自身设置句柄等)但当然,禁用的控件不会' 不会收到像鼠标点击这样的事件通知。
是否有人对我如何保留活动控件的视觉区别以及如何用鼠标切换活动窗口有什么建议?
【问题讨论】:
列表框已经知道如何指示焦点。它有一个焦点矩形,并使选定的项目变成蓝底白字。不要帮忙。如果你真的需要这个,那么在父级中为 WM_CTLCOLORLISTBOX 实现一个消息处理程序,例如,给它一个不同的背景颜色。 这不是一个列表框,它是一个列表控件/视图,我不是要在列表控件中指示选定的项目,我是在尝试指示两个列表控件中的哪一个当前具有键盘。 【参考方案1】:Hans 使用 CTRLCOLOR 的建议让我想起了很久以前使用它来轻松地对控件的颜色进行一些更改,这让我想起了CustomDraw
。
我决定使用 CustomDraw 来指示当前活动的控件,因为它更简单,而且提供了更好的控制。
【讨论】:
以上是关于直观地指示活动控件(对于不显示焦点矩形的控件)的主要内容,如果未能解决你的问题,请参考以下文章