Change mouse pointer

Blitz3D Forums/Blitz3D Beginners Area/Change mouse pointer

Walter(Posted 2004) [#1]
Is it possible to change the mouse pointer ? I would like an hand pointer instead of the arrow. How to change from one pointer to the other ?


Mustang(Posted 2004) [#2]
In Blitz3D you just hide the mouse pointer (if you use windowed modes) and use a sprite (with alpha) instead. Few related commands:

http://www.blitzbasic.com/b3ddocs/command.php?name=MouseX&ref=2d_cat

http://www.blitzbasic.com/b3ddocs/command.php?name=HidePointer&ref=2d_cat


Walter(Posted 2004) [#3]
I use BlitzPlus with windows (no fullscreen)


WolRon(Posted 2004) [#4]
There must be some API calls you could make, although I don't know which ones.


jhocking(Posted 2004) [#5]
You still do what Mustang suggests. Call HidePointer at the top of your code somewhere, and then every frame draw an image at MouseX(), MouseY()


Perturbatio(Posted 2004) [#6]
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




Perturbatio(Posted 2004) [#7]
or see here: http://www.blitzbasic.com/Community/posts.php?topic=28186