Problem with scaled windowed mode

Blitz3D Forums/Blitz3D Programming/Problem with scaled windowed mode

Carolinaaa(Posted 2007) [#1]
Hello, let's suppose that i apply the graphics mode:

Graphics 640,480,16,3

It is for the app to be ran in windowed mode and scalable, however, the windows that is created is very small (i guess that around 300*200); yes, you can scale it and make it bigger, but how can you make that the scalable window created would be, in origin, 640*480?


Thank you.


Vertigo(Posted 2007) [#2]
I just now noticed this happens.. im so used to just clicking maximize when I use scaled window mode. One solution would be to use the um.. I believe its user32 dll and lib to set window position and size. I do not know of an internal solution.


Neo Genesis10(Posted 2007) [#3]
The window cannot actually be created at a specific location, im afraid. The only way to do this, as Vertigo suggests, is to use external DLLs to move the window after its creation.

Edit: Didn't read it correctly. So you want to rescale the window after its been created to 640x480?


b32(Posted 2007) [#4]
You could use api_SetWindowPos:
Graphics3D 640, 480, 0, 3
hwnd = SystemProperty$("apphwnd")
api_SetWindowPos(hwnd, 0, 0, 0, 640, 480, $40)
WaitKey()

As Vertigo and Neo mentioned, for this command to be available, you need to put 'user32.decls' in the \userlibs folder of Blitz.


Carolinaaa(Posted 2007) [#5]
Thank you, anyways, i just discovered how to do it using only blitz3d, just including two graphics commands:

Graphics 800,600,16,2
Graphics 640,480,16,3
SetBuffer BackBuffer()

Doing it makes the scalable window to be created in 800*600


b32(Posted 2007) [#6]
Nice! I didn't knew that.


Neo Genesis10(Posted 2007) [#7]
The first command sets up the initial window size while the second changes the resolution of that window. A nicely thought out workaround.