SetFocus 和 KillFocus
SetFocus and KillFocus
我的对话框中有一个 CMFCTabCtrl
,我的 CMFCTabCTrl
有两个选项卡。
第一个选项卡有 CComboBox
,第二个选项卡也有 CComboBox
。
在第一个选项卡的 ComboBox 中新添加的任何项目都将反映在第二个选项卡的 ComboBox 中。同样,在第二个选项卡的 ComboBox 中新添加的项目将反映在第一个选项卡的 ComboBox 中。
为此,我将所有 ComboBox 项目放在一个向量中,并且在每个对话框的 WM_SETFOCUS
事件中,我将项目添加到 ComboBox。
当用户在 ComboBox 中键入某些内容但随后用户选择了另一个控件或 dialog/tab 我也在将该项目添加到 ComboBox。为此,我在父对话框 OnCommand
中跟踪 CBN_KILLFOCUS
并将项目添加到 ComboBox。
现在我的问题是,当用户在 ComboBox 中键入内容并单击第二个选项卡时,首先调用第二个选项卡的 SetFocus
,然后仅调用带有 CBN_KILLFOCUS()
消息的 OnCommand。所以第二个选项卡没有第一个选项卡新添加的项目,而第一个选项卡有那个项目。
如何使 ComboBox 项目在显示之前可用于第二个选项卡。
如果我在 AFX_WM_CHANGING_ACTIVE_TAB 上进行必要的操作(无论我在 killfocus 上做什么操作),我都能达到我的要求。
我的对话框中有一个 CMFCTabCtrl
,我的 CMFCTabCTrl
有两个选项卡。
第一个选项卡有 CComboBox
,第二个选项卡也有 CComboBox
。
在第一个选项卡的 ComboBox 中新添加的任何项目都将反映在第二个选项卡的 ComboBox 中。同样,在第二个选项卡的 ComboBox 中新添加的项目将反映在第一个选项卡的 ComboBox 中。
为此,我将所有 ComboBox 项目放在一个向量中,并且在每个对话框的 WM_SETFOCUS
事件中,我将项目添加到 ComboBox。
当用户在 ComboBox 中键入某些内容但随后用户选择了另一个控件或 dialog/tab 我也在将该项目添加到 ComboBox。为此,我在父对话框 OnCommand
中跟踪 CBN_KILLFOCUS
并将项目添加到 ComboBox。
现在我的问题是,当用户在 ComboBox 中键入内容并单击第二个选项卡时,首先调用第二个选项卡的 SetFocus
,然后仅调用带有 CBN_KILLFOCUS()
消息的 OnCommand。所以第二个选项卡没有第一个选项卡新添加的项目,而第一个选项卡有那个项目。
如何使 ComboBox 项目在显示之前可用于第二个选项卡。
如果我在 AFX_WM_CHANGING_ACTIVE_TAB 上进行必要的操作(无论我在 killfocus 上做什么操作),我都能达到我的要求。