2007年12月22日

既存アプリのVista対応・改造計画:追加「文字化けの解消」

VB6で作った自作ソフトがVistaで動作上は何の問題もないが、フォントの一部が文字化けしてしまうのに気がついた。運用環境だけでなく、VB6の開発環境でさえそうなる。

「管理者として実行」すれば文字化けしないが、UACダイアログが起動時に毎回表示されるのは煩わしい限りだ。
いろいろ試行錯誤してみると、フォントを標準(規定)の「MS Pゴシック」から「MS ゴシック」にすると文字化けしなくなるのに気が付いた。文字化けしたコントロールを一つ一つ「MS ゴシック」に変更したところ文字化けは解消された。

これが原因かと考えてみるがフォントファイルは「MS Pゴシック」も「MS ゴシック」も一つのファイルでそれ自体に差異があるとは考えられない。また、この調子ですべてのソースを変更するのも面倒だ。

一体何が原因なのか。散々調べ上げた挙句ようやくわかった。

結論はこうだ。
コントロールのフォント指定でCharset=128が無いと文字化けするということだ。
規定の「MS Pゴシック」から「MS ゴシック」に変更すると自動的にCharsetを含む「BeginProperty Font」セクションが追加される。
フォームのソースファイル(.frm)を見るとわかるが、規定フォントの場合この「BeginProperty Font」セクション自体が無い。

つまりコンテナであるフォームのフォントを継承していると考えられる。であればコントロールを一つ一つ変更しなくてもフォームのフォントにCharset=128を追加することで文字化けが解消できるのではと考えたところ大正解。いっぺんに文字化けは解消した。


1.文字化けしている様子。
文字化けしている

2.フォームのフォント指定ダイアログを表示して「OK」するだけで「BeginProperty Font」セクションは作成される。
Fontの強制指定

3.「BeginProperty Font」セクション
フォームのソース内容

4.文字化けが解消された様子。
文字化けが直った


posted by なっちゃん at 11:58| 静岡 ☀| Comment(0) | TrackBack(0) | Windows Vista & 7 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。