開発じたばた日誌

前へ●●●次へ
じたばた日誌目次へ戻る
TSUCHY Softへ戻る


Dialog Check ダイアログベース編

 フォントとダイアログの関係がわかったところで、私は変だなと思いました。私がこれまで作ってきたアプリの ダイアログは自宅のパソコンでうまく表示されるのに、会社でみると文字がはみ出たりします。ダイアログって そんなことならないようにうまくやってくれてるんじゃないの??

 ここでVBの罠が待ち受けていました。VBではダイアログもくそのないのです。CやC++でつくったウィンドウ は「普通のウィンドウ」「ダイアログ」の区別がなされ、ダイアログはフォントに応じて大きさが変化します。 ところがVBのウィンドウはそんな区別はなく、どのウィンドウも印刷に関係したTWIPSという単位で大きさを指定します。

 ここで私がDialogCheckでやりたいことを整理してみましょう。

1. いろいろな解像度のスクリーンの大きさを知ることができる
2. フォントを変えて、ダイアログの大きさがどのように変化するか知ることができる

 1.はわりと簡単です。TWIPSとPIXELの単位変換さえできればいいのです。でも2.は簡単ではありません。 2.ができるようになるにはいろいろなことがわからないとできません。

1.調査したいダイアログを知らなくてはいけない。
2.調査したいダイアログにどんなコントロール類(ボタンなど)があるかわからないといけない。
3.フォントとダイアログの関係を知らないといけない

1,2は前作WinArrangeで修得した技を使えばできることがわかっています。でも3はどうでしょう? フォントとダイアログに関係があることはわかりましたが、その関係を数式で表現できないとやりたいことができません。 いろいろな本を読みあさった結果、ダイアログというものはダイアログベースという単位でボタンの位置や大きさが定義 されています。この単位系ではどんなフォントを使おうと変化することはありません。

 もしあなたがC,C++で開発をしているなら「なんとか.rc」というファイルがあるはずです。これはテキストですから なかを見てみましょう。

PUSHBUTTON "ボタンだぁ",IDC_MYBUTTON,80,22,37,14

 こんなものがあるはずです。ここで並んでいる訳の分からない数値こそ、ダイアログベースでの位置、大きさなのです。 この数値に現在使われているフォントに依存する係数をかけるか割るかすればPIXELでの単位がでることがわかりました。 ふー、しんどかったぁ。