Page 1 of 1

changing cursors

Posted: 31 Oct 2017, 10:17
by sttrebo
hi-
I'm working on a script that helps me populate a text file. I was hoping to have the text select cursor change when the hotkey is active. i.e., change to something obvious or (different cursor) to show that the hotkey is active then when i exit the script, the cursor changes back. thru searching the forums i found a small script that changes the normal select cursor to a different one.

Code: Select all

f1::SetCursor(32646)
f2::RestoreCursor()

SetCursor(cursorId,replaceID=32512)
{
	CursorHandle := DllCall( "LoadCursor", Uint,0, Int,cursorId)
	DllCall( "SetSystemCursor", Uint, CursorHandle, Int,replaceID)
}

RestoreCursor() 
{
	DllCall( "SystemParametersInfo", UInt,0x57, UInt,0, UInt,0, UInt,0 )
}
this works fine for the system cursor, but i want to change the text select cursor. does anyone know the parameter for the text select cursor?

thanks

Re: changing cursors

Posted: 31 Oct 2017, 10:28
by Helgef
That would probably be replaceID:=32513, see LoadCursor (MSDN), specifically, IDC_IBEAM.
Cheers.

Re: changing cursors

Posted: 31 Oct 2017, 10:42
by sttrebo
perfect, thanks

Re: changing cursors

Posted: 31 Oct 2017, 11:16
by sttrebo
another quick related question:
the cursor ID #'s, is there a cheatsheet for the different ID #'s?
i see this document
https://msdn.microsoft.com/en-us/librar ... s.85).aspx

is there a reference for all of the stock cursors available (windows10)? not by file name but by ID #..

Re: changing cursors

Posted: 31 Oct 2017, 11:45
by Helgef
I do not know. The values under the id paramter in your link (SetSystemCursor function), that is, OCR_XXX, is what I would expect are the available standard cursors.

Re: changing cursors

Posted: 31 Oct 2017, 12:15
by jeeswg
From WinUser.h:

Code: Select all

/*
 * Standard Cursor IDs
 */
#define IDC_ARROW           MAKEINTRESOURCE(32512)
#define IDC_IBEAM           MAKEINTRESOURCE(32513)
#define IDC_WAIT            MAKEINTRESOURCE(32514)
#define IDC_CROSS           MAKEINTRESOURCE(32515)
#define IDC_UPARROW         MAKEINTRESOURCE(32516)
#define IDC_SIZE            MAKEINTRESOURCE(32640)  /* OBSOLETE: use IDC_SIZEALL */
#define IDC_ICON            MAKEINTRESOURCE(32641)  /* OBSOLETE: use IDC_ARROW */
#define IDC_SIZENWSE        MAKEINTRESOURCE(32642)
#define IDC_SIZENESW        MAKEINTRESOURCE(32643)
#define IDC_SIZEWE          MAKEINTRESOURCE(32644)
#define IDC_SIZENS          MAKEINTRESOURCE(32645)
#define IDC_SIZEALL         MAKEINTRESOURCE(32646)
#define IDC_NO              MAKEINTRESOURCE(32648) /*not in win3.1 */
#if(WINVER >= 0x0500)
#define IDC_HAND            MAKEINTRESOURCE(32649)
#endif /* WINVER >= 0x0500 */
#define IDC_APPSTARTING     MAKEINTRESOURCE(32650) /*not in win3.1 */
#if(WINVER >= 0x0400)
#define IDC_HELP            MAKEINTRESOURCE(32651)
#endif /* WINVER >= 0x0400 */

...

/*
 * OEM Resource Ordinal Numbers
 */

...

#define OCR_NORMAL          32512
#define OCR_IBEAM           32513
#define OCR_WAIT            32514
#define OCR_CROSS           32515
#define OCR_UP              32516
#define OCR_SIZE            32640   /* OBSOLETE: use OCR_SIZEALL */
#define OCR_ICON            32641   /* OBSOLETE: use OCR_NORMAL */
#define OCR_SIZENWSE        32642
#define OCR_SIZENESW        32643
#define OCR_SIZEWE          32644
#define OCR_SIZENS          32645
#define OCR_SIZEALL         32646
#define OCR_ICOCUR          32647   /* OBSOLETE: use OIC_WINLOGO */
#define OCR_NO              32648
#if(WINVER >= 0x0500)
#define OCR_HAND            32649
#endif /* WINVER >= 0x0500 */
#if(WINVER >= 0x0400)
#define OCR_APPSTARTING     32650
#endif /* WINVER >= 0x0400 */
Also, I wrote this about cursors:

documentation - Indentifying the the type of the current cursor in autohotkey - Stack Overflow
https://stackoverflow.com/questions/413 ... autohotkey

Re: changing cursors

Posted: 31 Oct 2017, 12:26
by sttrebo
thanks, gives me a bit more to play with. I appreciate the help from both of you.
In my code in post #1, I reference the cursor ID#. If I wanted to use a custom cursor file, is there an easy tweak to make that work?

Re: changing cursors

Posted: 31 Oct 2017, 12:35
by Helgef
If I recall correctly, there is an example here, loadpicturetype.

Re: changing cursors

Posted: 31 Oct 2017, 12:50
by sttrebo
cool, thanks. gives me something to play around with this weekend...