正確なクライアント領域のサイズを確保する

最終更新 2003 12/17

サンプルのダウンロード → Exp_SetWindowSize.lzh(38k)

サンプルプログラムのスクリーンショット

サンプルソースコード



GetClientRect 関数
GetWindowRect 関数
SetWindowPos 関数

    対応しているバージョン
    95, 98, Me, NT3.1以降, CE1.0以降, 2000, XP
    
    使用するヘッダとライブラリ
    winuser.h
    user32.lib
CreateWindow() 関数でウィンドウを作成するとき、作成するウィンドウの 横幅と高さを指定しますが、ここで指定するのはあくまでウィンドウの サイズです。 ですから、クライアント領域のサイズはウィンドウのタイトルバーや メニューがある場合はメニュー欄、ウィンドウに枠を付けている場合は ウィンドウの枠のサイズ分、小さくなってしまいます。 ポップアップウィンドウの場合はタイトルバーやウィンドウの枠は一切 つきませんから問題はありません。 例えばゲームを作る場合、ゲーム画面を640×480の大きさに しようとしても、タイトルバーやメニューがついたウィンドウを 640×480で作った場合、実際にゲームが表示されるクライアント領域の サイズは640×480分は確保されません。 そこで、正確なクライアント領域のサイズを確保する必要があります。 640×480のクライアント領域を確保したい場合、とりあえず CreateWindow() 関数の横幅と高さに640と480を指定して ウィンドウを作ってしまいます。 その後、ウィンドウのクライアント領域の外側のサイズを計算して 640と480に足した大きさで、ウィンドウのサイズを変更して あげれば、正確なクライアント領域を確保できます。 ウィンドウのサイズを変更するには SetWindowPos() 関数を使います。 細かい所はサンプルソースをご覧下さい。

| home |