關於數據指標

Windows 提供一組 標準數據指標 ,可供應用程式使用。 下列資料指標識別碼定義於 WinUser.h 中:

意義
IDC_ARROW
MAKEINTRESOURCE(32512)
一般選取
IDC_IBEAM
MAKEINTRESOURCE(32513)
文字選取
IDC_WAIT
MAKEINTRESOURCE(32514)
忙碌
IDC_CROSS
MAKEINTRESOURCE(32515)
精確度選取
IDC_UPARROW
MAKEINTRESOURCE(32516)
替代選取
IDC_SIZENWSE
MAKEINTRESOURCE(32642)
對角線重設大小 1
IDC_SIZENESW
MAKEINTRESOURCE(32643)
對角線重設大小 2
IDC_SIZEWE
MAKEINTRESOURCE(32644)
水平重設大小
IDC_SIZENS
MAKEINTRESOURCE(32645)
垂直重設大小
IDC_SIZEALL
MAKEINTRESOURCE(32646)
移動
IDC_NO
MAKEINTRESOURCE(32648)
無法
IDC_HAND
MAKEINTRESOURCE(32649)
連結選取
IDC_APPSTARTING
MAKEINTRESOURCE(32650)
在背景工作
IDC_HELP
MAKEINTRESOURCE(32651)
說明選取
IDC_PIN
MAKEINTRESOURCE(32671)
位置選取
IDC_PERSON
MAKEINTRESOURCE(32672)
人員選取

WinUser.h 中也提供一些其他數據指標,這些數據指標沒有定義標識碼(或被視為過時):

意義
MAKEINTRESOURCE(32631) 畫筆游標。
MAKEINTRESOURCE(32652) 指向南北箭號的捲動游標。
MAKEINTRESOURCE(32653) 捲動游標,箭頭指向西部和東部。
MAKEINTRESOURCE(32654) 捲動游標,箭頭指向北、南、東和西。
MAKEINTRESOURCE(32655) 具有向北箭號的捲動游標。
MAKEINTRESOURCE(32656) 向南指向箭號的捲動游標。
MAKEINTRESOURCE(32657) 具有向西箭號的捲動游標。
MAKEINTRESOURCE(32658) 具有向東箭號的捲動游標。
MAKEINTRESOURCE(32659) 指向南北箭號的捲動游標。
MAKEINTRESOURCE(32660) 捲動游標,箭頭指向北部和東部。
MAKEINTRESOURCE(32661) 向南和向西指向箭號的捲動游標。
MAKEINTRESOURCE(32662) 向南和向東箭頭的捲動游標。
MAKEINTRESOURCE(32663) 箭頭 cd 游標。

如需使用標準數據指標的資訊,請參閱 指導方針

每個標準數據指標都有與其相關聯的對應預設影像。 使用者或應用程式可以隨時取代任何標準數據指標相關聯的預設影像。 應用程式會使用 SetSystemCursor 函式取代預設映像。

應用程式可以使用 GetIconInfo 函式來擷取數據指標的目前影像,並使用 DrawIconEx 函式繪製數據指標

自定義數據指標是專為在特定應用程式中使用而設計,而且可以是開發人員所定義的任何設計。 下圖顯示數個自定義數據指標。

custom cursors, including hand, banana, drum, wristwatch on hand, metronome

數據指標可以是單色或色彩,也可以是靜態或動畫。 特定計算機系統上所使用的數據指標類型取決於系統的顯示。 VGA 之類的舊顯示器不支援色彩或動畫游標。 新的顯示器,其顯示驅動程式使用與裝置無關的點陣圖(DIB)引擎,確實支持它們。

數據指標和圖示很類似,而且在許多情況下可以互換使用。 它們之間的唯一差異在於,指定為游標的影像必須以顯示器可支援的格式。 例如,數據指標必須是 VGA 顯示器的單色。

本概觀提供下列主題的相關信息:

熱點

在游標中,稱為作用點圖元會標示受滑鼠事件影響的確切螢幕位置,例如按滑鼠按鈕。 通常,熱點是游標的焦點。 系統會追蹤並將這個點辨識為游標的位置。 例如,典型的熱點是箭形游標的頂端圖元,以及十字形游標中間的圖元。 下列影像顯示繪圖程式中的兩個游標,其中熱點與筆刷尖和油漆十字線相關聯。

hot spots on two cursors

發生滑鼠輸入事件時,滑鼠驅動程式會將事件轉譯為包含作用點座標的適當滑鼠訊息。 系統會將滑鼠訊息傳送至包含作用點的視窗,或傳送至擷取滑鼠輸入的視窗。 如需詳細資訊,請參閱 滑鼠輸入

滑鼠和游標

系統會藉由相應移動螢幕上的游標來反映滑鼠的移動。 當游標移到視窗的不同部分或移至不同的視窗時,系統(或應用程式)會變更游標的外觀。 例如,當游標越過超連結時,系統會將游標從箭號變更為手部。

standard cursor changing to a hand when over a hyperlink

如果系統沒有滑鼠,則只有在用戶選擇特定系統命令時,系統才會顯示並移動游標,例如用來調整或移動視窗。 若要為使用者提供在無法使用滑鼠時顯示和移動游標的方法,應用程式可以使用游標函式來模擬滑鼠移動。 鑒於此模擬功能,用戶可以使用箭頭鍵來移動游標。

數據指標建立

由於標準數據指標已預先定義,因此不需要建立它們。 若要使用標準數據指標,應用程式會使用 LoadCursorLoadImage函式擷取 數據指標句柄。 數據指標句柄是 HCURSOR 類型的唯一值,可識別標準或自定義數據指標。

若要為應用程式建立自定義數據指標,您通常會使用圖形應用程式,並在應用程式的資源定義檔案中包含數據指標作為資源。 在運行時間,呼叫 LoadCursor 以擷取數據指標句柄。 數據指標資源包含數個不同顯示裝置的數據。 LoadCursor 函式會自動選取目前顯示裝置最適當的數據。 直接從載入數據指標。CUR 或 。ANI 檔案,使用 LoadCursorFromFile 函式。

您也可以使用 CreateIconIndirect 函式在運行時間建立自定義數據指標,此函式會根據 ICONINFO 結構的內容建立數據指標。 GetIconInfo 函式會以有關相關遮罩和色彩的熱點座標和資訊填滿此結構。

應用程式應該實作自定義數據指標作為資源,並使用LoadCursorLoadCursorFromFileLoadImage,而不是在運行時間建立數據指標。 使用數據指標資源可避免裝置依賴、簡化當地語系化,並讓應用程式共用數據指標設計。

CreateIconFromResourceEx 函式可讓應用程式根據資源數據建立圖示和數據指標。 CreateIconFromResourceEx 會根據來自其他可執行檔 (.exe) 檔案或 DLL 的二進位資源數據來建立數據指標。 它前面必須呼叫 LookupIconIdFromDirectoryEx 函式,以及數個資源函式。 LookupIconIdFromDirectoryEx 會識別目前顯示裝置最適當的數據指標數據。 如需資源函式的詳細資訊,請參閱 資源

數據指標位置和外觀

系統會自動顯示滑鼠的游標,並更新其在畫面上的位置。 您可以使用 GetCursorPos 和 SetCursorPos 函式,分別取得游標的目前螢幕座標,並將游標移至畫面上的任何位置。

您也可以使用 GetCursor 函式擷取目前數據指標的句柄,也可以使用 SetCursor 函式來設定數據指標 呼叫 SetCursor 之後,游標的外觀不會變更,直到滑鼠移動、游標明確設定為不同的游標,或執行系統命令為止。

當用戶移動滑鼠時,系統會在新的位置重新繪製游標。 系統會自動重新繪製與游標指向之視窗相關聯的數據指標設計。

您可以使用 ShowCursor 函式來隱藏和重新顯示數據指標,而不需變更數據指標設計。 此函式會使用內部計數器來判斷何時要隱藏或顯示游標。 嘗試顯示數據指標遞增計數器;嘗試隱藏數據指標遞減計數器。 只有當這個計數器大於或等於零時,才會顯示游標。

GetCursorInfo 函式會取得全域數據指標的下列資訊:數據指標是隱藏還是顯示、游標的句柄,以及游標的座標。

數據指標限制

您可以使用 ClipCursor 函式,將游標限制在螢幕上的矩形區域。 當用戶必須回應矩形限制區域內的特定事件時,這非常有用。 例如,您可以使用 ClipCursor 將游標限制為強制回應對話方塊,以防止使用者與其他窗口互動,直到對話框關閉為止。

GetClipCursor 函式會擷取游標暫時限制之矩形區域的螢幕座標。 當需要限制游標時,您也可以使用此函式來儲存游標可以移動的原始區域座標。 然後,當不再需要新的限制時,您可以將游標還原到原始區域。

數據指標解構

您可以終結數據指標句柄,並釋放呼叫 DestroyCursor 函式所使用的數據指標記憶體。 不過,此函式對共享數據指標沒有任何作用。 只要載入共享數據指標的模組會保留在記憶體中,共用數據指標就會有效。 下列函式會取得共享資料指標:

當您不再需要使用 CreateIconIndirect 函式建立的數據指標時,您應該終結數據指標。 DestroyIcon 函式會終結游標控點,並釋放使用之數據指標的任何記憶體。 只有在使用 CreateIconIndirect 建立的數據指標上,才使用此函式。

數據指標重複

CopyCursor 函式會複製數據指標控點。 這可讓應用程式或 DLL 程式代碼擷取另一個模組所擁有數據指標的句柄。 然後,如果釋放另一個模組,複製數據指標的模組仍然可以使用數據指標設計。

如需如何在可執行檔中新增、移除或取代數據指標資源的資訊,請參閱 資源

窗口類別數據指標

當您使用 RegisterClass 函式註冊視窗類別時,您可以將預設數據指標指標指派為稱為類別數據指標的預設數據指標 應用程式註冊視窗類別之後,該類別的每個視窗都有指定的類別數據指標。

若要覆寫類別數據指標,請處理 WM_SETCURSOR 訊息。 您也可以使用 SetClassLong 函式來取代類別數據指標。 此函式會變更指定類別之所有視窗的預設窗口設定。 如需詳細資訊,請參閱 類別數據指標