首页 > 解决方案 > SetFocus 和 KillFocus

问题描述

我的对话框中有一个CMFCTabCtrl,我CMFCTabCTrl有两个选项卡。

第一个选项卡有一个CComboBox,第二个选项卡也有一个CComboBox

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

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

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

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

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

标签: mfcmfc-feature-pack

解决方案


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


推荐阅读