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. edit: and heres the code that should, but doesnt :( | 
| 
 | ||
| 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: | 
| 
 | ||
| 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. |