掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
A2Wを使えるようにするには? (ID:73721)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
納得できたのだろうか・・・とりあえず、以下のことを覚えておくといい。 MFC の世界において「文字」を表現するには歴史的事情により2方法ある。 A と名のつく表記方法は [ASCII + マルチバイト] 文字という表記方法。 W と名のつく表記方法は [UTF-16] という表記方法。 T と名のつく表記方法は、コンパイル時に上記 A または W のどちらかになるという表記方法。 A 表記は各地方固有の文字限定(日本語と中国語は同時に扱えない) W 表記は(制限はあるが)世界共通表記(日本語と中国語が同時に扱える) A2W という変換マクロは [ A 表記を W 表記に変換する ] 機能を持っている。 ところが CString は T 表記、つまり [ A 表記または W 表記のどちらか] なわけだ。 出てきたコンパイルエラーを意訳すると [ T 表記を A 表記に変換できません] ということ。 つまりどういうことかというと A2W は、変換元として A 表記が必要なのに 引数として CString を与えているから T 表記になっていて、 表示されたエラーは「変換できません」ということだ。 T は A または W なわけなので、 もし今 T=A であるなら A2W で変換できるはず(なのに今できていない) もし今 T=W であるなら A2W 自体が不要 ということで Blue 氏のコメントは [変換しなくていいんぢゃねーの?] と提案しているわけだ。 どう直すとよいかは方針次第というか・・・ 要するに T, W, A 表記が混ざっているのが悪いので 1. T 表記に統一する (wcsncpy でなく _tcsncpy を使う) 2. W 表記に統一する (CString を使わないか T2CW を使う) 3. A 表記に統一する (旧式なので非推奨) のどれか、ということになる。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.