Determine MouseButton state during WM_NCHITTEST

  • Thread starter Thread starter Guest
  • Start date Start date
G

Guest

Is there any way to determine the state of the mouse buttons during a
WM_NCHITTEST message? I have a situation where I need to perform custom
logic during a WM_NCHITTEST messsage (by overriding a form's WndProc method),
but the logic should only be implemented if the left mouse button is pressed.
I am familiar with Windows.Forms.Control.MouseButtons, but that property is
not updated until after the WM_NCHITTEST occurs.

Thanks for any help!
Lance
 
Hi Lance,

The WM_NCHITTEST message is sent to a window when the cursor moves, or when
a mouse button is pressed or released. Other mouse messages are actually
generated from WM_NCHITTEST message based on the mouse position. If you
wanted to check if the user clicked in non-client area of the form, then I
would recommend you to use WM_NCLBUTTONDOWN or WM_RBUTTONDOWN. This should
help you to determine if the non-client click is using the left or right
mouse button.

If you really wanted to check mouse button in WM_NCHITTEST, I recommend you
to p/invoke GetKeyState() win32 API with VK_LBUTTON and check if the return
value is not zero.

Hope this helps.

Best regards,
Jeffrey Tan
Microsoft Online Community Support
==================================================
Get notification to my posts through email? Please refer to
http://msdn.microsoft.com/subscriptions/managednewsgroups/default.aspx#notif
ications.

Note: The MSDN Managed Newsgroup support offering is for non-urgent issues
where an initial response from the community or a Microsoft Support
Engineer within 1 business day is acceptable. Please note that each follow
up response may take approximately 2 business days as the support
professional working with you may need further investigation to reach the
most efficient resolution. The offering is not appropriate for situations
that require urgent, real-time or phone-based interactions or complex
project analysis and dump analysis issues. Issues of this nature are best
handled working with a dedicated Microsoft Support Engineer by contacting
Microsoft Customer Support Services (CSS) at
http://msdn.microsoft.com/subscriptions/support/default.aspx.
==================================================

This posting is provided "AS IS" with no warranties, and confers no rights.
 
Hi Jeffrey,

I was able to get it to work based on your information. Thanks so much for
your help.

Lance
 
Hi Lance,

Thanks for your feedback.

Also, based on the further discussion with Raymond Chen. The return value
of WM_NCHITTEST should not be dependent on volatile state like whether
mouse buttons are down.

The purpose of WM_NCHITTEST is to figure out how your window is arranged.
This is done in response to many things, not just input. For example, an
app might call WindowFromPoint, and the window manager will send
WM_NCHITTEST to figure out which window lies at a particular point on the
screen.

So, WM_NCLBUTTONDOWN or WM_RBUTTONDOWN should be used here. Thanks.

Best regards,
Jeffrey Tan
Microsoft Online Community Support
==================================================
Get notification to my posts through email? Please refer to
http://msdn.microsoft.com/subscriptions/managednewsgroups/default.aspx#notif
ications.

Note: The MSDN Managed Newsgroup support offering is for non-urgent issues
where an initial response from the community or a Microsoft Support
Engineer within 1 business day is acceptable. Please note that each follow
up response may take approximately 2 business days as the support
professional working with you may need further investigation to reach the
most efficient resolution. The offering is not appropriate for situations
that require urgent, real-time or phone-based interactions or complex
project analysis and dump analysis issues. Issues of this nature are best
handled working with a dedicated Microsoft Support Engineer by contacting
Microsoft Customer Support Services (CSS) at
http://msdn.microsoft.com/subscriptions/support/default.aspx.
==================================================

This posting is provided "AS IS" with no warranties, and confers no rights.
 
Back
Top