ウィンドウの管理
Note
この設計ガイドは Windows 7 用に作成されており、新しいバージョンの Windows では更新されていません。 ガイダンスの多くは原則として適用されますが、プレゼンテーションと例には 現在の設計ガイダンスは反映されていません。
この記事では、最初に画面に表示されたときのウィンドウの既定の配置、他のウィンドウに対する重ね合わせ順序 (Z オーダー)、初期サイズ、および表示が入力フォーカスにどのように影響するかを説明します。
次のガイドラインに従います。
- 最上位のウィンドウには所有者ウィンドウがなく、タスク バーに表示されます。 例: アプリケーション ウィンドウ。 Windows Vista 以降では、所有者ウィンドウとプロパティ シートのないダイアログ ボックスも最上位レベルと見なされます。
- 所有ウィンドウには所有者ウィンドウがあり、タスク バーには表示されません。 例: モーダル ダイアログ ボックス、モードレス ダイアログ ボックス。
- ユーザーが開始したウィンドウは、ユーザーのアクションの直接の結果として表示されます。 それ以外の場合は、プログラムによって開始された場合はプログラムが開始され、Microsoft Windows によって開始された場合はシステムが開始されます。 たとえば、[オプション] ダイアログ ボックスはユーザーによって開始されますが、会議のリマインダーはプログラムによって開始されます。
- コンテキスト ウィンドウは、起動元のオブジェクトと強い関係を持つユーザーが開始したウィンドウです。 たとえば、コンテキスト メニューや通知領域アイコンで表示されるウィンドウはコンテキストに依存しますが、メニュー バーによって表示されるウィンドウはコンテキストではありません。
- アクティブ・モニターは、アクティブ・プログラムが実行されているモニターです。
- 既定のモニターは、[スタート] メニュー、タスク バー、通知領域があるモニターです。
設計概念
ウィンドウ管理は、最も基本的なユーザー アクティビティの 1 つです。 Windows Vista より前では、ウィンドウの既定のサイズが小さく、画面の中央に配置されることがよくあります。 このアプローチは、古い単一の低解像度のモニターには適していますが、最新のビデオ ハードウェアには適していません。
Windows は最新のビデオ ハードウェアをサポートするように設計されており、多くの場合、サポートされている最小画面解像度よりも大幅に高い解像度で実行され、複数のモニターを持つことができます。 そのために、次のことを行います。
- ユーザーが高度なハードウェアから完全にメリットを得ることができます。
- ユーザーがマウスを遠くへ移動するのに必要な労力が少なくて済みます。
- ウィンドウの配置が予測しやすくなり、見つけやすくなります。
サポートされている最小画面解像度
Windows でサポートされている最小 有効画面解像度 は 800 x 600 ピクセルです。 つまり、固定サイズのウィンドウは (タスク バーの領域を予約しながら) 最小解像度で完全に表示されますが、サイズ変更可能なウィンドウは、最小解像度で機能する限り、1024 x 768 ピクセルの有効解像度に最適化できます。
現在、Windows PC の最も一般的な物理画面解像度は 1024 x 768 ピクセル以上ですが、800 x 600 ピクセルをターゲットにすると、Windows では次のことができます。
- 小さなノートブック PC を含むすべての最新のハードウェアで適切に動作します。
- 高 dpi (1 インチあたりのドット数) 設定をサポートします。
- アクセシビリティのために大きなフォントをサポートします。
- グローバルベースで使用されるハードウェアをサポートします。
サポートする最小解像度を選択するには、適切なバランスを取る必要があります。 解像度を高くすると、最新のハードウェアのかなりの割合で最適でないエクスペリエンスが得られますが、解像度を低く設定すると、デザイナーは使用可能な画面領域を最大限に活用できなくなります。
ターゲット ユーザーが Windows の最小解像度よりも大幅に高い解像度を使用していると思われる場合は、適切にスケーリングできるサイズ変更可能なウィンドウを使用して、余分な画面領域を最大限に活用するようにプログラムを設計できます。
ガイドライン
全般
- 800 x 600 ピクセルの Windows の最小有効解像度をサポートします。 セーフ モードで動作する必要がある重要なユーザー インターフェイス (UI) の場合は、640 x 480 ピクセルの有効解像度をサポートします。 タスク バーに表示されるウィンドウに対して 48 の垂直 相対ピクセル を予約することで、タスク バーで使用される領域を考慮してください。
- サイズ変更可能なウィンドウ レイアウトを最適化して、1024 x 768 ピクセルの有効解像度を実現します。 これらのウィンドウのサイズを自動的に変更して、画面の解像度を低くして、引き続き機能します。
- 800x600 ピクセルで 96 dpi (100%)、1024 x 768 ピクセルで 120 dpi (125%) 、1200 x 900 ピクセルで 144 dpi (150%) で Windows をテストしてください。 コントロール、テキスト、ウィンドウのクリッピング、アイコンとビットマップのストレッチなど、レイアウトの問題を確認します。
- タッチとモバイルの使用シナリオを使用するプログラムの場合は、120 dpi に最適化します。 高 dpi 画面は現在、タッチ PC とモバイル PC で一般的です。
-
サイズ変更可能なウィンドウでは、右下隅にサイズ変更グリフを表示する必要がなくなりました 。理由は次のとおりです。
- 右下隅だけでなく、ウィンドウのすべての辺と端のサイズを変更できます。
- グリフを表示するにはステータス バーが必要ですが、サイズ変更可能なウィンドウの多くはステータス バーを提供しません。
- サイズ変更可能なウィンドウの境界線とサイズ変更ポインターは、サイズ変更グリフよりもウィンドウのサイズ変更が可能であることを伝えるのに効果的です。
タイトル バー コントロール
タイトル バー コントロールは次のように使用します。
- 惜しいです。 標準のウィンドウ フレームを含むすべてのプライマリ ウィンドウとセカンダリ ウィンドウには、タイトル バーに [閉じる] ボタンが表示されている必要があります。 [閉じる] をクリックすると、ウィンドウをキャンセルまたは閉じる効果があります。
この例では、ダイアログ ボックスのタイトル バーに [閉じる] ボタンがありません。
- 最小化。 すべてのプライマリ ウィンドウと実行時間の長いモードレスセカンダリ ウィンドウ (進行状況ダイアログなど) には、[最小化] ボタンが必要です。 [最小化] をクリックすると、ウィンドウがタスク バー ボタンに縮小されます。 そのため、最小化できるウィンドウにはタイトル バー アイコンが必要です。
- 最大化/復元をダウンします。 すべてのサイズ変更可能なウィンドウには、[最大化/復元] ボタンが表示されます。 [最大化] をクリックすると、ウィンドウは最大サイズで表示され、ほとんどのウィンドウでは全画面表示になります。[復元] をクリックすると、ウィンドウが以前のサイズで表示されます。 ただし、一部のウィンドウでは全画面表示を使用してもメリットがないため、これらのウィンドウは最大の便利なサイズに最大化する必要があります。
ウィンドウ サイズ
- 内容に適した既定のウィンドウ サイズを選択します。 スペースを効果的に使用できる場合は、より大きな初期ウィンドウ サイズを使用することを恐れないでください。
- スクロール バーや切り捨てられたデータを避けるために、実用的な場合は常にサイズ変更可能なウィンドウを使用します。 動的なコンテンツとリストを含む Windows は、サイズ変更可能なウィンドウを最大限に活用できます。
- テキスト ドキュメントの場合は、テキストを読みやすくするために、最大 65 文字の行長を考慮 してください。 (文字には、文字、句読点、スペースが含まれます)。
- 固定サイズのウィンドウ:
- 作業領域内に収まるように、完全に表示され、サイズが設定されている必要があります。
- サイズ変更可能なウィンドウ:
- より高い解像度に最適化できますが、ディスプレイ時に必要に応じて実際の画面解像度に合わせてサイズを縮小できます。
- ウィンドウ サイズを徐々に大きくするには、徐々に詳細情報を表示する必要があります。 少なくとも 1 つのウィンドウ部分またはコントロールにサイズ変更可能なコンテンツがあることを確認します。
- 最大化または最大化に近い既定の復元サイズは避ける必要があります。 代わりに、通常は全画面表示なしで最も便利な既定のサイズを選択します。 ユーザーがウィンドウのサイズを変更するのではなく、ウィンドウを最大化して全画面表示にするとします。
- コンテンツが使用できなくなったサイズを下回っている場合は、最小ウィンドウ サイズを設定する必要があります。 サイズ変更可能なコントロールの場合は、サイズ変更可能な要素の最小サイズを、リスト ビューの最小機能列の幅など、最小の機能サイズに設定します。
- 小さなサイズでコンテンツを使用できるようにする場合は、プレゼンテーションを変更する必要があります。
この例では、Windows メディア プレーヤーは、ウィンドウが標準形式に対して小さくなりすぎると、その形式を変更します。
ウィンドウの位置
次のガイドラインでは、"中央揃え" とは、真ん中に配置するのではなく、モニターの上部に垂直方向の配置を少しだけ偏って配置することを意味します。 モニター/所有者の上部とウィンドウの上部の間にスペースの 45% を配置し、モニター/所有者の下部とウィンドウの下部の間に 55% を配置します。 これは、目が画面の上部に自然に偏っているためです。
「中央揃え」とは、垂直方向の配置をモニターの上部にわずかにバイアスすることを意味します。
ウィンドウがコンテキストの場合は、起動元のオブジェクトの近くに常にウィンドウを表示します。 ソース オブジェクトがウィンドウで覆われないように、邪魔になりません。
- マウスを使用して表示する場合は、可能な場合は、右と下にオフセットします。
起動元のオブジェクトの近くにコンテキスト ウィンドウを表示します。
通知領域から起動された Windows アイコンは、通知領域の近くに表示されます。
ペンを使用して表示する場合は、可能な場合は、ユーザーの手で覆われないように配置します。 右利きのユーザーの場合は、左側に表示します。それ以外の場合は、右側に表示されます。
ペンを使用する場合は、ユーザーの手でカバーされないようにコンテキスト ウィンドウも表示します。
開発者:GetMessageExtraInfo API を使用して、マウス イベントとペン イベントを区別できます。 systemParametersInfo API with SPI_GETMENUDROPALIGNMENTを使用して、ユーザーの利き手を確認できます。
進行状況ダイアログをアクティブなモニターの右下隅に配置します。
右下隅に進行状況ダイアログを配置します。
ウィンドウが現在のコンテキストまたはユーザー アクションに関連していない場合は、現在のポインターの場所から離します。 これにより、誤った対話を防ぐことができます。
ウィンドウが最上位レベルのアプリケーションまたはドキュメントの場合は、常にモニターの左上隅から原点をカスケードします。 アクティブ・プログラムによって作成された場合は、アクティブ・モニターを使用します。それ以外の場合は、既定のモニターを使用します。
モニターの左上隅から最上位レベルのアプリケーションウィンドウまたはドキュメント ウィンドウをカスケード表示します。
ウィンドウがトップレベル ユーティリティの場合は、常にモニターに "中央揃え" で表示します。 アクティブ・プログラムによって作成された場合は、アクティブ・モニターを使用します。それ以外の場合は、既定のモニターを使用します。
最上位レベルのユーティリティ ウィンドウを中央に配置します。
ウィンドウが所有ウィンドウの場合は、最初に所有者ウィンドウの上に "中央揃え" で表示します。 後続の表示では、それがより便利である可能性が高い場合は、最後の場所 (所有者ウィンドウに対する相対位置) に表示することを検討してください。
最初は、所有しているウィンドウを所有者ウィンドウの上に中央揃えします。
モードレス ダイアログの場合は、常に最初に所有者ウィンドウの上に表示して、見つけやすくします。 ただし、ユーザーが所有者ウィンドウをアクティブ化すると、モードレス ダイアログが隠される可能性があります。
モードレス ダイアログを最初に所有者ウィンドウの上部に表示して、見つけやすくします。
必要に応じて、ターゲット モニター内でウィンドウ全体が表示されるように、最初の場所を調整します。 サイズ変更可能なウィンドウがターゲット モニターよりも大きい場合は、サイズを小さくします。
ウィンドウの順序 (Z オーダー)
- 所有者ウィンドウの上に、所有しているウィンドウを常に配置します。 所有者ウィンドウの下に所有されているウィンドウを配置しないでください。ほとんどの場合、ユーザーには表示されません。
- ユーザーの Z オーダーの選択を尊重します。 ユーザーがウィンドウを選択すると、プログラムのそのインスタンスに関連付けられているウィンドウ (ウィンドウと所有者または所有ウィンドウ) のみが Z オーダーの先頭に表示されます。 同じプログラムの独立したインスタンスなど、他のウィンドウの順序を変更しないでください。
ウィンドウのアクティブ化
- ユーザーのウィンドウの状態の選択を尊重します。 既存のウィンドウに注意が必要な場合は、タスク バー ボタンを 3 回フラッシュして注意を引き、強調表示したままにしますが、それ以外の操作は行わないでください。 ウィンドウを復元またはアクティブ化しないでください。 サウンド エフェクトは使用しないでください。 代わりに、ユーザーが準備ができたらウィンドウをアクティブにします。
- 例外: タスク バーにウィンドウが表示されない場合は、他のすべてのウィンドウの上部に移動し、代わりにタイトル バーをフラッシュします。
- プライマリ ウィンドウを復元すると、それらのセカンダリ ウィンドウに独自のタスク バー ボタンがある場合でも、すべてのセカンダリ ウィンドウを復元する必要があります。 復元するときは、プライマリ ウィンドウの上にセカンダリ ウィンドウを配置します。
入力フォーカス
-
ユーザーが開始したアクションによって表示される Windows は、ウィンドウが (5 秒以内に) すぐにレンダリングされる場合にのみ、入力フォーカスを取得する必要があります 。 ウィンドウがレンダリングされると、入力フォーカスを 1 回受け取ることができます。
- ウィンドウのレンダリング速度が遅い場合 (5 秒を超える場合)、ユーザーは待機中に別のタスクを実行する可能性があります。 この時点で焦点を当てることは、特に複数回行われた場合に迷惑になります。
- システムによって開始されたアクションによってすぐに表示または表示されない Windows は、入力フォーカスを取るべきではありません。 代わりに、フォーカスなしで上部に表示し、ユーザーが準備ができたらアクティブ化できるようにします。
- 例外: Credential Manager。
永続化
- ウィンドウが再表示される場合は、最後にアクセスした状態と同じ状態で表示することを検討してください。 閉じるときに、使用されているモニター、ウィンドウ サイズ、場所、状態 (最大化と復元) を保存します。 再表示するときは、適切なモニターを使用して、保存されたウィンドウのサイズ、場所、および状態を復元します。 また、これらの属性をユーザーごとにプログラム インスタンス間で保持することを検討してください。
例外:
- ユーザーが完全にやり直す可能性がはるかに高い場合は、これらの属性を保存したり、ウィンドウに対して永続化したりしないでください。
- Windows Tablet とタッチ テクノロジコンピューターで使用される可能性が高いプログラムの場合は、横モードと縦モードの 2 つのウィンドウ状態を保存します。 詳細については、「 表示サイズを変更するための設計」を参照してください。
-
現在のモニター構成で、最後の状態を使用してウィンドウが表示されなくなる場合:
- 最後のモニターを使用してウィンドウを表示してみてください。
- ウィンドウがモニターより大きい場合は、必要に応じてウィンドウのサイズを変更します。
- 必要に応じて、モニター内に収まるように左上隅に向かって位置を移動します。
- 上記の手順で問題が解決しない場合は、既定のウィンドウ配置ガイドラインに戻します。 可能であれば、前のサイズを復元することを検討してください。