51

Windows では、フォアグラウンド ウィンドウとアクティブ ウィンドウの違いは何ですか? 具体的には、フォアグラウンド ウィンドウがアクティブ ウィンドウにならないのはどのような場合ですか? 2 つの用語が同じ概念を参照している場合、なぜ 2 つの用語があるのか​​。

ここのmsdnのドキュメントには、「ウィンドウをクリックするか、ALT+TABまたはALT+ESCキーの組み合わせを使用する」と記載されており、ウィンドウがフォアグラウンドだけでなくアクティブになります。2 つの用語の違いについて明示的な説明はありません。MSDNを確認してください。

4

2 に答える 2

13

MSDN の説明も少しわかりにくいと思いますが、ここに私の改訂版を示します。

まず、フォアグラウンド ウィンドウとバックグラウンド ウィンドウは、アクティブなウィンドウとは関係ありません。スレッドと関係があります。以下を参照してください。したがって、バックグラウンド ウィンドウをアクティブ ウィンドウにすることは技術的に可能ですが、混乱を招き、システムはこれを行いません。代わりに、アプリで SetWindowPos などを呼び出してバックグラウンド ウィンドウをアクティブにする必要があります。

システムは、一度に 1 つのアクティブなトップレベル ウィンドウしか持つことができません。子ウィンドウで作業している場合、システムはトップレベル ウィンドウをアクティブにします。次に、すべての入力がアクティブ ウィンドウに送られ、通常は子ウィンドウに渡されます。

/----------------------\
|                      |
|   FOREGROUND WINDOW  |--\
|                      |  |
\----------------------/  |
  | BACKGROUND WINDOW     |
  \-----------------------/

/----------------------\
|                      |
|    ACTIVE WINDOW     |--\
|                      |  |
\----------------------/  |
  | BACKGROUND WINDOW     |
  \-----------------------/

MSDN から

アクティブ ウィンドウ

アクティブなウィンドウは、ユーザーが現在作業しているアプリケーションの最上位ウィンドウです。ユーザーがアクティブ ウィンドウを簡単に識別できるようにするために、システムはそれを z オーダーの一番上に配置し、タイトル バーと境界線の色をシステム定義のアクティブ ウィンドウの色に変更します。最上位のウィンドウのみがアクティブ ウィンドウになることができます。ユーザーが子ウィンドウで作業している場合、システムは子ウィンドウに関連付けられた最上位の親ウィンドウをアクティブにします。

前景/背景

各プロセスは複数の実行スレッドを持つことができ、各スレッドはウィンドウを作成できます。ユーザーが現在作業しているウィンドウを作成したスレッドはフォアグラウンド スレッドと呼ばれ、ウィンドウはフォアグラウンド ウィンドウと呼ばれます。他のすべてのスレッドはバックグラウンド スレッドであり、バックグラウンド スレッドによって作成されたウィンドウはバックグラウンド ウィンドウと呼ばれます。

于 2010-10-15T07:48:33.780 に答える