スレッドでの Windows の作成

任意のスレッドでウィンドウを作成できます。 ウィンドウを作成するスレッドは、ウィンドウとそれに関連付けられているメッセージ キューを所有します。 そのため、スレッドはメッセージ キュー内のメッセージを処理するためのメッセージ ループを提供する必要があります。 さらに、メッセージを処理できるように、他の待機関数ではなく、そのスレッドで MsgWaitForMultipleObjects または MsgWaitForMultipleObjectsEx を使用する必要があります。 そうしないと、待機中にスレッドがメッセージを送信すると、システムがデッドロック状態になる可能性があります。

AttachThreadInput 関数を使用すると、一連のスレッドで同じ入力状態を共有できます。 入力状態を共有することで、スレッドはアクティブ ウィンドウの概念を共有します。 これを行うことで、あるスレッドは常に別のスレッドのウィンドウをアクティブ化できます。 この関数は、入力状態が共有されているさまざまなスレッドによって作成されたウィンドウ間で、フォーカス状態、マウス キャプチャ状態、キーボードの状態、ウィンドウ Z オーダーの状態を共有する場合にも役立ちます。

ウィンドウの作成の詳細については、「 Windows クラス」を参照してください。