What was wrong with using GTK with VBScript Language bindings?
(
http://www.gtk-server.org/embedded.vbs.txt)
I mean no offense, but I can tell your rather new to most of this- I gather this purely from your apparent fascination with gradients. One of my first Subroutines was for painting a gradient in a variety of styles, and the first ActiveX Control I created was as well.
I've experimented with similar ideas (generalized GUI framework for scripting) but I didn't want to use it for VBScript, I wanted to use it with BCScript. Unfortunately I refuse to settle for a simple premise such as adding public methods that simply add new items to a control array. Controls.Add() would have worked perfectly, but unfortunately I could not find a way to properly sink events. I already had/have a rudimentary method (I could simply hook the event to a Evaluator function, in either my older VB6 version or my newer C# revisit) the issue (at least with VB6) was that I wanted a generalized method- I didn't want a event handler set that only worked for forms or certain controls, I wanted a way to actually sink events completely generically, much as VBControlExtender allows for ActiveX Controls (but I wanted this for <all> control and object types). I managed to get a almost working version by manually implemented COM interfaces like IConnectionPoint2, but the whole thing was pretty much a rube goldberg device standing on a house of cards, something that comes with the territory when you start dealing with low level COM interfaces and literally edit the memory of Object Vtables to get around the fact that some COM interfaces have methods that are VB6 keywords. I learned this first with IEnumVariant, I had my BCFile library working so that I could use For Each and iterate through all the files in a folder, and the custom implementation would retrieve each item one by one, rather then the makeshift method usually implemented, which is to just defer to a collection class (that is, grab all files at once and return the collection's IEnumVariant Implementation) The thing worked perfectly in the IDE, but crashed when compiled. And with all the various memory copies and modified object vtables, not to mention window subclassing debugging was anything but easy. I managed to trace it to a single instruction but was never able to determine the true cause.
Thankfully, with C#, this might be a little easier to implement, if I decide to allow it to be used as a sort of scripting language. Events are far easier to handle in a more generic fashion, especially thanks to reflection. (although the typelib information library was and is a powerful tool in VB6, when you don't have to language constructs to take advantage of the information, the information is useless).
Other notes:
Is your F: drive in some way special?