| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

「MFC リストボックスに要素を追加」の版間の差分

提供: MyMemoWiki
ナビゲーションに移動 検索に移動
 
1行目: 1行目:
==MFC リストボックスに要素==
+
==[[MFC]] リストボックスに要素==
[[VC++]] | {{category MFC}}
+
[[VC++]] | [[Category:MFC]]
  
 
===手順===
 
===手順===
14行目: 14行目:
 
    
 
    
 
  int i = 0;
 
  int i = 0;
  if (file.Open(fileName, CFile::modeRead)) {
+
  if (file.Open(fileName, CFile::mode[[R]]ead)) {
 
      
 
      
     while(file.ReadString(line)) {
+
     while(file.[[R]]eadString(line)) {
 
   
 
   
 
         m_list_line.AddString(line); // <- 行を追加
 
         m_list_line.AddString(line); // <- 行を追加
24行目: 24行目:
 
  }
 
  }
  
====文字化け====
+
====[[文字化け]]====
MFC ファイルを読む で、TRACEしたときは、文字化けを起こさなかったが、リストボックスに追加すると文字化けが発生  
+
[[MFC ファイルを読む]] で、TRACEしたときは、文字化けを起こさなかったが、リストボックスに追加すると文字化けが発生  
  
 
[[File:0783_mfc_listbox_02.jpg]]
 
[[File:0783_mfc_listbox_02.jpg]]
31行目: 31行目:
 
=====理由=====
 
=====理由=====
 
このあたりを参照
 
このあたりを参照
*http://fatalita.sakura.ne.jp/3DLib/Ref/_T/
+
*http://fatalita.sakura.ne.jp/3DLib/[[R]]ef/_T/
  
 
=====対策=====
 
=====対策=====
プロジェクトのプロパティの文字セットを、「[文字コード] [マルチ バイト文字セット]を使用する」に変更する。
+
プロジェクトのプロパティの文字セットを、「[[文字コード|マルチ バイト文字セット]]を使用する」に変更する。
 
(変更しない状態だとそりゃもう面倒くさそうなのであきらめた)
 
(変更しない状態だとそりゃもう面倒くさそうなのであきらめた)
 
[[File:0781_char_code_01.jpg]]
 
[[File:0781_char_code_01.jpg]]
43行目: 43行目:
 
  m_src_file.GetWindowTextA(fileName);
 
  m_src_file.GetWindowTextA(fileName);
  
====文字化け直るも・・・====
+
====[[文字化け]]直るも・・・====
文字化けは直った。
+
[[文字化け]]は直った。
 
L&Fがさっきと違うくないか?
 
L&Fがさっきと違うくないか?
 
[[File:0784_mfc_listbox_03.jpg]]
 
[[File:0784_mfc_listbox_03.jpg]]

2020年2月16日 (日) 04:29時点における最新版

MFC リストボックスに要素

VC++ |

手順

リストボックスに変数を割り当てる(m_list_line)

0782 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したときは、文字化けを起こさなかったが、リストボックスに追加すると文字化けが発生

0783 mfc listbox 02.jpg

理由

このあたりを参照

対策

プロジェクトのプロパティの文字セットを、「マルチ バイト文字セットを使用する」に変更する。 (変更しない状態だとそりゃもう面倒くさそうなのであきらめた) 0781 char code 01.jpg

ソースを若干修正

m_src_file.GetWindowTextW(fileName);

m_src_file.GetWindowTextA(fileName);

文字化け直るも・・・

文字化けは直った。 L&Fがさっきと違うくないか? 0784 mfc listbox 03.jpg

参考キーワード

  • MultiByteToWideChar
  • WideCharToMultiByte
  • CA2W
  • CW2CT