Webから取得したUTF-8エンコード文字列がMFCのコントロールで文字化けする


blueshield  2010-09-06 09:51:18  No: 71916  IP: [192.*.*.*]

今MFCでWebからUTF-8文字列を取得し、それをリストコントロールのアイテムテキストとして表示するプログラムを書いています。同じMFCのコントロール上で入力されたユニコード文字(ここではハート記号)をそのままCStringを介してアイテムテキストとして入力する分には文字化けもないのですが、Webから取得したUTF-8のハート記号が文字化けします。
WindowsAPIにある文字コード変換APIを使ってUTF-8からワイド文字に変換すると、デバッグにおける変数ウォッチでは正常に読める形で見れますが、やはりリストコントロールのアイテムテキストでは文字化けします。
どなたかご教授いただける方が居られましたら幸いです。

編集 削除
blueshield  2010-09-06 11:14:55  No: 71917  IP: [192.*.*.*]

質問主です。追記します。
UTF-8をUTF-16に変換後、エディットボックスなどのコントロールでは正常に表記できるのですが、どうもリストコントロールのアイテムテキストで文字化けします。どなたかこのような現象について経験をお持ちの方がおられましたらご助言願えれば幸いです

編集 削除
瀬戸っぷ  2010-09-06 11:45:13  No: 71918  IP: [192.*.*.*]

>どうもリストコントロールのアイテムテキストで文字化けします。

リストコントロールへ追加する際のコードはどうなっています?

  std::string utf8;
  std::wstring unicode;
  char heart[] = {0xe2, 0x99, 0xa5, 0x00, 0x00, 0x00};

  utf8 = heart;
  unicode = ConvertMultiToWide(utf8);
  ::SetWindowText(GetDlgItem(hDlg, IDC_TEST), unicode.c_str());
  ListBox_AddString(GetDlgItem(hDlg, IDC_LIST1), unicode.c_str());

で、スタティックテキストにもリストボックスにもハートが設定されましたが…。

編集 削除
Blue  2010-09-06 11:54:22  No: 71919  IP: [192.*.*.*]

リンクしておきます。
http://okwave.jp/qa/q6162073.html

編集 削除
瀬戸っぷ  2010-09-06 22:36:25  No: 71920  IP: [192.*.*.*]

OKWaveとまるちっぽいことは判っていた上で回答していましたが…
見当違いだった上に放置されてしまいました…。

VC2008EE + ResEditだったので、ダイアログのフォントがなんだったかは…微妙ですが。

編集 削除
blueshield  2010-09-07 11:28:59  No: 71921  IP: [192.*.*.*]

放置などしたつもりはありませんのでご理解くださいw
ただ私の環境ではダイアログに設定したフォントによってエディットボックスとリストコントロールで挙動の違うフォントがあったので迷ってしまいました。
ご回答いただいた皆様ありがとうございました。

編集 削除