質問: m_add_edit; // 取得した文字列をチェックボックスリストコントロールに設定する m_check_list_box.AddString(edit_CString); } ``` この問題を解決するために、CCheckBoxListコントロールのプロパティや関数を調べてみましたが、解決策が見つかりませんでした。 解決策を教えて頂けるとありがたいです。どうかよろしくお願い致します。
回答: ダイアログウィンドウを最初に表示する時に`ToDoDlg::OnEnKillfocusCaptionEdit()`が呼ばれるため、`m_check_list_box.AddString(edit_CString);`によって空文字列が追加されるからです。 例えば以下のように`edit_CString`が空文字列なら`m_check_list_box.AddString(edit_CString);`を行わない等の処理を行えば発生しません。 ``` if (!edit_CString.IsEmpty()) { m_check_list_box.AddString(edit_CString); } ``` なお、学習のため?に色んなことを試しているようですが、上記質問&回答のように色んな機能の呼び出しに`KillFocus`を使い回すことは予期せぬ問題を呼び込むことになるようなので、今後は止めておいたほうが良いと思われます。