VC6のSDIベースで作成した画面があり、そこでCListCtrlを使って
リストの一覧を表示するプログラムを作りました。
リストのヘッダーや中身の文言を動的に複数言語で切り替えるように作成し、
日本語や英語などは問題なく表示できました。
ところが中国語だけリストのヘッダー部分が文字化けしてしまい、
原因がわかりません。
リストのヘッダー部以外は、問題なく中国語が表示されます。
デバッグでCListCtrl::GetHeaderCtrl()を使ってヘッダー部の文言を確認したところ
期待する文字列が取得できます。
表示するとおかしくなるんです!
自分の頭もおかしくなりそうです。。。
どなたか対応策を思いつく方がいましたらご教授お願いいたします。
フォントは中国語フォントになっていますか?
中国語OSを使ってるので中国語フォントだと思います。
(表示する文言は中国語フォントでしか表示できない文字にしてます)
どうやら全角の日本語も同じように化けてました。
中国語OSのくせに漢字が表現できないなんて...
そもそも中国人だってVCで開発すると思いますが、
CListCtrl系は使わないんですかね?
>シャノンさん
すみません。
何か怪しいと思い、フォントを取得して調べたところ、
中国語OSでデバッグしてみたらフォント名がMS Pゴシックになってました。
これはVC++で作ったときのDialogのフォントと同じでした。
ただ、CHeaderCtrl、CListCtrl共々同じだったので、
表示に違いがでる理由にはならないと思います。
ためにしCHeaderCtrlのフォントをSimSunに変更したところ
若干表示が変わりましたが、化け方は同じでした。
> どうやら全角の日本語も同じように化けてました。
> 中国語OSのくせに漢字が表現できないなんて...
日本と中国では漢字の種類も形も違うので、日本の漢字が中国語フォントで表示できると
は限らないと思いますが。
> 中国語OSを使ってるので中国語フォントだと思います。
特にフォントを設定するようなコードは書いていないということですか?
最初から中国語 OS 上で中国語版 VisualStudio を用いて作っているのならばともかく、
日本語 OS 上で作ったソフトを中国語 OS 上で動かしたからといって、勝手に中国語フォ
ントにはならない気がしますが…そのへんどうなんでしょう?>識者の方
> そもそも中国人だってVCで開発すると思いますが、
> CListCtrl系は使わないんですかね?
そんなことはないと思います。
VC6 とのことですが、プロジェクトの文字コード設定はどうなってますかね?
多言語対応のソフトなら、Unicode に対応した作り方をしてないとだめかな。
# 多分ハズしてるでしょうが。m(__)m
> 日本語 OS 上で作ったソフトを中国語 OS 上で動かしたからといって、
> 勝手に中国語フォントにはならない気がしますが…そのへんどうなんでしょう?
User System FontをFalseにしているとリソースで指定したフォントが使用
されます。で、厄介なのが、MS ゴシック(10)となっていた場合でリソース
言語が英語になっていると文字化けが起こった記憶があります。
(システムフォントを使用する場合はやったことがないのでわかりません orz)
私の場合は、直接.rcファイル中でMS Gothicと直すことで正常に表示されました。
中国語での話は全く持ってわかりませんが、同じことが言えそうな気がします。
遅くなりましたが、結局何をやっても文字化けは解消されませんでした。
とりあえずMSに問い合わせることにします。。。
もしかして、これのことだったりして?
違ってたらごめん。
*.rcファイルを開いて、
以下の行を、
#include l.jpn\afxres.rc
以下のように直す。
#include l.chs\afxres.rc
あと、以下の修正もしておいた方が良さそう
#include "l.jpn\\afxres.rc"
↓
#include "l.chs\\afxres.rc"
直し終わったら、リビルド
以上
VC6であればリソースファイルを別のテキストエディタなどでフォントをMS Shell
Dlgへ変更、
実行環境PCのレジストリエディタでMS Shell Dlgのデータを検索し中国語フォントに
すると
どうなりますか?
MFCアプリケ-ションの作成で仮に中国語で作成する。
↓
依存のMFCアプリケ-ションのソ-スのリソ-スファイルを仮に作った
中国語のMFCアプリケ-ションと同じにする。
ではだめですか?
僕は英語版に変更するときはいつもそうしてます。
すみません。
現在中国OSが使えない状態でなかなかためせないんですが、、、
>bun様
変更してリソースをビルドするとエラーになってしまいました。
半角?の文字が認識できないようなエラーでした。
>てんてく様
MS Shell Dlgを調べてみました。
まだためしてませんが、中国語でも文字化けが防げそうな気はしますね!
ただ、実行環境PCのレジストリをいじるのはどういう意図でしょうか?
>ITO様
現状の環境だとMFCアプリケ-ションの作成は、日本語か英語かでしか作れませんでし
た...
あと、リソースファイルだけ入れ替えるということですか?
っていうことはリソースを中国語で作り直すってことですかね(泣)
皆様、色々とご意見ありがとうございました。
もう少しがんばってみようと思います!
> あと、リソースファイルだけ入れ替えるということですか?
> っていうことはリソースを中国語で作り直すってことですかね(泣)
作り直すのでなく、
・新規で中国語で作る。
・現状版と比較する。
です。
変更点は少ないです。
> あと、リソースファイルだけ入れ替えるということですか?
> っていうことはリソースを中国語で作り直すってことですかね(泣)
作り直すのでなく、
1新規で中国語で作る。
2現状版と比較する。
です。
変更点は少ないです。
なんか2回投稿してしまったみたいです。
>現状の環境だとMFCアプリケ-ションの作成は、日本語か英語かでしか作れませんでし
>た...
そうですか、VC6.0ってだめだたっけ?
僕も中国語は試してないですね。
ただ。.net2003は選択できますね。
>実行環境PCのレジストリをいじるのはどういう意図でしょうか?
自分もそうなのですが、開発環境日本語WinXPでも
実行環境が英語WinXPEmbeddedだったりして開発環境とOSはもちろん、PCが違う場合
に”システムフォント”が何であるかはわからないので
開発ベースでは実行環境に依存するシステムフォントを使用(MS Shell Dlg)し、
実行環境でどうにも上手く行かない際にそのシステムフォントを
レジストリにより任意に変更するようにしています。
ナゼシステムフォントかと言いますと、リソースエディタのフォントを無視して
勝手にシステムフォントを使用している場合があるようなのです
もっとも、自分は実行環境PCごと出荷してしまう製造業やってますので
>実行環境PCのレジストリをいじる
ことが出来るわけなのですが・・・動的に変更するという意図には
合わない方式かもしれません。
まぁ何かの参考になれば幸いです