【问题标题】:SetFocus and KillFocusSetFocus 和 KillFocus
【发布时间】:2018-07-16 14:14:04
【问题描述】:

我的对话框中有一个CMFCTabCtrl,我的CMFCTabCTrl 有两个标签。

第一个标签有一个CComboBox,第二个标签也有一个CComboBox。

在第一个选项卡的 ComboBox 中新添加的任何项目都将反映在第二个选项卡的 ComboBox 中。同样,在第二个选项卡的 ComboBox 中新添加的任何项目都将反映在第一个选项卡的 ComboBox 中。

为此,我将所有 ComboBox 项放在一个向量中,并且在每个对话框的 WM_SETFOCUS 事件中,我将项添加到 ComboBox。

当用户在 ComboBox 中键入内容但随后用户选择另一个控件或对话框/选项卡时,我也将该项目添加到 ComboBox。为此,我在父对话框 OnCommand 中跟踪 CBN_KILLFOCUS 并将项目添加到 ComboBox。

现在我的问题是,当用户在 ComboBox 中键入内容并单击第二个选项卡时,首先调用第二个选项卡的 SetFocus,然后仅调用带有 CBN_KILLFOCUS() 消息的 OnCommand。因此,第二个选项卡没有第一个选项卡新添加的项目,而第一个选项卡有该项目。

如何使 ComboBox 项目在显示之前对第二个选项卡可用。

【问题讨论】:

  • WM_KILLFOCUS is the wrong time to do field validation。不是相同的用例,但基本原则也适用于此。您只是在使用错误的消息来执行操作。但由于您是在询问您的解决方案(而不是您真正试图解决的问题),因此很难提出建议。
  • 除了IInspectable的评论:阅读this

标签: mfc mfc-feature-pack


【解决方案1】:

如果我在 AFX_WM_CHANGING_ACTIVE_TAB 上做必要的操作(无论我在 killfocus 上做什么),我就能达到我的要求。

【讨论】:

    猜你喜欢
    • 2021-04-18
    • 1970-01-01
    • 1970-01-01
    • 2013-01-09
    • 1970-01-01
    • 1970-01-01
    • 2014-08-18
    • 1970-01-01
    • 2012-09-26
    相关资源
    最近更新 更多