Get TGadget of Grapics "800,600,0"?

BlitzMax Forums/BlitzMax Beginners Area/Get TGadget of Grapics "800,600,0"?

Hi!

I'm still trying to figure out how to detect the click on the maximise button of a window.

Is there a way to get the current TGadget of the window I'm using? (No CreateWindow involved, simply Graphics 800,600,0) If so one could then use the normal maxgui eventchecks on it.

I think EVENT_WINDOWSIZE. Can't be 100% certain.

i think he means he wants to be able to get the tgadget for the window that is created when you use graphics. I tho you might beable to go event.source but it doesnt work :(. Other then that i know of no other command that could do it.

Just out of intrest i tried doing a waitevent and event check and the window graphics window does throw up events, however i dont think they comfrom to the maxgui standared as i tried making the program close on EVENT_WINDOWCLOSE however it didnt work as its not the same value but i did get it to close in the end, i think it throws up 259 or.. mmm heres the code i got to work.

Graphics 800, 600, 0, 60


While Not KeyHit(KEY_ESCAPE)

	Cls
	
	DrawText lasteventid%, 10, 10
	
	Flip


	WaitEvent
	
	lasteventid% = EventID()
	
	If lasteventid% = 259 Then End


Wend


End


edit: and heres the code that should, but doesnt :(
Graphics 800, 600, 0, 60


While Not KeyHit(KEY_ESCAPE)

	Cls
	
	DrawText lasteventid%, 10, 10
	
	Flip


	WaitEvent
	
	lasteventid% = EventID()
	If EventSource() <> Null Then End
	
	If lasteventid% = 259 Then End


Wend


End


Thanks Diablo for your try.

I did similar stuff without any working result.

I simply want to give the windowed (non gui) app a maximise button and be able to check this. If pressed the app should change gfx mode to fullscreen.

Strict 

Local window:TGadget

window=CreateWindow("My Window",40,40,320,240)
	WaitEvent
	WaitEvent
While True
	WaitEvent 
	Print CurrentEvent.ToString()

		Select EventID()
		Case EVENT_WINDOWSIZE
                        End 
		Case EVENT_WINDOWCLOSE
			End
	End Select
Wend


This example works with a gui win.
But it doesnt with "normal" gfx mode.

Grisu, try this.
Go through my eventhook tutorial here to understand how all this works.
SuperStrict

Graphics 400,400,0,0,0

AddHook EmitEventHook, MyHook

Repeat
 WaitEvent()
 If EVENT_GADGETPAINT Then UpdateCanvas()
Forever
End

Function MyHook:Object(iId:Int,tData:Object,tContext:Object)
  Local Event:TEvent=TEvent(tData)

  If event.id<>1027 Then 'do not print Mouse Move event - too distracting 
     Print " event id="+event.id+":"+Hex$(Event.ID)
  EndIf

  Select event.id
  Case EVENT_APPTERMINATE 'event.id=$103 
     Notify "QUIT"
     End
  End Select

  Return tData

End Function

Function UpdateCanvas:Int()
     Cls
     SetColor Rnd(255),Rnd(255),Rnd(255)
     DrawRect 10,10,100,150
     Flip
End Function


THis does not help me with the maximise button.

Strict

Extern "win32"
	Function GetActiveWindow%()
End Extern

Graphics 800,600,0
Local hWnd% = GetActiveWindow()
enableMaximize( hwnd% )

Repeat
 Select WaitEvent()
 Case EVENT_APPTERMINATE 'event.id=$103 
    End
 End Select

Forever
End

Function enableMaximize(hWnd:Long)
	Local tmp:Int = GetWindowLongA( hWnd, GWL_STYLE )
	tmp = tmp | WS_MAXIMIZEBOX
	SetWindowLongA( hWnd, GWL_STYLE, tmp )
	DrawMenuBar( hWnd )
End Function


I "simply" want this app to go fullscreen when the button is clicked.

here you go grisu, enjoy:
Extern "win32"
	Function GetActiveWindow%()
	Function IsZoomed%(hwnd%)
End Extern

Graphics 800,600,0
Local hWnd% = GetActiveWindow()
enableMaximize( hwnd% )

While Not KeyHit(KEY_ESCAPE)

	Cls
	
		DrawText iszoomed(hWnd), 10, 10
	
	Flip
	
	WaitEvent()
	lasteventid% = EventID()
	
	If lasteventid% = 259 Then End
	
	If iszoomed(hWnd) Then
		
		EndGraphics()
		Graphics(800, 600, 32, 60)
		
	EndIf

Wend
End

Function enableMaximize(hWnd:Long)
	Local tmp:Int = GetWindowLongA( hWnd, GWL_STYLE )
	tmp = tmp | WS_MAXIMIZEBOX
	SetWindowLongA( hWnd, GWL_STYLE, tmp )
	DrawMenuBar( hWnd )
End Function




Perfect, that's what I was after!

I have made a cleaner example with both minimize and maximize buttons and put this into the code archive for everyone to use:

http://www.blitzbasic.com/codearcs/codearcs.php?code=1595

Thanks a lot!!!

oh btw if you want to know if the window is minimized you can use IsIconic just like IsZoomed (mabey make it not update while minimized).

EDIT: OH you did :D that'll teach me

Well "Appsuspended()" can be found in the bmx docs. :)
I dug there quite long. But sadly the docs lack of examples.