【发布时间】:2011-11-24 23:11:13
【问题描述】:
我在 CMFCToolBar 上有一个 CMFCToolBarComboBoxButton。我希望每当 CMFCToolBarComboBoxButton 获得焦点时,它的整个文本都会被选中。
最优雅的实现方式是什么?
非常感谢!
阿迪巴尔达
【问题讨论】:
我在 CMFCToolBar 上有一个 CMFCToolBarComboBoxButton。我希望每当 CMFCToolBarComboBoxButton 获得焦点时,它的整个文本都会被选中。
最优雅的实现方式是什么?
非常感谢!
阿迪巴尔达
【问题讨论】:
不确定最优雅的方法是什么,但我想最常见的方法是创建一个派生类并覆盖 OnSetFocus(未检查确切的方法名称),然后在包含的编辑控件上调用 SetCurSel()。 WM_FOCUS 仅发送到控件并且没有通知消息afaik,因此除了执行使控件处理事件的操作之外,您将没有太多选择-将其反映到其他地方,或者只是实现行为本身。 (我想理论上有各种各样的方法可以拦截消息,但这肯定不是最优雅的方式......)
【讨论】:
这应该是标准编辑控件的默认行为。如果不是,则其他东西正在明确删除该行为。也许您可以找到一些可以在组合框按钮上设置的标志?
如果不是:子类化编辑控件,处理WM_GETDLGCODE 消息。返回一个与DLGC_HASSETSEL 进行或运算的值。如果控件设置了此标志,则 Windows 将自动选择焦点上的所有文本。
【讨论】: