我在CMFCToolBar上有一个CMFCToolBarComboBoxButton。我希望每当CMFCToolBarComboBoxButton获得焦点时,它的整个文本将被选中。
什么是最优雅的方式来实现它?MFC如何自动选择CEdit控件中的所有文本
非常感谢!
阿迪巴尔达
我在CMFCToolBar上有一个CMFCToolBarComboBoxButton。我希望每当CMFCToolBarComboBoxButton获得焦点时,它的整个文本将被选中。
什么是最优雅的方式来实现它?MFC如何自动选择CEdit控件中的所有文本
非常感谢!
阿迪巴尔达
不知道最优雅的方式是什么,但我想做到这一点,最常见的方式是让一个派生类,并重写的onSetFocus(确切的方法名未选中),并调用SetCurSel()上包含的编辑控件。 WM_FOCUS只发送给控件,并且没有通知消息,所以除了做一些让控件处理事件的东西之外,你没有太多的选择 - 不管它是否反映到其他地方,或者只是实现行为本身。 (我想理论上可以通过拦截邮件来做各种各样的挑剔,但这绝不是最优雅的方式......)
这应该是标准编辑控件的默认行为。如果不是,其他的东西就是明确地去除这种行为。也许你可以找到一些你可以在组合框按钮上设置的标志?
如果不是:编辑控件的子类,则处理WM_GETDLGCODE消息。用DLGC_HASSETSEL
返回值OR。如果控件设置了此标志,则Windows将自动选择所有焦点文本。