2013-06-05 4 views
1

저는 이전 Windows 95 MFC 코드를 C++ 11로 변환하는 프로젝트 작업을하고 있습니다. 이동 중에 마우스 버튼을 클릭하지 않으면 OnMouseMove() 함수에 전달 된 UINT nFlags의 값은 무엇입니까?MFC 마우스 모션 OnMouseMove 이벤트 단추를 클릭하지 않으면 nFlags 값이 표시됩니까?

MFC에 익숙하지 않아 테스트를 직접 수행 할 Windows 컴퓨터에 액세스 할 수 없어이 기능 동작에 대한 이해가 잘못되었을 수 있습니다. 중간 또는 오른쪽 버튼을 클릭하면 OnMouseMove 함수가 nFlags (예 : MK_LBUTTON, 0x0001)에서받을 특수 시스템 값이 있다는 것을 알고 있습니다. 특히 nFlags의 값이 아무 것도 클릭되지 않고 마우스가 움직이는 경우 어떤 값이 될지 궁금합니다. 단지 0x0000입니까? 대단히 감사합니다.이 문제에 대한 도움을 주시면 감사하겠습니다!

답변

3

예, 그것은

0이다 그러나 나는 그것의 사용이 앞으로 변경되는 경우 그래서는 "0 가정"코드가 침입하지 않는 문서화 가능한 값을 테스트하는 것이 가장 안전하다고 생각. VS2012에 대한 MSDN에 따르면, 이들은 가능한 값은 다음과 같습니다 그들이 현재로 (Winuser.h에서) 정의

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. 

가 :

#define MK_LBUTTON   0x0001 
#define MK_RBUTTON   0x0002 
#define MK_SHIFT   0x0004 
#define MK_CONTROL   0x0008 
#define MK_MBUTTON   0x0010 
+0

이 좋은 답변 주셔서 감사합니다! 다행히 내 목적으로, 원래의 MFC 코드가 C++ 11로 완전히 재 작성되기 때문에 현재의 동작이 무엇인지 알아야만 논리를 처리하는 케이스를 이해하고 다른 것으로 변환 할 수 있으므로 생각하지 않습니다. 향후의 사용 변경에 대한 우려가 있어야합니다. 다시 한 번 감사드립니다! – user1930581