if you *wanted* to do it via API calls then SetSystemCursor should do the trick (user32):
The SetSystemCursor function replaces the contents of the system cursor specified by id with the contents of the cursor specified by hcur, and then destroys hcur. This function lets an application customize the system cursors.
BOOL SetSystemCursor (
HCURSOR hcur, // set specified system cursor to this cursor's contents,
// then destroy this
DWORD id // system cursor specified by its identifier
);
Parameters
hcur
Handle to a cursor. The function replaces the contents of the system cursor specified by id with the contents of the cursor handled by hcur. Then the function destroys hcur by calling DestroyCursor(hCursor).
id
A system cursor identifier. The function replaces the contents of this system cursor with the contents of the cursor handled by hcur.
Following is a list of system cursor identifiers:
Value Description
OCR_NORMAL normal arrow cursor
OCR_IBEAM I-beam cursor
OCR_WAIT larger hourglass cursor
OCR_CROSS crosshair cursor
OCR_UP up arrow cursor
OCR_SIZE size cursor
OCR_ICON icon cursor
OCR_SIZENWSE NW to SE sizing cursor
OCR_SIZENESW NE to SW sizing cursor
OCR_SIZEWE horizontal sizing cursor
OCR_SIZENS vertical sizing cursor
OCR_SIZEALL horizontal and vertical sizing cursor
OCR_SIZENO international no symbol cursor
OCR_APPSTARTING smaller hourglass with arrow cursor
Return Values
If the function succeeds, the return value is nonzero.
If the function fails, the return value is zero. To get extended error information, call GetLastError.
or:
The LoadCursorFromFile function creates a cursor based on data contained in a file. The file is specified by its name or by a system cursor identifier. The function returns a handle to the newly created cursor. Files containing cursor data may be in either cursor (.CUR) or animated cursor (.ANI) format.
HCURSOR LoadCursorFromFile (
LPCTSTR lpFileName // pointer to name of cursor file, or system cursor identifier
);
Parameters
lpFileName
Indicates the source of the file data to be used to create the cursor. The data in the file must be in either .CUR or .ANI format.
If the high-order word of lpszFileName is nonzero, it is a pointer to a string that is a fully qualified name of a file containing cursor data.
If the high-order word of lpszFileName is zero, the low-order word is a system cursor identifier. The function then searches the [Cursors] entry in the WIN.INI file for the file associated with the name of that system cursor. Here is a list of system cursor names and identifiers:
System Cursor Names System Cursor Identifiers
"Arrow" OCR_NORMAL
"IBeam" OCR_IBEAM
"Wait" OCR_WAIT
"Crosshair" OCR_CROSS
"UpArrow" OCR_UP
"Size" OCR_SIZE
"Icon" OCR_ICON
"SizeNWSE" OCR_SIZENWSE
"SizeNESW" OCR_SIZENESW
"SizeWE" OCR_SIZEWE
"SizeNS" OCR_SIZENS
"SizeAll" OCR_SIZEALL
"No" OCR_NO
"AppStarting" OCR_APPSTARTING
For example, if the WIN.INI file contains the following :
[Cursors]
Arrow = "arrow.ani"
Then the call
LoadCursorFromFile((LPWSTR)OCR_NORMAL)
causes the LoadCursorFromFile function to obtain cursor data from the file ARROW.ANI. If the WIN.INI file doesn't contain an entry for the specified system cursor, the function fails and returns NULL.
Return Values
If the function is successful, the return value is a handle to the new cursor.
If the function fails, the return value is NULL. To get extended error information, call GetLastError. GetLastError may return the following value:
Value Meaning
ERROR_FILE_NOT_FOUND The specified file could not be found.
See Also
LoadCursor, SetCursor, SetSystemCursor
The SetSystemCursor function replaces the contents of the system cursor specified by id with the contents of the cursor specified by hcur, and then destroys hcur. This function lets an application customize the system cursors.
BOOL SetSystemCursor (
HCURSOR hcur, // set specified system cursor to this cursor's contents,
// then destroy this
DWORD id // system cursor specified by its identifier
);
Parameters
hcur
Handle to a cursor. The function replaces the contents of the system cursor specified by id with the contents of the cursor handled by hcur. Then the function destroys hcur by calling DestroyCursor(hCursor).
id
A system cursor identifier. The function replaces the contents of this system cursor with the contents of the cursor handled by hcur.
Following is a list of system cursor identifiers:
Value Description
OCR_NORMAL normal arrow cursor
OCR_IBEAM I-beam cursor
OCR_WAIT larger hourglass cursor
OCR_CROSS crosshair cursor
OCR_UP up arrow cursor
OCR_SIZE size cursor
OCR_ICON icon cursor
OCR_SIZENWSE NW to SE sizing cursor
OCR_SIZENESW NE to SW sizing cursor
OCR_SIZEWE horizontal sizing cursor
OCR_SIZENS vertical sizing cursor
OCR_SIZEALL horizontal and vertical sizing cursor
OCR_SIZENO international no symbol cursor
OCR_APPSTARTING smaller hourglass with arrow cursor
Return Values
If the function succeeds, the return value is nonzero.
If the function fails, the return value is zero. To get extended error information, call GetLastError.
or:
The LoadCursorFromFile function creates a cursor based on data contained in a file. The file is specified by its name or by a system cursor identifier. The function returns a handle to the newly created cursor. Files containing cursor data may be in either cursor (.CUR) or animated cursor (.ANI) format.
HCURSOR LoadCursorFromFile (
LPCTSTR lpFileName // pointer to name of cursor file, or system cursor identifier
);
Parameters
lpFileName
Indicates the source of the file data to be used to create the cursor. The data in the file must be in either .CUR or .ANI format.
If the high-order word of lpszFileName is nonzero, it is a pointer to a string that is a fully qualified name of a file containing cursor data.
If the high-order word of lpszFileName is zero, the low-order word is a system cursor identifier. The function then searches the [Cursors] entry in the WIN.INI file for the file associated with the name of that system cursor. Here is a list of system cursor names and identifiers:
System Cursor Names System Cursor Identifiers
"Arrow" OCR_NORMAL
"IBeam" OCR_IBEAM
"Wait" OCR_WAIT
"Crosshair" OCR_CROSS
"UpArrow" OCR_UP
"Size" OCR_SIZE
"Icon" OCR_ICON
"SizeNWSE" OCR_SIZENWSE
"SizeNESW" OCR_SIZENESW
"SizeWE" OCR_SIZEWE
"SizeNS" OCR_SIZENS
"SizeAll" OCR_SIZEALL
"No" OCR_NO
"AppStarting" OCR_APPSTARTING
For example, if the WIN.INI file contains the following :
[Cursors]
Arrow = "arrow.ani"
Then the call
LoadCursorFromFile((LPWSTR)OCR_NORMAL)
causes the LoadCursorFromFile function to obtain cursor data from the file ARROW.ANI. If the WIN.INI file doesn't contain an entry for the specified system cursor, the function fails and returns NULL.
Return Values
If the function is successful, the return value is a handle to the new cursor.
If the function fails, the return value is NULL. To get extended error information, call GetLastError. GetLastError may return the following value:
Value Meaning
ERROR_FILE_NOT_FOUND The specified file could not be found.
See Also
LoadCursor, SetCursor, SetSystemCursor