日本語版WindowsXP用のMFCアプリ(ダイアログベース)を以前製作しました。
顧客から英語版のWindowsXPでも使用したいとの要望があり、フォントの設定等は変更し
たのですが、画面が切れてしまいます。
サイズはMoveWindowで800×600に固定しています。
日本語版の方では問題なく表示されるのですが、英語版の方ではコントロール類全般が
大きくなったような感じで右側と下側が切れてしまいます。
日本語版のVC6.0++で開発しているのですが、これのリソースではうまくいかないのでし
ょうか?
何か解決策がありましたら教えて頂けないでしょうか。
よろしくお願いします。
ダイアログ上のコントロールのサイズは、ダイアログ単位で記述されます。
ダイアログ単位とは、そのダイアログのフォントサイズを基準に決定される単位で、横
方向は文字幅の 1/4、縦方向は文字の高さの 1/8 が1単位となります。
そのため、ダイアログで使うフォントが違えば、コントロールのサイズが違ってきま
す。
800x600 というサイズは、日本語フォントを使ったときに、コントロールがちょうど良
く収まるサイズだと思います(800x600 というサイズが先にあって、それに合わせてコ
ントロールの寸法を決定したのかもしれませんね)。
フォントサイズを小さくすれば、画面内に収まるようにできると思いますが、日本語フ
ォントとぴったり同じにはならないかもしれません。
コントロールの大きさを固定して、それが収まるように画面サイズを変えてよいのであ
れば、MapDialogRect という関数が使えます。
残念ながら、ピクセル単位での大きさを固定し、そこから適切なダイアログ単位のサイ
ズを算出する関数はありません。
シャノンさん
おっしゃる通り、リソースエディタでのフォントがゴシックになっていたのが原因のよ
うでした。
これを英語版Windowsの標準的なフォントに変更したらすんなり上手くいきました。
リソースエディタでダイアログごとフォントを変更することがないので、うっかり忘れ
ていました。
難解な問題かと思っていましたが、スムーズに解決できて嬉しく思っています。
丁寧な回答ありがとうございました。