Menu in graphics mode

BlitzPlus Forums/BlitzPlus Programming/Menu in graphics mode

Maverick357(Posted 2004) [#1]
I need to create a menu in graphics mode (800,600) and when the grahics mode is activated/created, blitzcc freeze.
The only possibility to escape is killing the blitzcc task.

Menu functions are GDI functions, and Graphics are from Directx.
The GDI function CAN use a Directx screen to use all GDI function but it don't seen to work with BlitzPlus.
Why ? And how to pass this problem ?

Is there any other option/command to create a menu in graphics mode ?


Jimbob(Posted 2004) [#2]
Is it fullscreen?
If not, just use the GUI functions to create a window, then a canvas for all your graphics stuff. And then you can have a menubar on the window.


Maverick357(Posted 2004) [#3]
Hello Jimbob.
No, in window mode graphics.
I need to use graphics instructions for sprites/tiles management/creations.
There seem no possibility to use graphics commands in the canvas like Loadimage, plot, line, ect... with BB+

But i know that is possible to mix GDI command in a DirectX window because there is a lot of games/emulators/editors (programmed with Delphi or C++-Compilers) that use it.
My books about DirectX programming say it too.
RPG Maker 2000 for example programmed with Delphi use this option to create a window with Menu and the map-editor inside, with left a zone for list of objects and one or more windows for palette of tiles.

This is exactly what i need for my program of Game-Creator.
Is there any possibility to do it ?
Or BB+ is only a restricted graphics OR GUI devellopment compiler ?


soja(Posted 2004) [#4]
There seem no possibility to use graphics commands in the canvas like Loadimage, plot, line, ect... with BB+


Maybe you're just not doing it right? Try this example:
; Create GUI
Global wndMain = CreateWindow("Blitz Window", 100, 100, 200, 200)
Global lblMain = CreateLabel("Hello from BlitzPlus", 5, 5, 120, 20, wndMain)
Global canMain = CreateCanvas(5, 30, ClientWidth(wndMain)-10, ClientHeight(wndMain)-35, wndMain)

; Init Stuff
SetBuffer(CanvasBuffer(canMain))
CreateTimer(60)

; Main Loop
Repeat : MainLoop() : Forever

Function MainLoop()
	Select WaitEvent()
		Case $803  : End
		Case $4001 : Render()
	End Select
End Function

Function Render()
	;Cls if you want
	Color Rand(256), Rand(256), Rand(256)
	Rect(Rand(ClientWidth(canMain)), Rand(ClientHeight(canMain)), Rand(10), Rand(10), True)
	FlipCanvas(canMain)
End Function

You can even have multiple canvases if you want to!


Maverick357(Posted 2004) [#5]
Yes, this is wath i need :-)
Thank you very much Soja.

BB3D & BB+ is not so bad after all ;-)