これは些細なことですが、MFCではいつも私のワークフローを止めるばかげた些細な問題に終わります。コンボボックスに文字列を追加できないのはなぜですか?
_AFXCMN_INLINE int CComboBoxEx::AddString(LPCTSTR lpszString)
{ UNUSED_ALWAYS(lpszString); ASSERT(FALSE); return CB_ERR;}
私はそうのように初期化時にコンボボックスにいくつかの文字列を追加しようとしています:
BOOL myDialog::OnInitDialog()
{
CDHtmlDialog::OnInitDialog();
cb_direction.AddString(CString("North"));
}
は、私はエラーがafxcmn2.inlライン352を指して、「デバッグアサートに失敗しました」取得しています
Googleの答えのほとんどは、AddStringがOnInitDialogの前に起こっていることを示唆しているようですが、ここではそうではありません。 Googleで答えの別のシリーズは、データ交換が起きていないか、それは間違っている示唆してますが、そうではありません。
void myDialog::DoDataExchange(CDataExchange* pDX)
{
CDHtmlDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_WHEDIT_DIR, cb_direction);
}
もう一つの提案は、コンボボックスがまだ作成されていないということでしたが、私は使用してコンボボックスを無効にした場合次のコードは、私はエラーを取得しないだけでなく、実際に動作し、ボックスを無効にします!
BOOL myDialog::OnInitDialog()
{
CDHtmlDialog::OnInitDialog();
cb_direction.EnableWindow(FALSE);
}
解決策をクリーンアップして再構築しました。他に何が欠けているのか分かりません。私がしたいのは、.Net(このプログラムは何年か前に書かれたもので、これは.NETではなくMFCに入っている理由ですが、私は逃げ出します)のコンボボックスに文字列を追加するだけです。 。
CComboBoxExは、画像をアイテムに関連付けます。代わりにInsertItem()メソッドを使用します。 –