- 締切済み
OSに依存せず、適切なウィンドウサイズで表示するには
質問させて頂きます Vista(Aero有効)で開発を行っているアプリがあります アプリにはステータスバーを表示しており、そのアプリをXPで動かすと ウィンドウサイズが異なるのか、クライアント領域とステータスバーの境目が若干黒くなります 色々と検証した結果、Vistaではステータスバーの下に表示されるボーダーが XP(クラシック)では表示されないため、その分のボーダーサイズ(高さ4)が余計なサイズとして ウィンドウを表示していたのが原因のようです ウィンドウを表示する際、AdjustWindowRectで適切なサイズを取得しているにも関わらず このような自体が発生しました 本来なら、AdjustWindowRectでVista/XPのボーダーサイズは考慮されるのでは無いでしょうか? AdjustWindowRectには、WS_SYSMENU | WS_CAPTIONを渡しています(実際はGetWindowLongでGWL_STYLEを渡してます) GetSystemMetricsで、ボーダーサイズを引いても、XPではまだ余計なサイズが指定されます このような場合、OSによって内部で切り替えて、XPなら高さ-4等とするべきでしょうか? なるべく、どの環境でも問題なく表示させたいと思っております スマートな解決方法等ありましたら、どうぞご教授の程よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- php504
- ベストアンサー率42% (926/2160)
クライアント領域の高さを同じにしたらステータスバーの高さの違いだけ残りの部分の高さが違うということでしょうか GetWindowRect(hSBWnd, &bar); //hSBWnd ステータスバーのウィンドウハンドル、bar RECT構造体 でステータスバーの高さを取得してクライアント領域の高さを決めたらどうでしょう
- php504
- ベストアンサー率42% (926/2160)
クライアント領域とステータスバーの境目と書かれていますがそもそもステータスバーはクライアント領域に表示されるので境目とかはないのでは
- chie65536(@chie65535)
- ベストアンサー率44% (8757/19871)