Code archives/Miscellaneous/MaxGUI: Make a GUI Window Flash

This code has been declared by its author to be Public Domain code.

Download source code

MaxGUI: Make a GUI Window Flash by SebHoll2006
Quite simply, this code lets you make a MaxGUI window flash just by calling the function FlashWindow(window:TGadget,flags,interval).

Window: The window gadget you want to flash.
Flags: Either 1 (window flashed continuously), 2 (window flashes until it receives focus, e.g. flashes if it is currently minimized)
Interval: The time each flash takes (in millisecs).

I use it for attracting the users attention if they have the window minimized. Just have a play around!!!
SuperStrict

Rem
######################################
'MARK: TYPE DECLARATION
######################################
EndRem

Type TFLASHWINFO
	
	Field chSize:Int	'Size of structure in bytes
	Field hwnd:Int		'hWND of Window to flash
	Field dwFlags:Int	'Flags for window flash
	Field uCount:Int	'How many times to flash
	Field dwTimeout:Int 'Flashrate (in millisecs). If "0" then default is used.
	
End Type

Rem
######################################
'MARK: GLOBAL DECLERATION
######################################
EndRem

Global FlashWindowEx(typTFlashWInfo:Byte Ptr)
Global user32:Int = LoadLibraryA("user32.dll") 

FlashWindowEx = GetProcAddress(user32:Int,"FlashWindowEx")


Global wndMain:TGadget = CreateWindow("Test Window" , 400 , 300 , 400 , 300 , Null , 15)

	Global gadFlash:TGadget = CreateButton("Flash Window" , 5 , 5 , 100 , 12 , wndMain:TGadget , BUTTON_CHECKBOX)

Rem
######################################
'MARK: EVENT BLOCK
######################################
EndRem

Repeat
	
	Select WaitEvent()
	
		Case EVENT_GADGETACTION
		
			Select EventSource()
			
				Case gadFlash ; FlashWindow(wndMain:TGadget, ButtonState(gadFlash:TGadget), 500)
			
			EndSelect
	
		Case EVENT_WINDOWCLOSE ; End
	
	EndSelect
	
Forever


Rem
######################################
'MARK: FUNCTION BLOCK
######################################
EndRem

Function FlashWindow(window:TGadget , flags:Byte = 1 , dwTimeout:Int = 0)
	
	Assert window:TGadget <> Null , "No window gadget passed to function."
	Assert flags:Byte <= 2 , "Invalid flag ("+flags+") passed: use only 0, 1 or 2."
	
	Local dwFlags:Int
	Local FLASHWINFO:TFLASHWINFO = New TFLASHWINFO
	
	Select flags:Byte
	
		Case 1 ; dwFlags:Int = 7 	'Flashes continuously until function called with flag 0
	
		Case 2 ; dwFlags:Int = 15	'Flashes until window has focus
		
		Case 0 ; dwFlags:Int = 0	'Stops flashing
		
	EndSelect
	
	FLASHWINFO.chSize:Int = SizeOf(FLASHWINFO:TFLASHWINFO)
	FLASHWINFO.hwnd:Int = QueryGadget(window:TGadget,1)
	FLASHWINFO.dwFlags:Int = dwFlags
	FLASHWINFO.uCount:Int = 0
	FLASHWINFO.dwTimeout:Int = dwTimeOut
	
	FlashWindowEx(FLASHWINFO)

EndFunction

Comments

None.

Code Archives Forum