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()
か?
を使用GetDlgItem()
してコンボボックスを取得し、CDialog::OnInitDialog()
が呼び出される前にそれを入力することで、これを解決しました。これは意図したとおりに機能します。
これが他の誰にとっても問題ではない場合、私は別の方法で何をしているのかわかりません。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加