Load Cursor...
BlitzPlus Forums/BlitzPlus Programming/Load Cursor...| 
 | ||
| how can i load a cursor from file and change mouse pointer? i tested some api-functions (yes with userlibs) - but i have no luck :-( nothing work. Have someone code? | 
| 
 | ||
| Just worked this out: Userlib: .lib "user32.dll" SetSystemCursor%(hcur%, id%) LoadCursor%(hInstance%, lpCursorName%):"LoadCursorA" DestroyCursor%(hCursor%) LoadCursorFromFile%(filename$):"LoadCursorFromFileA" GetCursor%() B+ Code: 
Graphics 640, 480, 16, 2
Const OCR_NORMAL   = 32512 ; Normal
Const IDC_SIZEALL  = 32646 ; Size all
oldCur% = GetCursor() ; Save Default Cursor
; Load New Cursor
;hCur% = LoadCursor(0, IDC_SIZEALL)      ; Size All System Cursor
hCur% = LoadCursorFromFile("target.cur") ; Custom Cursor
SetSystemCursor hCur%, OCR_NORMAL
DestroyCursor hCur%
Repeat: Until KeyDown(1)
; Restore 
hCur% = LoadCursor(0, oldCur%)  
SetSystemCursor hCur%, OCR_NORMAL
DestroyCursor hCur%
End
I can't seem to get it to restore the original cursor correctly, though im sure that code should work. Hopefully someone can spot the problem. | 
| 
 | ||
| It's a lot easier than that :) userlib needed is .lib "user32.dll" LoadCursor%( ID, Cursor ):"LoadCursorA" SetCursor%( ID ):"SetCursor" You can also use these for the different cursors ; Mouse Pointers Const IDC_ARROW = 32512 Const IDC_IBEAM = 32513 Const IDC_WAIT = 32514 Const IDC_CROSS = 32515 Const IDC_UPARROW = 32516 Const IDC_SIZENWSE = 32642 Const IDC_SIZENESW = 32643 Const IDC_SIZEWE = 32644 Const IDC_SIZENS = 32645 Const IDC_SIZEALL = 32646 Const IDC_NO = 32648 Const IDC_HAND = 32649 Const IDC_APPSTARTING = 32650 Const IDC_HELP = 32651 Const IDC_ICON = 32641 Const IDC_SIZE = 32640 And then you just use cursor = loadcursor(0,cursor_constant) And setting the cursor is as simple as setcursor cursor If you don't use setcursor in a loop then Blitz automatically resets the cursor to the default arrow. | 
| 
 | ||
| We're talking about loading the cursor from file, does SetCursor restore the default correctly when used with LoadCursorFromFile? | 
| 
 | ||
| Heres a demo You'll have to change it to load a cursor since I don't have any to hand. Just click the black square (canvas) to change the cursor. 
window = CreateWindow("Cursor Test",200,200,200,200,0,1)
canvas = CreateCanvas(0,0,200,200,window)
quit = False
; Mouse Pointers
Const IDC_ARROW			= 32512
Const IDC_IBEAM			= 32513
Const IDC_WAIT			= 32514
Const IDC_CROSS 		= 32515 
Const IDC_UPARROW 		= 32516
Const IDC_SIZENWSE 		= 32642
Const IDC_SIZENESW 		= 32643
Const IDC_SIZEWE 		= 32644 
Const IDC_SIZENS 		= 32645 
Const IDC_SIZEALL 		= 32646 
Const IDC_NO 			= 32648 
Const IDC_HAND 			= 32649
Const IDC_APPSTARTING 	= 32650
Const IDC_HELP 			= 32651
Const IDC_ICON 			= 32641
Const IDC_SIZE 			= 32640
cursor = LoadCursor(0,IDC_IBEAM)
Repeat
	Select WaitEvent()
	Case $201 ;mouse down
	
		SetCursor cursor
	
	Case $803 ; window close
	
		quit = True
	
	End Select
Until quit = True
End
 |