As I go I notice small bugs that would cause havoc later on and be really quite hard to spot. I've actually worked on getting myself organized too so I have a todo list and a method. I don't think there's any point in posting about my method until I proven to myself that it works (and then it will only be that is works for me). I am still wrestling with a GUI system and I've decided something small and hard coded really isn't going to cut it - I need something reusable and quite seperate from my project.
So first question is - has some one else done this for me? Well microsoft has - they have the framework - which to me is a big rusty cage of cogs and springs in pot of green bubbling slime - it's all voodoo (I have little practice reading others code, it's something I need to work on) with little documentation. I guess it's easy to use but you don't know why you're doing things a certain way. If you don't know why you are doing certain things bugs are always going to seem extra intimidating. Their GUI system on the face of it looks very nice and all the source code is there (so you can work out why if you're determine - but for reading code I prefer printed and alas no printer). So I may steal bits of it once I have the foundation of my own system up and running. As I'm not using the framework then that's the frameworks GUI pretty much out.
Well second there's a book called "DirectX 9.0 User Interface Design and Implementation". It's not an awful book but it's not good - it could have been at least half the size for one thing. It really does waffle on at the start about things that anyone buying this book will almost certainly know - who starts learning DirectX by creating their own User Interface Library - no one! It would probably sell more by reducing the price and size. The descriptions of the actual code are pretty brief too, he doesn't describe what everything is going to be used for. This, of course, is no problem to look up as you write but surely the books purpose is to explain this kind of stuff. He doesn't give a reason why his design is this way, why not to do it another way - that's really what the book should have had to make it good or even excellent. At the moment it's more like a code repository. The following quote really sums it up for me:
Nowadays, in a world of skinnable apps like media players and
instant messengers, users can customize the look of their controls such
that they are non-rectangular. This can be implemented in Direct3D
by using alpha tested textures. However, this is an advanced topic that
is beyond the scope of this book.
Surely this is the exact scope of this book. Everything and everything about DirectX GUI's is what should be covered especially using alpha blending as it's it so basic. And we all want to use non-rectangle controls in a computer game!
Despite this the code seems to work and probably works very well. It's written in C++ but I assume most C#er's aren't going to find this a problem as they've probably programmed in this too and conversion is a snip (infact the code I've written looks a lot cleaner but I think that's just an intrinsic advantage C# has over C++ which tries to straddle both worlds of OOP and C-procedural). If you're looking for a GUI solution, at this point in time, it's defintely worth a look. There are also a number of articles over at GameDev but I didn't find the design philosphy to be my sort of thing at all. Still worth checking though!