設定游標影像

游標是顯示滑鼠或其他指向裝置位置的小型影像。 許多應用程式都會變更游標影像,以提供意見反應給使用者。 雖然並非必要專案,但會將一些良好的波蘭文新增至您的應用程式。

Windows 提供一組標準資料指標映射,稱為 系統資料指標。 其中包括箭號、手部、I 型光線、沙漏 (,現在是旋轉圓圈) 等等。 本節說明如何使用系統資料指標。 如需更進階的工作,例如建立自訂資料指標,請參閱 資料指標

您可以藉由設定WNDCLASSWNDCLASSEX結構的hCursor成員,將游標與視窗類別產生關聯。 否則,預設資料指標是箭號。 當滑鼠移到視窗上方時,除非另一個視窗已擷取滑鼠) ,否則視窗會收到 WM_SETCURSOR 訊息 (。 此時,會發生下列其中一個事件:

若要設定游標,程式會執行下列動作:

  1. 呼叫 LoadCursor 將游標載入記憶體中。 此函式會傳回資料指標的控制碼。
  2. 呼叫 SetCursor 並傳入資料指標控制碼。

否則,如果應用程式將WM_SETCURSOR傳遞至DefWindowProc,DefWindowProc函式會使用下列演算法來設定游標影像:

  1. 如果視窗具有父代,請將 WM_SETCURSOR 訊息轉送至父代以處理。
  2. 否則,如果視窗具有類別資料指標,請將游標設定為類別資料指標。
  3. 如果沒有類別資料指標,請將游標設定為箭頭游標。

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 設定非工作區的資料指標。

下一個

使用者輸入:擴充範例