【发布时间】: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