• ベストアンサー

ダイアログボックスのサイズの違い

ResEditを使いwidthを306に設定してダイアログボックスを作成したのですが、プログラム中にGetWindowRect関数を使い、そのダイアログボックスの横幅を調べてみると542という値が返されました。どうしてこのような違いが出るのでしょうか? また、両方の数値を一致させるにはどうすればいいですか? --- 実行環境 --- Microsoft Visual C++ 2010 Express WIN32 ユニコードビルド C言語

質問者が選んだベストアンサー

  • ベストアンサー
  • hymat
  • ベストアンサー率58% (95/162)
回答No.1

この話でしょうかね? https://social.msdn.microsoft.com/Forums/vstudio/ja-JP/3ded9f7e-6b4b-491d-8aac-60b6ecb15d9a/mfc?forum=vcgeneralja GetWindowRectが返すサイズの単位はPixelですが、リソースエディタでの単位はdialogUnitなのです。解像度の異なるディスプレイで表示しても見た目のサイズが変わらないようになっている、ということです。なのでpixel単位でのサイズは変わることになります。 常にPixel単位で同じサイズに表示したい場合は、ダイアログボックスにはしないで、CreateWindow等で通常のウィンドウとして作ることになります。その場合はウィンドウのcallbackも(DlgProcではなく)WndProcとして自分で作る必要があります。

nazoda
質問者

お礼

回答ありがとうございました。 2つのサイズが同じであることを確認するにはPixelをdialogUnitに変換しなければいけないようですね。教えていただいたサイトを参考に調べてみます。

すると、全ての回答が全文表示されます。

関連するQ&A