トップ 一覧 ping 検索 ヘルプ RSS ログイン

MFC リストボックスに要素を追加の変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
!!!MFC リストボックスに要素
[VC++]{{category MFC}}

!!手順
!リストボックスに変数を割り当てる(m_list_line)
{{ref_image mfc_listbox_01.jpg}}

!ファイルを読み込み、1行を1要素として追加
 // テキストボックスの値を、CStringにコピー
 m_src_file.GetWindowTextW(fileName);
 
 CStdioFile file;
 CString line;
  
 int i = 0;
 if (file.Open(fileName, CFile::modeRead)) {
     
     while(file.ReadString(line)) {
 
         m_list_line.AddString(line); // <- 行を追加
 
     }
     file.Close();
 }

!文字化け
MFC ファイルを読む で、TRACEしたときは、文字化けを起こさなかったが、リストボックスに追加すると文字化けが発生 

{{ref_image mfc_listbox_02.jpg}}

::理由
このあたりを参照
*http://fatalita.sakura.ne.jp/3DLib/Ref/_T/

::対策
プロジェクトのプロパティの文字セットを、「[マルチ バイト文字セット|文字コード]を使用する」に変更する。
プロジェクトのプロパティの文字セットを、「[[マルチ バイト文字セット|文字コード]]を使用する」に変更する。
(変更しない状態だとそりゃもう面倒くさそうなのであきらめた)
{{ref_image char_code_01.jpg}}

ソースを若干修正
 m_src_file.GetWindowTextW(fileName);
↓
 m_src_file.GetWindowTextA(fileName);

!文字化け直るも・・・
文字化けは直った。
L&Fがさっきと違うくないか?
{{ref_image mfc_listbox_03.jpg}}

!参考キーワード
*MultiByteToWideChar
*WideCharToMultiByte
*CA2W
*CW2CT