「管理者として実行」すれば文字化けしないが、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」セクションは作成される。
3.「BeginProperty Font」セクション
4.文字化けが解消された様子。

