HOWTO: Change the Mouse Pointer to Any .CUR or .ANI File
ID: Q137627
|
The information in this article applies to:
-
Microsoft Visual FoxPro for Windows, versions 3.0, 5.0
SUMMARY
The ability to change the mouse pointer to a cursor file other than one of
the default system cursors is available to Visual FoxPro through the
Windows API. This feature set is available under both Windows 95 and
Windows NT.
Visual FoxPro allows you to change the MousePointer property to specify
one of the pointer shape available in the default 12 system pointers, and
the DragIcon property allows you to set the pointer to any monochrome .cur
file. However, in some cases, you might want a colored pointer or an
animated pointer (.ani file). You can use the Windows API to do this.
The example in this article shows a method using LoadCursorFromFile() and
SetSystemCursor(). There are other functions that may be useful as well
such as CopyIcon(), ClipCursor(), GetCursor(), and so on. See the
Win32api.hlp file for more information on these functions.
MORE INFORMATION
The following code demonstrates a form with two command buttons. The upper
button changes the pointer to an animated cursor and the lower button
resets the pointer to the original cursor. The sample code is designed to
run under Windows NT. It requires slight modification to run under Windows
95; instructions are given in comments.
Sample Code
PUBLIC oform1
oform1=CREATEOBJECT("form1")
oform1.Show()
RETURN
DEFINE CLASS form1 AS form
Caption = "Form1"
Name = "Form1"
ADD OBJECT command1 AS commandbutton WITH ;
Top = 72, ;
Left = 96, ;
Height = 29, ;
Width = 94, ;
Caption = "SetCursor", ;
Name = "Command1"
ADD OBJECT command2 AS commandbutton WITH ;
Top = 144, ;
Left = 96, ;
Height = 29, ;
Width = 94, ;
Caption = "ResetCursor", ;
Name = "Command2"
PROCEDURE Init
public currenthcurs,tempcurs,newhcurs,OCR_NORMAL
OCR_NORMAL=32512 &&from winuser.h
ENDPROC
PROCEDURE command1.Click
MyDir=space(255)
declare Integer GetWindowsDirectory in Win32Api String @, Integer
declare Integer CopyIcon in Win32Api Integer
declare Integer LoadCursorFromFile in Win32Api String
declare Integer SetCursor in Win32Api Integer
declare SetSystemCursor in Win32Api Integer, Integer
declare Integer GetCursor in Win32Api
currenthcurs=GetCursor()
tempcurs=CopyIcon(currenthcurs)
len=GetWindowsDirectory(@MyDir,255)
MyDir=left(MyDir,len)+"\System32\dinosaur.ani" && WindowsNT
* Uncomment the next line and comment the previous line if running under
* Windows 95, or set MyDir to the path to a valid .cur or .ani file.
* MyDir=left(MyDir,len)+"\cursors\dinosaur.ani" && Windows95
newhcurs=LoadCursorFromFile(MyDir)
=SetSystemCursor(newhcurs,OCR_NORMAL)
ENDPROC
PROCEDURE command2.Click
=SetSystemCursor(tempcurs,OCR_NORMAL)
ENDPROC
ENDDEFINE
REFERENCES
For more details, you can find a reference to these cursor functions in the
Win32Api.hlp Help file and in the Win32 SDK. The creation of cursor files
is supported by Imagedit.exe, and the Windows NT utility Aniedit.exe can be
used to create animated cursors.
Additional query words:
Keywords : kbcode kbVFp300 kbVFp500
Version :
Platform :
Issue type : kbhowto