WM_LBTNDOWN and WM_NCHITTEST Problem
Guess who.... -- guess@ingress1.ingress.com
Thursday, May 30, 1996
Windows NT 3.51 - MFC 4.1
I originally wrote a program using Windows 95. One of the classes based
on CStatic was starting a drag & drop operation on WM_LBUTTONDOWN (not
sure if I spelled that right). After being fed up with Win95 crashes, I
moved up to Windows NT 3.51 and now none of those events arive.
While using Spy++, the only mouse events that that window is getting is
WM_NCHITTEST, for both mouse movements and Button clicks.
Can somebody please give me any idea on fixing this.
Timur
Dean McCrory -- deanm@microsoft.com
Sunday, June 02, 1996
[Mini-digest: 3 responses]
Guess,
This is because NT returns HTNOWHERE from WM_NCHITTEST for static
controls. That keeps the mouse messages from happening. If you want
'em, you should probably return HTCLIENT from WM_NCHITTEST in your
subclass.
// Dean
-----From: Christophe Nasarre
As far as I know, CStatic is wrapping a STATIC window. Since this particular
class returns HTTRANSPARENT to WM_NCHITTEST message, it is clear that it
will never get a button mouse message : its parent will get it.
So, if you want your CStatic to get WM_LBUTTONDOWN message, you have to also
handle WM_NCHITTEST message and return something like HTCLIENT for example
--> you will get mouse button messages.
Good luck
-- a poor lonely frenchie --
-----From: Wolfgang Loch
So far I understand you, you have derived the CYourStatic class from
CStatic and subclassed the Object by means of SubclassDlgItem or
DDX_Control.
In this case you should handle the WM_LBUTTONDOWN - message in the
CYourStatic class, not in the dialog box.
Wolfgang
| Вернуться в корень Архива
|