英語版Windowsで画面が切れるのですが

[戻る]
タフガイ 2006/05/12(金) 18:10:22
日本語版WindowsXP用のMFCアプリ(ダイアログベース)を以前製作しました。
顧客から英語版のWindowsXPでも使用したいとの要望があり、フォントの設定等は変更し
たのですが、画面が切れてしまいます。

サイズはMoveWindowで800×600に固定しています。
日本語版の方では問題なく表示されるのですが、英語版の方ではコントロール類全般が
大きくなったような感じで右側と下側が切れてしまいます。

日本語版のVC6.0++で開発しているのですが、これのリソースではうまくいかないのでし
ょうか?
何か解決策がありましたら教えて頂けないでしょうか。
よろしくお願いします。

シャノン 2006/05/12(金) 18:34:42
ダイアログ上のコントロールのサイズは、ダイアログ単位で記述されます。
ダイアログ単位とは、そのダイアログのフォントサイズを基準に決定される単位で、横
方向は文字幅の 1/4、縦方向は文字の高さの 1/8 が1単位となります。
そのため、ダイアログで使うフォントが違えば、コントロールのサイズが違ってきま
す。
800x600 というサイズは、日本語フォントを使ったときに、コントロールがちょうど良
く収まるサイズだと思います(800x600 というサイズが先にあって、それに合わせてコ
ントロールの寸法を決定したのかもしれませんね)。
フォントサイズを小さくすれば、画面内に収まるようにできると思いますが、日本語フ
ォントとぴったり同じにはならないかもしれません。
コントロールの大きさを固定して、それが収まるように画面サイズを変えてよいのであ
れば、MapDialogRect という関数が使えます。
残念ながら、ピクセル単位での大きさを固定し、そこから適切なダイアログ単位のサイ
ズを算出する関数はありません。

タフガイ 2006/05/12(金) 19:25:19
[[解決]]
シャノンさん

おっしゃる通り、リソースエディタでのフォントがゴシックになっていたのが原因のよ
うでした。
これを英語版Windowsの標準的なフォントに変更したらすんなり上手くいきました。
リソースエディタでダイアログごとフォントを変更することがないので、うっかり忘れ
ていました。

難解な問題かと思っていましたが、スムーズに解決できて嬉しく思っています。

丁寧な回答ありがとうございました。

古いスレッドには追加発言できません。