|
|
|
2-2-13. クライアントエリアのサイズについてクライアントエリアのサイズはいろいろな方法で設定できます。システムが自動的に設定することも、APIの操作によって決定することもあります。これらは、目的により使い分けてください。システムが自動的に設定 CreateWindow 関数には4つの位置とサイズに関するパラメータがあります。システムはウィンドウを作成する時にこれらのパラメータを使ってウィンドウのサイズを決定します。その時にクライアントエリアのサイズも決まります。ウィンドウがタイトルやメニューや枠を持つ時は、クライアントエリアは、これらの内側に設定されます。WM_CHILD スタイルの多くは、CreateWindow 関数で設定した範囲がそのままクライアントエリアになります。操作や関数で故意にサイズを変更する ウィンドウをリサイズした時には、ウィンドウはサイズが変ります。それに伴い、対象のウィンドウのクライアントは範囲が変ります。ただし操作でサイズを変更できるのは、いわゆるオーバラップウィンドウと呼ばれる、アプリケーションのトップのウィンドウだけです。MDI子ウィンドウやダイアログボックス等も可能です。しかし子ウィンドウと呼ばれる、WM_CHILD スタイルで作成したウィンドウは、自動的に範囲が変りません。ユーザがそれらのウィンドウを、MoveWindow すれば範囲が変ります。Windowsは、ウィンドウのサイズが変ると、その変ったウィンドウに、WM_SIZEのイベントが発生しますので、必要があれば、その子ウィンドウを、MoveWindow 関数をコールして範囲を変更します。 WM_NCCALCSIZE メッセージ Windowsは、MoveWindow 関数がコールされると、クライアントエリアの計算をします。その時に、WM_NCCALCSIZEイベントがその対象のウィンドウプロシージャに発生します。ユーザはこれを処理することで、任意の大きさに設定することができます。
|