Track MousePointer Changes

Track MousePointer Changes

If you develop large apps, this routine can help you keep a count of calls to change the mousepointer. The routine, called MouseStack, keeps a stack of those calls and resets the pointer to the default when the stacks are equal or when a reset is forced.

Often, one routine sets the MousePointer to hourglass, then calls another routine that also sets it to hourglass, then back to default. However, you might not want it reset just yet. MouseStack() changes the pointer back only if the counts of calls to hourglass and default are equal, and/or the user calls MouseStack() with vbResetMouse to set the pointer to the default:

 Public Enum MousePointers	vbDefault = 0	'set pointer to default	vbHourglass = 11	'set pointer to hourglass	vbResetMouse = 99	'reset static variables, set pointer 	'to defaultEnd EnumPublic Sub MouseStack(nMouseSetting As _	MousePointers)	Static nHourglass As Integer	Static nDefault As Integer	' Based on the setting entered in, 	'increment the proper variable	Select Case nMouseSetting		Case vbHourglass		' 11			nHourglass = nHourglass + 1		Case vbDefault		' 0			nDefault = nDefault + 1		Case Else	End Select	' If the variables are now equal, or 	' a reset was called, reset the 	' variables, and set the mouse 	' pointer to the default	If (nHourglass = nDefault) Or _		(nMouseSetting _		= vbResetMouse) Then		nHourglass = 0		nDefault = 0		Screen.MousePointer = vbDefault		Exit Sub	End If	' If the difference is > 1, the 	' pointer is already set to where it 	' should be. Leave without setting 	' pointer.	If (Abs(nHourglass - nDefault) > _		1) Then Exit Sub	' If one is ahead, set the 	' mousepointer to it	If (nHourglass > nDefault) Then		Screen.MousePointer = vbHourglass	Else		Screen.MousePointer = vbDefault	End IfEnd Sub


Share the Post: