設定游標影像
游標是顯示滑鼠或其他指向裝置位置的小型影像。 許多應用程式都會變更游標影像,以提供意見反應給使用者。 雖然並非必要專案,但會將一些良好的波蘭文新增至您的應用程式。
Windows 提供一組標準資料指標映射,稱為 系統資料指標。 其中包括箭號、手部、I 型光線、沙漏 (,現在是旋轉圓圈) 等等。 本節說明如何使用系統資料指標。 如需更進階的工作,例如建立自訂資料指標,請參閱 資料指標。
您可以藉由設定WNDCLASS或WNDCLASSEX結構的hCursor成員,將游標與視窗類別產生關聯。 否則,預設資料指標是箭號。 當滑鼠移到視窗上方時,除非另一個視窗已擷取滑鼠) ,否則視窗會收到 WM_SETCURSOR 訊息 (。 此時,會發生下列其中一個事件:
- 應用程式會設定游標,而視窗程式會傳回 TRUE。
- 應用程式不會執行任何動作 ,並將WM_SETCURSOR 傳遞至 DefWindowProc。
若要設定游標,程式會執行下列動作:
- 呼叫 LoadCursor 將游標載入記憶體中。 此函式會傳回資料指標的控制碼。
- 呼叫 SetCursor 並傳入資料指標控制碼。
否則,如果應用程式將WM_SETCURSOR傳遞至DefWindowProc,DefWindowProc函式會使用下列演算法來設定游標影像:
- 如果視窗具有父代,請將 WM_SETCURSOR 訊息轉送至父代以處理。
- 否則,如果視窗具有類別資料指標,請將游標設定為類別資料指標。
- 如果沒有類別資料指標,請將游標設定為箭頭游標。
LoadCursor函式可以從資源或其中一個系統資料指標載入自訂資料指標。 下列範例示範如何將游標設定為預先定義的系統連結選取資料指標。
LPCTSTR cursor = IDC_HAND;
hCursor = LoadCursor(NULL, cursor);
SetCursor(hCursor);
如果您變更游標,則資料指標影像會在下一個滑鼠移動時重設,除非您攔截 WM_SETCURSOR 訊息,然後再次設定游標。 下列程式碼示範如何處理 WM_SETCURSOR。
case WM_SETCURSOR:
if (LOWORD(lParam) == HTCLIENT)
{
SetCursor(hCursor);
return TRUE;
}
break;
此程式碼會先檢查較低的 16 位 lParam。 如果 LOWORD(lParam)
等於 SQLLIENT,表示游標位於視窗的工作區上方。 否則,游標位於非工作區上方。 一般而言,您應該只設定工作區的資料指標,讓 Windows 設定非工作區的資料指標。