2012-01-02 18 views
0

私は自分のプログラムに適応しようとしているカーソルコントロールクラスを見ています。私はそれが私が望むように働いているが、私はこれらの数字がこの場合何を意味するかについて少しは不明であった。誰でも0x01などが意味するところに何か光を当てることができますか?User32.dllマウスイベント

private const int MouseEventMove = 0x01; 
    private const int MouseEventLeftDown = 0x02; 
    private const int MouseEventLeftUp = 0x04; 
    private const int MouseEventRightDown = 0x08; 
    private const int MouseEventRightUp = 0x10; 
    private const int MouseEventAbsolute = 0x8000; 

ありがとうございます。

+0

これは、Windowsのメッセージコードです。関連するイベントが発生した場合、Windowsはこれらのコードを送信します。 – MahanGM

+0

@MahanGMいいえ、そうではありません。 –

+0

私の間違い申し訳ありません。彼らは正しい旗? @Hans Passantとして言われています。 – MahanGM

答えて

1

これらは、フラグの列挙型です。 これらにはそれぞれ2のべき乗の値が与えられているので、どのような値を組み合わせても、どのフラグが設定されているかについてあいまいさはありません。 MSDNから

は:

フラグ列挙は、ビットフィールドをマスクし、ビット単位 比較を行うために使用されています。複数の列挙値を同時に指定できるときに使用する正しい設計です。あなたの特定のケースで

http://msdn.microsoft.com/en-us/library/ms229062.aspx

列挙が発生しているマウスイベントの種類について説明しているようです。

編集:これは技術的には列挙型ではなく、const intという定義のグループですが、すべての実用的な目的のために、列挙型として機能していると感じています。これにはより適切な名前がありますか?

+0

彼らは実際にはありません。値はWindows SDKヘッダーの#defineで宣言されます。したがって* const int *への変換。 –

+1

@ハンス - あなたはそれについて正しいですが、すべての機能目的のために列挙として機能します。そのようなconst intのグループとは何を呼びますか? – Rotem

3

これらは、mouse_event() Windows API関数に渡すMOUSEEVENTFフラグの値です。フラグ値はWinUser.h Windows SDKヘッダーファイルで宣言されています。リンクされたMSDNの記事に記載されているように、この関数をもう使用しないでください。

SendInput()の適切な宣言を得るには、pinvoke.netにアクセスしてください。

+0

こんにちはハンス。はい、私が使用しているコードは、SendInputメソッドを使用しますが、依然としてこれらのフラグが必要です。さらなる読書資料のアドバイスをありがとう。 –

関連する問題