An NT class Windows will not crash at all, and in all likelihood if you misplace a pointer while running under Windows 9x, you will simply crash another program that is running. You could also crash the system, but it would not be permanent (you could just reboot). The chance of actually damaging anything is very slight, especially if you make sure your EMS routines are very safe before you start using them (e.g., wrap everything up in some [tt]
SUB[/tt]s that make sure you only use valid already-allocated memory addresses and stuff).
However, my recommendation if you want to design your own GUI system is to use an object-oriented language. Graphical interfaces are inherently object-oriented -- a window, a scrollbar, an input box, a button, a text label, a menu, a menu item, etc., they are all distinct and self-contained, and they also all share certain functionality (e.g., they all have a coordinate on the screen and a size, and they can all be asked to draw themselves; in addition, most of them store a string of some kind, for instance the text on a button, in an input box, or in the titlebar of a window). You could use a language like Java or C# to design the interface in a platform-independent fashion, using a bitmap buffer as your drawing target. Alternately, you could extend the existing GUI system with your own classes with their own custom rendering methods. Either way, it's much more powerful an approach than using QB for a GUI.
That said, designing a proper GUI in QB is a good challenge for any programmer, especially since you have to work around QB's lack of objects and lack of references (you could use an array as an object pool and use indices as references, but that still doesn't generically handle containers). It's something I might try myself if I ever had the time
