在MFC对话框中填充组合框

时间:2016-12-10 03:37:29

标签: c++ combobox mfc

我在MFC对话框中添加了一个组合框。我添加了控制变量m_wndImportMode)和值变量m_nImportMode)。

我能够很好地使用这两个变量。我可以使用控制变量来填充控件就好了。我的问题是填充我的控件的正确位置在哪里?

如果我在DoDataExchange()之前填充组合框,那么我的控制变量尚未初始化。如果我在DoDataExchange()之后填充组合框,那么它会填充正常但值不会被设置。

BOOL COptionsDlg::OnInitDialog()
{
    // If I populate my combo box here,
    // my control variable is not yet available

    // This will ultimately call DoDataExchange()
    CDialog::OnInitDialog();

    // If I populate my combo box here,
    // DoDataExchange() has already been called and
    // so it will not have selected the correct item
    // before there were any items

    return TRUE;  // return TRUE unless you set the focus to a control
}

如果我使用CDialog::OnInitDialog()而不是我的控制变量(尚未初始化),我可以看到我可以在调用GetDlgItem()之前填充控件,然后默认项目将正确设置为我想要的。但是MFC框架不能在对话框中填充列表控件而仍然使用DoDataExchange()吗?

1 个答案:

答案 0 :(得分:0)

我通过使用GetDlgItem()检索组合框,然后在调用CDialog::OnInitDialog()之前填充它来解决此问题。这可以按预期工作。

如果对其他任何人来说都不是问题,我不确定我的做法会有什么不同。