Event イベントオブジェクト


タイマー以外のイベントが発生すると、OverlappedWindowオブジエクトのEventプロパティに、このオブジェクトが登録されています。イベントオブジェクトは、再利用されません。イベントごとに作成され、破棄されています。

Messageプロパティ

メッセージを識別するコードが入っています。
たとえば、タイマーであれば257です。

Parameterプロパティ

パラメーターで、イベントの種類により内容は異なります。

OnCommandイベント、OnContextMenu、OnContextDeleteなどのイベントでは、イベントを発生するきっかけとなったコントロールのID番号が入っています。

OnKeyDownイベントでは、仮想キーコードが入ります。
どのキーが、どのコードを発生させるかは実際たしかめるのが簡単です。

ExtParameterプロパティ

拡張パラメーターです。

OnKeyDownでは、シフトキーとコントロールキーの状態が入ります。
下位2ビットは、???? ??CS のようになってます。

1ビット目でSHIFTの状態、2ビット目でCONTROLの状態を表します。
それ以外のビットは不定です。


PosX
PosY

イベントが発生した時点でのマウスカーソルのクライエント座標が入ります。

DPosX
DPosY

イベントが発生した時点でのマウスカーソルのピクセル単位のクライエント座標が入ります。

time

イベントが発生した時点での時刻が入ります。

ヘルパメソッド

下記はイベントの種類を判断するメソッドです。

IsMouseMove
IsClick
IsRClick
IsClickOut
IsCommand
IsSize
IsExit
IsOK
IsCancel
IsDblClick
IdRDblClick
IsContextMenu
IsContextDelete
IsKeydown

メッセージが該当すればTrueが返ります。

IsTimerメソッドは、無意味です。

タイマーはEventオブジェクトを生成しないためです。
判断する必要がある場合はDoEventが返すコードが257であることで分かります。

注意!

もし、イベントハンドラをつかわずDoEventとIF等の判定でイベントを処理しようとする場合には、タイマーに気をつけなければなりません。
DoEventがイベント処理あり、として返してきたとしてもEVENTオブジェクトは以前のイベントコードを示したままです。
すなわち、DoEventが257を返してきた場合はタイマー処理を行い、それ以外の場合にEventオブジェクトを使うようにしてください。