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