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. |