2010-09-21 31 views

回答

1

WM_SETCURSOR消息自動傳遞給父項,所以您可以在那裏處理它。如果子控件實際處理它,那麼你必須對它進行子類化。或者破解消息循環(yuck)。

0
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; 
... 
} 
+0

你會考慮增加一些敘述來解釋爲什麼這段代碼有效嗎?是什麼使它成爲這個問題的答案?這對詢問問題的人以及任何其他人來說非常有幫助。上面代碼中的 – 2013-02-21 05:05:44

+0

處理WM_MOUSEMOVE消息,以在對話框中的子控制窗口上設置不同的光標。 – null 2013-02-21 05:14:36