New WinBlitz3D GUI Demo

Blitz3D Forums/Blitz3D Programming/New WinBlitz3D GUI Demo

Kev(Posted 2004) [#1]
Hi

*EDIT -
http://myweb.tiscali.co.uk/blitzbasic/WinBlitz3D.zip

*EDIT this is an old post updated link.

thanks
kev


jfk EO-11110(Posted 2004) [#2]
Looks very promising. I assume the DLL isusing the windows apis gui functions? Is it going to support menus?


MRaven(Posted 2004) [#3]
Looks awesome... this would be a dream for all 3D application developer. Keep going. :)


Odds On(Posted 2004) [#4]
I get the wierd event message boxes when clicking any of the gadgets (apart from buttons), and the cube only spins while the mouse is moving.


TeraBit(Posted 2004) [#5]
Works fine here. The 3D bit fluctuates in fps a lot, but otherwise it's going on well. :)


Kev(Posted 2004) [#6]
jfk, yes menus will get added.

Chris, the events are correct. there pointers to the gadget. ive added the messagebox to track events thats all. the mouse move event is used to spin the cube.

TeraBit, that could be my fps code.

kev


JoshK(Posted 2004) [#7]
I'll be very interested if you can get the gadget layouts to resize like B+.


aCiD2(Posted 2004) [#8]
looks really cool but howcome the gadgets are 'old' :p looks awesome and im def. getting it when its propperly done :D


Jeroen(Posted 2004) [#9]
it looks a bit "Win95" to me, is it because of the font used, or?


Odds On(Posted 2004) [#10]



Jeroen(Posted 2004) [#11]
Hmmmm it must be my computer then....


Odds On(Posted 2004) [#12]
I made it look like that using a manifest file in XP.


Cold Harbour(Posted 2004) [#13]
Impressive work, Kev.


Wiebo(Posted 2004) [#14]
Cool stuff. I can't wait to give it a try!


Kev(Posted 2004) [#15]
halo, i will look into resizing soon. im just finishing menus there coming along fine.

chris i have your email, i will email you back sometime today.

kev


Skitchy(Posted 2004) [#16]
Why, oh why, oh why has it taken so long for somebody to do this?
Bloody brilliant work Kev. :)

Now the 2 standard questions : when, and how much? ;)


Kev(Posted 2004) [#17]
Skitchy i hope to have a fully usable version of the gui within a couple of weeks. i will be releasing as freeware, with a small charge for commercial use.

kev


Skitchy(Posted 2004) [#18]
Excellent. Thanks :)


Trixx(Posted 2004) [#19]
Excellent work Kev ! Thank you in advance :)


Red(Posted 2004) [#20]
The same thing is possible with B+ and B3D.


Jeroen(Posted 2004) [#21]
Ed: not entirely, you have to 'hack' by sending messages using a text file which is...a dumb method.


TeraBit(Posted 2004) [#22]
Or via network commands.


Kev(Posted 2004) [#23]
true, this is for people that did not buy blitz plus. and dont mind using .dll for extra GUI commands.

kev


Red(Posted 2004) [#24]
It's true.
This way is more easier for communication.


Kev(Posted 2004) [#25]
yes

to process all gui events, for a mixed 3D\GUI app i do this.

[CODE]

;wait for close window event...
While Process_EVENTS<>$803

Process_EVENTS = Waitevent(0)

; get events
Select Process_EVENTS

Case $401 ; gadget event.

End Select

; render and update 3d world.
UpdateWorld
RenderWorld

Flip

Wend

[/CODE]

like blitz+ event system.

kev


Red(Posted 2004) [#26]
I've tested DLL solution.
http://www.3dgametool.com/Eddy/SidePanel.zip
shot


JoshK(Posted 2004) [#27]
Ed, is that a usable lib, or an application written in the DLL? I am very interested.


Red(Posted 2004) [#28]
!)


JoshK(Posted 2004) [#29]
So most of your whole program is in the DLL?


Red(Posted 2004) [#30]
So most of your whole program is in the DLL?
Yes


But Kev's one will be a GUI lib. Look above.


Bug Face(Posted 2004) [#31]
Any news on this lib? Keen to see/use the next version!


Algo(Posted 2004) [#32]
Me too, what's the word Kev?


Kev(Posted 2004) [#33]
some news.

currently supported:

Windows
3DScene
Menus
Progress bars
Buttons push, radio, check
ListViews with columns
Treeviews
Requester file,save,notify
Slider

the above have extra commands for complete access, window/gadget access commands to change (maximize,minimize,active,resize,hide,show,ect..) also added are commands to retrieve the same type of information from created windows/gadgets. most gadget item adding/modifying are also near complete, with some gadgets we can now change there color.

theres still lots more i need to get done, before im ready to distribute a public beta. ive also rewrote the event handler, and now have a more stable and higher fps. Wiebo is also working on a GUIde WinBlitz3D layout exporter.

limited support is also added for gadgets below with commands being added/fixed. icons for gadgets,windows,menus still need adding.

Tabber
ComboBox
TextField
ListBox
Trackbar


Kev


electronin(Posted 2004) [#34]
Great work, kev! have you gotten text boxes to work yet?


Kev(Posted 2004) [#35]
electronin,there added and can be created but no events returned just yet.

kev


Bug Face(Posted 2004) [#36]
Sounds great, keep it coming :-)


Kev(Posted 2004) [#37]
BF, cheers.

ive just finished fixing some of the get gadget position x,y commands, ive also added access to status bars with multiple parts. text box's gadgets are also now working.

CreateStatusBar()
SetStatusText()
GetStatusText()
SetStatusParts()
StatusPartWidth()

its coming along.

Kev


Jeroen(Posted 2004) [#38]
nice Kev!


electronin(Posted 2004) [#39]
Awesome! stataus bars will be cool! can you type in the textboxes?


Kev(Posted 2004) [#40]
electronin, yes full text box edit/update is possable. combo box's are also done.

Kev


Bug Face(Posted 2004) [#41]
Hey, if you ever need a beta-tester :-)

Bug


bradford6(Posted 2004) [#42]
this looks great!

nice work!


Kev(Posted 2004) [#43]
ive uploaded a new example here.

http://homepage.ntlworld.com/pamela.poole/WinBlitz3D-demo.zip

example contains mixed gui and Jeppe Nielsen source code - break the glass.


MRaven(Posted 2004) [#44]
Awesome! It would be so great to have full windows gui control in Blitz3d. Keep up the good work, Kev.


Algo(Posted 2004) [#45]
Nice work Kev, works great except for the radio and check box don't seem to work.


bradford6(Posted 2004) [#46]
great job. the 3d in window is very nice.


Jeroen(Posted 2004) [#47]
nice! It's coming along. I noticed that the 3d window stops when moving the scroll bars, the text area doesn't work (only pasting text, not typing).


Bug Face(Posted 2004) [#48]
Excellent stuff, check box and radio seem to be having problems, but all else seems good!

Keep it coming!!

Bug


Robert(Posted 2004) [#49]
Hmm... is that 3D viewport a capture of the Blitz Runtime Window using SetParent?


Kev(Posted 2004) [#50]
@Jeroen & Bug Face, the gadgets are part of the tabber gadget group. they work when used under normal window gadget group, tabber gadgets still need more work. Jeroen theres two text gadgets one should work one should not?

@Robert, yes.

kev


bradford6(Posted 2004) [#51]
Kev,
nice work!

is it possible to have multiple 3d viewports without too much of a performance penalty?

will there be some sort of GUI editor?


Jeroen(Posted 2004) [#52]
Hi Kev,
True, one textarea works, the other does not. :)

The vertical scroll balk doesn't do anything, and both the scrollbars are very tiny (why?) and the return to their default location after releasing the mouse button. (They only move when you use the scroll bar arrows).
Alert boxes could be improved by always placing them on top.


Beaker(Posted 2004) [#53]
bradford6 - I think Wiebo plans to add support for it in GUIde.


Kev(Posted 2004) [#54]
Bill, Ive still lots to get done with 3dscene's. currently Create3DScene() displays the scaled viewport in the created window group. Well see how this works out. like Robin said Wiebo is writing a GUIde exporter.

Jeroen, the vertical scroll bar is working, its my mistake
not fixing the scroll bars after adding Jeppe's shoot the glass example. i realy need to code a better example. scroll bars return all events ive just not used them in the example. not sure i understand 'scrollbars are very tiny'? do you mean the scrollbars dragger.


Bug Face(Posted 2004) [#55]
what kind of window messages are getting back? Are you passing everything on?


Jeroen(Posted 2004) [#56]
Hi Kev,

Yeah sorry, I ment the scrollbar dragger. Basicly, the size should be relative to how much it can scroll. If it's a large portion, then it means a small dragger.
Your example is okay by me!

Are you going to implement tree views? (hierarchy)
Do you have a rough estimation for the first beta?


Kev(Posted 2004) [#57]
Bug Face, api events are picked up using a custom winproc. events are managed, Waitevent(),EventSource(),EventData().

for example using scrollbars Waitevent() returns a gadget event($401),EventSource() returns the HWND pointer to the gadget and EventData() return the event. up-arrow = 1,down-arrow = 2, dragger = 3. the event system is similer to blitz+

Jeroen treeviews support is added but still needs work, they can be created, ive still to fix a bug with adding to them. a public Beta version sometime soon.

Kev


Jeroen(Posted 2004) [#58]
Hi Kev! Excellent to hear that.

A more 'advanced' question. I once made a server for a game, first in Blitz3d, but later converted to BlitzPlus. This to get rid of the slowness of a Direct3D window which Blitz3D always opens.

Now, with your GUI, is it possible to *only* use the GUI (no 3d canvas), and have the same speed benefit as in BlitzPlus? How does this work?


Kev(Posted 2004) [#59]
Jeroen

when initializing WinBlitz3D a GUI window is created and the blitz runtime window is hidden. to use mixed mode gui/3d you create a 3d scene using Create3DScene(window,x,y,width,height,style) to position and size the 3D scene. ive not tryed any speed tests.

kev


Jeroen(Posted 2004) [#60]
Hi Kev,

Does it mean, when you 'hide' the 3D window, that it doesn't have the DirectX overload (is 'hiding' actually is 'not drawing' or does 'hiding' just mean 'not showing'?)


Kev(Posted 2004) [#61]
Jeroen, when not using 3d mode the runtime window is just hidden(can be show when required). a command could be added to destory it though.

kev


Jeroen(Posted 2004) [#62]
Hi Kev, that would be great.

When maximizing the window, the gadget stay their original size. Is it possible to e.g set fixed size for gadgets, and a percentage on the 3d canvas?


Bug Face(Posted 2004) [#63]
Something I wasn't able to get working in the WinWrap DLL I wrote for Blitz 2D (pre Blitz Plus) was the windows over the DirectX surface. Lot of people wanted it, but there were always redrawing problems I could never solve.

I think your response of basically saying "when you are in WinBlitz mode, the other window is hidden" is one I should have thought of. But!!!! Can you switch in and out of that mode?

Cheers matey!!

Bug


Kev(Posted 2004) [#64]
Bug Face

yes i have the same problem with the directx surface redrawing when putting windows over it, currently theres no way to switch back from mixed gui/3d mode.

ive started working on a winblitz3d version that requires no .dll one problem was trying to get function pointers(WinProc) working in blitz3d. ive got this working but still need to write the asm code to pass and return DefWindowProc() currently im using the addess of a bank passed over to a self modify code bank call. this works ok, i put an asm int3 into the winproc bank and when an event from the window is triggered using the custom winproc halts at the int3, ive also managed to return the address of a inline blitz function. im still looking into both ways for handling the custom winproc.

kev


Bug Face(Posted 2004) [#65]
Neat solution, I never took it that far, as BlitzPlus came out and at the time I wasn't using Blitz3D.

If you ever want a code monkey who can spend a bit of time helping you debug or add stuff (acording to your rules of course, it's your project) let me know, I'll lend a hand.

Bug


Kev(Posted 2004) [#66]
Bug Face,

ive now managed to hook blitz3d's winproc its now possable to add windows/gadgets directly on to runtime window and handle messages using a custom winproc while blitz still has access to its winproc.

if you have the coding time your help would be appreciated, i will email later.

kev


Tails(Posted 2004) [#67]
This looks fantastic, tried the demo and it is impressive!

Can't wait for it to be finished.

Keep up the good work kev it is appreciated.


Bug Face(Posted 2004) [#68]
Cool, my e-mail address is currently being swamped by about 1000 spams and I guess I almost never read the one published!!!

So you can get me on MSN or hotmail with (I'm sure you can stitch it together)

bug_face_uk at hotmail dot com

Bug


turtle1776(Posted 2005) [#69]
Hi Kev

This libary is pretty amazing work and extremely interesting to learn from.

A couple of points:

(1) I read in your readme.txt file that you are no longer working on this library now that Blitz Max came out. Maybe you could post something here about your plans? Alternatively, maybe you could make a Worklog entry and link to it from here?

(2) You should consider editing the link at the top of this thread so it points to the current html address of your library (which, for those who are reading about this for the first time, can be found in your signature a few messages above this). I stumbled across this thread and thought the file was gone when I clicked on that top link.

(3) I thought your use of ASM in Blitz was cool. I don't know ASM, but I assume you could use it in other ways to speed up some existing code or functions. Do you have any ideas on how it could be used? Any recommendations on how to learn it fairly easily?

(4) Is your custom WinProc actually close to a real one created through standard windows C++ calls?

Thanks again for this great source code! Truly amazing.


Kev(Posted 2005) [#70]

(1) I read in your readme.txt file that you are no longer working on this library now that Blitz Max came out. Maybe you could post something here about your plans? Alternatively, maybe you could make a Worklog entry and link to it from here?



things change, ive spent sometime with winblitz3d and some with blitzmax. a good thing though is ive started working on the docs and have made some modifcation to winblitz3d's events so that gadgets can be places directly onto blitz3d's runtime window. one problem i had with this was that gadgets would disappear when flip was called. this no longer happens.


(2) You should consider editing the link at the top of this thread so it points to the current html address of your library (which, for those who are reading about this for the first time, can be found in your signature a few messages above this). I stumbled across this thread and thought the file was gone when I clicked on that top link.



done :) i tend to forget these older posts.


(3) I thought your use of ASM in Blitz was cool. I don't know ASM, but I assume you could use it in other ways to speed up some existing code or functions. Do you have any ideas on how it could be used? Any recommendations on how to learn it fairly easily?


it might be possable, ive just not looked into it. i have spent many years learning asm on differnt computers, i started on the spectrum :) many years back. search the net tutorials.


(4) Is your custom WinProc actually close to a real one created through standard windows C++ calls?



yes, its simular. although a little more complex when adding new events :) they have to be picked up using inline asm.

kev


Damien Sturdy(Posted 2005) [#71]
are these updates available? Sounds bloody perfect! :D


Kev(Posted 2005) [#72]
Cygnus the update will be available as soon as possable, ive still bits that needs cleaning and modifying.

kev


Damien Sturdy(Posted 2005) [#73]
Cool. That would save us so much time :-) I hate GUI programming- I Made one of my own because nothing did what i required. This, however, is best fit for a current project.


Danny(Posted 2005) [#74]
Hi Kev, really great work! I've been looking for this for a long time.

I know you're not hot on this anymore, but there seem to be quite some trouble when you have multiple windows and a 3D scene going on?!

For example, I have a main window (with menu), a 3d Scene, and a floating window to edit some properties.
As soon as you enter an edit box, the 3D freezes! :(
This didn't happen with your older version.

Please understand I'm unfamiliar territory here so i have been hacking away blindly ;)
But I've noticed that by replacing

apiGetMessage(WinProcReturn,0,0,0)

in your current WAITEVENTS() function with the old

apiPeekMessage(WinProcReturn,0,0,0,1)

from your old EventHandler(), the 3d stays alive and happy! But using that will kill editboxes who'll go deaf and won't work anymore :/

I want to make use of several floating tool windows where the user can edit properties and settings, and it looks to me that when you have multiple 'windows' ontop of your main window, that things (events) get missed?!?!? (Again - no expert here).

Do you know of this and or any work arounds or fixes for this? Or am I expecting to much? I've been hacking at it for days to get it to work, but to no avail :(

cheers,
Danny


Kev(Posted 2005) [#75]
Hi Danny, yes theres fixes coming as soon as ive the time. things have changed a little.

im not sure if you have missed this.
http://www.blitzbasic.com/Community/posts.php?topic=50481

gadgets now are directly on the runtime window.

kev


Picklesworth(Posted 2005) [#76]
!!!!!!!!!!!!!!

Thanks, Kev.


Oh, just so everyone knows: This project uses WinBlitz3d.


Is the version at the top the same version that you sent me over email earlier? (Which included new popup menus).
If not, what has been changed? I need to know that so it can be cleanly shoved into my copy of WinBlitz which contains a bunch of quick changes made by myself. (And so that I know what's new).
Does it recieve the WM_CLOSE event yet?

I suppose I can now quickly switch the main window to the Blitz window, which would allow me to use BlitzClose to catch the window close event... Are there any known issues at all with having a GUI inside of the Blitz window?


Kev(Posted 2005) [#77]
Dylan the above link's the same as the older version from the last email. no theres no WM_CLOSE yet.

btw APE looking very professional, ive source some place on cd that adds windows XP theme support, i need to dig it out and include it with winblitz3d.

kev