我在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()
吗?
答案 0 :(得分:0)
我通过使用GetDlgItem()
检索组合框,然后在调用CDialog::OnInitDialog()
之前填充它来解决此问题。这可以按预期工作。
如果对其他任何人来说都不是问题,我不确定我的做法会有什么不同。