ウィンドウマネージャ
ウィンドウマネージャ
ウィンドウマネージャは、簡単に作成、移動、サイズ変更、それ以外の任意のウィンドウ番号を操作するルーチンのセットを提供します。また、ディスプレイ上のウィンドウのレイヤーを管理することにより、そのウィンドウに影響を与える変更を表示するように、アプリケーションを警告することにより、下位レベルのサポートを提供しています。
用語の説明
Windowsはその起源で定義されている(左上隅のx座標とy座標)だけでなく、形状が矩形であり、そのX -とY -のサイズ(それぞれ幅と高さ)。emWinのウィンドウ:
- 長方形です。
- Z -ポジションを持っています。
- 非表示になったり隠れたりすることができます。
- 有効なおよび/または無効領域を持つことができます。
- 可能性があります。または透明度を持っていない可能性があります。
- 可能性があります。またはコールバックルーチンを持っていない可能性があります。
アクティブウィンドウ
現在の描画操作に使用されているウィンドウがアクティブウィンドウと呼ばれます。それは、必ずしも最上位のウィンドウと同じではありません。
コールバックルーチン
コールバックルーチンは、特定のイベントが発生したときに特定の関数を呼び出すためのグラフィックシステムを指示し、ユーザプログラムによって定義されます。通常、彼らは、その内容が変更されたときに自動的にウィンドウを再描画するために使用されます。
子/親ウィンドウの、兄弟
子ウィンドウは親と呼ばれる、別のウィンドウに対して相対的に定義されているものです。いつでも親ウィンドウの移動、その子や子供たちがそれに応じて移動する。子ウィンドウは、常に完全にその親の中に含まれており、必要に応じてクリップされます。同じ親を持つ複数の子ウィンドウは、お互いに"兄弟"とみなされます。
クライアントエリア
ウィンドウのクライアント領域は、単にその使用可能な領域です。ウィンドウの枠やタイトルバーが含まれている場合、クライアント領域は、長方形の内側の領域です。そのようなフレームが存在しない場合は、クライアント領域の座標は、ウィンドウ自体のものと同じです。
クリッピング、クリップ領域
クリッピングは、ウィンドウまたはその一部に出力を制限するプロセスです。ウィンドウのクリップ領域は、その表示領域です。これはウィンドウの領域を引いたの高いZオーダーの兄弟によって閉塞部位、マイナス親ウィンドウの表示領域に収まらない場合、任意の部分です。
デスクトップのウィンドウ
デスクトップウィンドウは自動的にウィンドウマネージャによって作成され、常に表示領域全体をカバーしています。それは、常に一番下のウィンドウであり、他のウィンドウが定義されていないとき、それはデフォルトの(アクティブな)ウィンドウです。すべてのウィンドウはデスクトップウィンドウの子孫(子、孫など)である。
処理
新しいウィンドウが作成されると、WMは、一意の識別子のハンドルと呼ばれるが割り当てられます。ハンドルは、その特定のウィンドウに対して実行される、さらに操作で使用されます。
ウィンドウを隠す/表示
それはまだ(ハンドルを持っている)が存在するものの、非表示のウィンドウが表示されていない。createフラグが指定されていない場合、ウィンドウが作成されると、それはデフォルトで非表示になっています。ウィンドウを表示すると、それが見えるように、それを非表示にする上で不可視に。
透明性
透明性を持っているウィンドウは、ウィンドウの残りの部分を使用して再描画されていない領域が含まれています。これらの領域は、それらの"透け"の背後にあるウィンドウと同じように動作します。この場合、それは背後にあるウィンドウは透明度を持つウィンドウの前に再描画されることが重要です。WMは、自動的に正しい順序でredrawal処理します。
検証/無効化
検証/無効化
Z -ポジション、ボトム/トップ
バックグラウンドから、その配置を決定するバーチャル三次元の位置 - ウィンドウがXとYの点で二次元の画面上に表示されていますが、WMはまた、Z位置、または深さの座標として知られているものを管理する前景。Windowsは、それゆえの上に、または1つ別の下に表示されることがあります。一番下にウィンドウを設定すると、その兄弟ウィンドウのすべての(もしあれば)"下"に配置されます。上部に設定すると、その兄弟の"上"に配置されます。createフラグが指定されていない場合、ウィンドウが作成されると、それはデフォルトで一番上に設定されています。
APIリファレンス:WM
次の表は、emWinウィンドウマネージャAPIの使用可能なルーチンを示します。すべての関数はそれぞれのカテゴリー内でアルファベット順に表示されます。
ルーチン | 説明 |
---|---|
基本的な機能 | |
WM_Activate | ウィンドウマネージャをアクティブに |
WM_AttachWindow | 新しい親ウィンドウへのウィンドウを添付 |
WM_AttachWindowAt | 指定した位置に新しい親ウィンドウへのウィンドウを添付 |
WM_BroadcastMessage | すべての既存のウィンドウにメッセージを送信します |
WM_BringToBottom | その兄弟の後ろにウィンドウを配置 |
WM_BringToTop | その兄弟の前面にウィンドウを配置 |
WM_ClrHasTrans | 持っている透明度フラグをクリア |
WM_CreateWindow | ウィンドウを作成します |
WM_CreateWindowAsChild | 子ウィンドウを作成します。 |
WM_Deactivate | ウィンドウマネージャを非アクティブ化 |
WM_DefaultProc | メッセージを処理するために、デフォルトのルーチン |
WM_DeleteWindow | を削除ウィンドウ |
WM_DetachWindow | 親ウィンドウからウィンドウを切り離します |
WM_DisableWindow | ウィジェットの状態がdisabledに設定します。 |
WM_EnableWindow | 対応するウィンドウの状態を設定します(デフォルト) |
WM_Exec | 実行中のコールバック(すべてのジョブ)で再描画が無効の窓 |
WM_Exec1 | 再描画1つのコールバックを実行することにより、いずれかに無効なウィンドウ(1つのジョブのみ) |
WM_ForEachDesc | ウィンドウのすべての子孫反復処理 |
WM_GetActiveWindow | 戻り値は、アクティブなウィンドウのハンドル |
WM_GetCallback | ウィンドウのコールバック関数へのポインタを返します。 |
WM_GetClientRect | アクティブなウィンドウのサイズを返します。 |
WM_GetClientRectEx | ウィンドウのサイズを返します。 |
WM_GetDesktopWindow | デスクトップウィンドウのウィンドウハンドルを返します。 |
WM_GetDesktopWindowEx | 指定されたデスクトップのウィンドウのウィンドウハンドルを返します。 |
WM_GetDialogItem | ダイアログボックスの項目(ウィジェット)のウィンドウハンドルを返します。 |
WM_GetFirstChild | 戻り値は、ウィンドウの™sの最初の子ウィンドウのハンドル |
WM_GetFocussedWindow | 入力フォーカスを持つウィンドウのハンドルを返します。 |
WM_GetHasTrans | 戻り値現在の値は、透明度フラグを持っています |
WM_GetInvalidRect | 与えられたウィンドウの無効な矩形を返します。 |
WM_GetNextSibling | ウィンドウの™sの次の兄弟のハンドルを返します。 |
WM_GetOrgX | アクティブウィンドウのXで原点を返します。 |
WM_GetOrgY | アクティブウィンドウのYの原点を返します |
WM_GetParent | 戻り値は、ウィンドウの™sの親ウィンドウのハンドル |
WM_GetPrevSibling | ウィンドウの™sの前の兄弟のハンドルを返します。 |
WM_GetStayOnTop | トップフラグに滞在の現在の値を返します。 |
WM_GetUserData | ウィンドウのユーザデータを取得 |
WM_GetWindowOrgX | ウィンドウのXで原点を返します。 |
WM_GetWindowOrgY | ウィンドウのYの原点を返します |
WM_GetWindowRect | アクティブウィンドウの画面座標を返します。 |
WM_GetWindowRectEx | ウィンドウの画面座標を返します。 |
WM_GetWindowSizeX | ウィンドウの水平サイズ(幅)を返します。 |
WM_GetWindowSizeY | ウィンドウの縦サイズ(高さ)を返します。 |
WM_HasCaptured | 指定されたウィンドウかどうかを調べますマウスとタッチスクリーン入力をキャプチャしている |
WM_HasFocus | 指定されたウィンドウかどうかを調べます入力フォーカスを持っています |
WM_HideWindow | ウィンドウが非表示になります |
WM_InvalidateArea | ディスプレイの特定のセクションを無効化 |
WM_InvalidateRect | ウィンドウの一部を無効化 |
WM_InvalidateWindow | ウィンドウを無効に |
WM_IsCompletelyCovered | ウィンドウが完全にカバーされているかどうかをチェックします |
WM_IsCompletelyVisible | ウィンドウかどうかを調べます完全に表示されているか |
WM_IsEnabled | ウィンドウが有効になっている場合を返すかどうか |
WM_IsVisible | 戻り値ウィンドウが表示されているかどう |
WM_IsWindow | 指定されたハンドルが有効なウィンドウハンドルであるかどうかを検査する |
WM_MakeModal | ™モーダル™ウィンドウへの変更ウィンドウ |
WM_MoveChildTo | ウィンドウ座標でのウィンドウの位置を設定します |
WM_MoveTo | デスクトップ座標でウィンドウの位置を設定します |
WM_MoveWindow | 別の位置にウィンドウを移動します |
WM_NotifyParent | WM_NOTIFY_PARENTメッセージは、指定されたウィンドウの親に送信します。 |
WM_PAINT | すぐにウィンドウを描画または再描画します |
WM_PaintWindowAndDescs | 直ちに指定されたウィンドウとすべての子孫のウィンドウを描画します |
WM_ReleaseCapture | マウスとタッチスクリーン入力をキャプチャを停止します |
WM_ResizeWindow | 変更のウィンドウサイズ |
WM_SelectWindow | アクティブウィンドウは、描画操作に使用する設定します。 |
WM_SendMessage | ウィンドウにメッセージを送信します |
WM_SendMessageNoPara | ウィンドウにパラメータを指定せずにメッセージを送信 |
WM_SendToParent | 与えられたメッセージは、指定されたウィンドウの親ウィンドウに送信します。 |
WM_SetDesktopColor | デスクトップのウィンドウの色を設定します。 |
WM_SetDesktopColorEx | 特定のデスクトップのデスクトップのウィンドウの色を設定します。 |
WM_SetCallback | ウィンドウのコールバックルーチンを設定します。 |
WM_SetCapture | マウスとタッチスクリーン入力のキャプチャを開始します。 |
WM_SetCreateFlags | 新しいウィンドウを作成するときにデフォルトとして使用するフラグを設定します。 |
WM_SETFOCUS | 指定されたウィンドウに入力フォーカスを設定します。 |
WM_SetHasTrans | 持っている透明度フラグを設定します。 |
WM_SetId | WM_SET_IDメッセージは、指定されたウィンドウに送信します。 |
WM_SetpfPollPID | PIDポーリングのためにWMで呼び出される関数を設定します。 |
WM_SetSize | ウィンドウの新しいサイズを設定します。 |
WM_SetWindowPos | ウィンドウのサイズと位置を設定します。 |
WM_SetXSize | ウィンドウの新しいX -サイズを設定します。 |
WM_SetYSize | ウィンドウの新しいYサイズを設定します。 |
WM_SetStayOnTop | トップフラグにご滞在を設定します。 |
WM_SetTransState | WM_CF_HASTRANSとWM_CF_CONST_OUTLINEフラグを設定またはクリアします |
WM_SetUserClipRect | クリッピング領域を一時的に減らす |
WM_SetUserData | 与えられたウィンドウのユーザデータを設定します。 |
WM_SHOWWINDOW | ウィンドウが表示されるようになります |
WM_Update | 与えられたウィンドウの無効な部分を描画します |
WM_UpdateWindowAndDescs | 与えられたウィンドウの無効な部分とすべての子孫ウィンドウの無効な部分を描画します |
WM_ValidateRect | ウィンドウの部分を検証 |
WM_ValidateWindow | ウィンドウを検証 |
メモリデバイスのサポート(オプション) | |
WM_DisableMemdev | 再描画のためのメモリデバイスの無効にします。使い方 |
WM_EnableMemdev | 再描画のためにメモリデバイスの使用が可能 |
関連時間 | |
WM_CreateTimer | ウィンドウにWM_TIMERメッセージを送信するタイマーを作成します。 |
WM_DeleteTimer | 削除しますタイマー |
WM_RestartTimer | タイマーを再起動 |
ウィジェット関連機能 | |
WM_GetClientWindow | クライアントウィンドウのハンドルを返します。 |
WM_GetId | ウィジェットのIDを返します。 |
WM_GetInsideRect | アクティブなウィンドウの少ない境界のサイズを返します。 |
WM_GetInsideRectEx | 国境は、以下のウィンドウのサイズを返します。 |
WM_GetScrollPosH | ウィンドウの水平スクロールバーのスクロール位置を返します。 |
WM_GetScrollPosV | ウィンドウの垂直スクロールバーのスクロール位置を返します。 |
WM_GetScrollState | スクロールバーウィジェットの状態を取得します。 |
WM_SetScrollPosH | ウィンドウの水平スクロールバーのスクロール位置を設定します。 |
WM_SetScrollPosV | ウィンドウの垂直スクロールバーのスクロール位置を設定します。 |
WM_SetScrollState | スクロールバーウィジェットの状態を設定します。 |
ウィンドウマネージャのコールバックメカニズム
WMは、コールバックルーチンの有無に関係なく使用することができます。ほとんどの場合、コールバックを使用することが望ましい。
コールバックのメカニズムの背後にある哲学
emWinはウィンドウとウィンドウオブジェクト(ウィジェット)のために提供するコールバックメカニズムの背後にある考え方は、イベント駆動型システムのことです。ほとんどのウィンドウシステムのように、原則は、制御の流れは、グラフィックシステムへのユーザプログラムからだけではないことですが、また、ユーザプログラムからグラフィックシステムへと提供されるコールバックルーチンによって、ユーザプログラムへのバックアップユーザプログラムによる。このメカニズム - 多くの場合、ハリウッドの原則として特徴付けられるが("私たちを呼び出さないでください、私たちがあなたを呼ぶ!") - 主にウィンドウの再描画をトリガするために、ウィンドウマネージャによって必要とされる。これは古典的なプログラミングとは対照的であるが、それはウィンドウマネージャの無効化ロジックを活用することが可能になります。
コールバックを使用していない
あなたは、コールバックルーチンを使用する必要はありませんが、そうすることで、WMは、ウィンドウの(更新)再描画を管理する能力を失います。それは、混合することも可能であり、例えば、一部のウィンドウの使用コールバックとそうでないものを持っている。ウィンドウは、コールバックメカニズムを使用していない場合は、、あなたのアプリケーションは、その内容を更新する責任があります。