05092024

Last update2016/05/28 14:38

Back 現在地: Home パートナー segger-tools ウィンドウマネージャ

ウィンドウマネージャ


ウィンドウマネージャ

ウィンドウマネージャは、簡単に作成、移動、サイズ変更、それ以外の任意のウィンドウ番号を操作するルーチンのセットを提供します。また、ディスプレイ上のウィンドウのレイヤーを管理することにより、そのウィンドウに影響を与える変更を表示するように、アプリケーションを警告することにより、下位レベルのサポートを提供しています。

用語の説明

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は、ウィンドウの(更新)再描画を管理する能力を失います。それは、混合することも可能であり、例えば、一部のウィンドウの使用コールバックとそうでないものを持っている。ウィンドウは、コールバックメカニズムを使用していない場合は、、あなたのアプリケーションは、その内容を更新する責任があります。