1

古い W​​indows 95 MFC コードを C++11 に変換するプロジェクトに取り組んでいます。移動中にマウス ボタンがクリックされていない場合、OnMouseMove() 関数に渡される UINT nFlags の値は何ですか?

私は MFC にあまり詳しくなく、Windows マシンにアクセスして自分でテストを行うこともできないため、この関数の動作に関する私の理解は正しくない可能性があります。左クリック、中央または右の場合、OnMouseMove 関数が nFlags で受け取る特別なシステム値があることを知っています (MK_LBUTTON のように、0x0001)。特に何もクリックせずにマウスを動かした場合、nFlags の値はどうなるのだろうと思っていましたが、0x0000 ですか? どうもありがとうございました。この問題に関するご協力をお願いいたします。

4

1 に答える 1

3

はい、0です。

しかし、文書化された可能な値をテストするのが最も安全だと思うので、将来その使用法が変更された場合、「0 を想定する」コードは壊れません。VS2012 の MSDN によると、これらは可能な値です。

MK_CONTROL   Set if the CTRL key is down.
MK_LBUTTON   Set if the left mouse button is down.
MK_MBUTTON   Set if the middle mouse button is down.
MK_RBUTTON   Set if the right mouse button is down.
MK_SHIFT     Set if the SHIFT key is down.

それらは現在 (Winuser.h で) 次のように定義されています。

#define MK_LBUTTON          0x0001
#define MK_RBUTTON          0x0002
#define MK_SHIFT            0x0004
#define MK_CONTROL          0x0008
#define MK_MBUTTON          0x0010
于 2013-06-05T20:39:07.180 に答える