マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

Windowsメッセージキュー

Windowsメッセージ

Windowsメッセージキューに格納されたWindowsメッセージは、

作成されるタイミング

ウィンドウを作成したスレッドには、Windowsメッセージキューが与えられる。

通常、1UIスレッドで複数ウィンドウを処理する。この場合も1Windowsメッセージキューになる。

メッセージ・ループ

メッセージ・ループで使用するWin32PI

メッセージの取り出し

メッセージの割り当て

待機

その他

.NETでメッセージループ(WinProc?)を実装する方法

ウィンドウプロシージャ(WndProc?

WndProc?で使用するWin32PI

WndProc?登録

WndProc?のサブクラス化

WndProc?のサブクラス化とは、WndProc?の置き換えと、元のWndProc?へのチェーンを実装すること。
オブジェクト指向のサブクラスではないが、それ相当のことをやっている(オーバーライド+base呼び出し)。

メッセージの送信

ハードウェア入力

ハードウェア入力モデルとローカル入力状態

ハードウェア入力モデル

RITが接続するVIQのスレッドを識別する

THREADINFO構造体

ローカル入力状態(THREADINFO構造体内)

キーボード入力、ウィンドウフォーカス情報

マウスカーソル管理情報

マウスによる切り替え

Win32API

SetFocus?

GetFocus?

ローカル入力状態からフォーカスを持つウィンドウのHWNDを返す。   

SetActiveWindow?

GetActiveWindow?

ローカル入力状態からアクティブなウィンドウのHWNDを返す。   

BringWindowToTop?

HWND_TOPを指定しSetWindowPos?を呼び出す(RITに接続するVIQを変更可能)

SetWindowPos?

ウィンドウをアクティブにしてサイズ、位置、Zオーダの変更。
(RITに接続するVIQを変更可能)   

SetForgroundWindow?

ウィンドウをフォアグラウンドに移動するが(RITに接続するVIQを変更可能)
プログラマによって乱用されたため、MSはRITに接続されているか、RITに接続されている
別スレッドが一定時間以上、入力を受け取っていない場合にのみ成功するように機能を追加した。

失敗の際は、タスクバーをフラッシュさせる。

AllowSetForgroundWindow?

指定したプロセスのスレッドがSetForgroundWindow?を呼び出すことを許可する。

LockSetForgroundWindow?

他のSetForgroundWindow?呼出をロックする
(Windowsスタートメニューなどで使用されている)。 

GetForgroundWindow?

フォアグラウンドウィンドウのHWNDを返す。

GetKeyState?

最後のキー入力を返す。 入力フォーカスを持ったウィンドウを持ってる必要はない。   

GetAsyncKeyState?

を返す。

入力フォーカスを持ったウィンドウを持ていること。

SetCursor?

マウス・カーソルのセット(砂時計など)

ShowCursor?

マウス・カーソルの表示・非表示

ClipCursor?

マウス・カーソルの範囲を指定する。 (非同期的なアクティブ化イベントで中止)

SetCapture?

ReleaseCapture?

上記のマウスのキャプチャを停止する。

AttachThreadInput?

複数のスレッドに複数のVIQとローカル入力状態を共有させる。

ただし、THREADINFO構造体の、

については自分のものを使い続ける。

ユーザオブジェクト

ユーザオブジェクト(プロセスに占有)

参考


Tags: :Windows, :ウィンドウ・システム, :プログラミング


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS