Winapi 是否从父窗口为子控件设置光标?

Winapi 是否从父窗口为子控件设置光标?,winapi,cursor,Winapi,Cursor,如何从父窗口为子窗口设置光标而不将其子类化?WM_SETCURSOR消息会自动传递给父窗口,以便您可以在那里处理它。如果子控件实际处理它,则必须对其进行子类化。或者破解信息循环(恶心)。tcharszbuttoncoordinates[50]; RECT-RECT; 开关(信息) { ... 案例WM_MOUSEMOVE: hWndButton=GetDlgItem(hWnd,IDC_按钮); GetClientRect(hWndButton和rect); MapWindowPoints(hWn

如何从父窗口为子窗口设置光标而不将其子类化?

WM_SETCURSOR消息会自动传递给父窗口,以便您可以在那里处理它。如果子控件实际处理它,则必须对其进行子类化。或者破解信息循环(恶心)。

tcharszbuttoncoordinates[50];
RECT-RECT;
开关(信息)
{
...
案例WM_MOUSEMOVE:
hWndButton=GetDlgItem(hWnd,IDC_按钮);
GetClientRect(hWndButton和rect);
MapWindowPoints(hWnd按钮,hWnd,(LPPOINT)和rect,2);
//wsprintf(szButtonCoordinates,_T(“顶部:%d,左侧:%d,底部:%d,右侧:%d”)、rect.Top、rect.Left、rect.Bottom、rect.Right);

如果((LOWORD(lParam)>=rect.left)和&(LOWORD(lParam)=rect.top)和&(HIWORD(lParam)你会考虑添加一些叙述来解释这个代码为什么工作,什么使它成为问题的答案?这对询问问题的人和其他任何人都是非常有帮助的。上面的代码处理WMMMuMeMeo消息在对话框中的子控件窗口上设置一个不同的光标。
TCHAR szButtonCoordinates[50];
RECT  rect;
switch (message)
{
...
case WM_MOUSEMOVE:
     hWndButton = GetDlgItem (hWnd, IDC_BUTTON);
     GetClientRect (hWndButton, &rect);
     MapWindowPoints (hWndButton, hWnd, (LPPOINT) &rect, 2);
     // wsprintf (szButtonCoordinates, _T("Top: %d, Left: %d, Bottom: %d, Right: %d."),rect.top, rect.left,  rect.bottom, rect.right);
     if (((LOWORD (lParam) >= rect.left) && (LOWORD (lParam) <= rect.right)) && ((HIWORD (lParam) >=rect.top) && (HIWORD (lParam) <= rect.bottom)))
     {
         //MessageBox (hWndProg3, szButtonCoordinates, _T("Button Coordinates"), MB_ICONINFORMATION);
         SetCursor (LoadCursor (NULL, IDC_CROSS));
      }
      break; 
...
}