Welcome to my laboratory. Boohahahaha
Published on January 21, 2004 By Ian Hanschen In Work Reports
Over the past couple days I've been getting side-tracked from the VESA version of BootSkin to work on a couple other projects.

First we've been having implementation issues for DirectSkin with a client - debugging on 9x is always fun. Working on a company a for company b basis is always interesting, as you start to get into the specifics. In this case we were looking at things like window-manager recycled handle values causing issues when 100+ dialogs were created and destroyed over the span of a couple seconds, that kind of thing.

Secondly we've hit a snag with DesktopX - some of the developers have been using the VB Forms 2.0 ActiveX controls for input on their objects. The objects rock, for example we have a really kickin media player that has a lot of polish. But unfortunately there are issues with the VB Form Controls. They're not redistributable without a VBA or Office developer license. DesktopX didn't really fit in the category of using either of those technologies directly - for example VBA was overkill for what we wanted to do, and we wanted to be able to support other active scripting languages. Also the containment requirements were rather strict, the controls want a lot of things that the ATL 7 ActiveX container does not provide - so they can act a bit flakey. And while we've gone and extended the base container to allow us to do some interesting things in DesktopX, modifying it to support the full ActiveX spec is simply not worth the time. And lastly, these controls do not show up as themed, because they're designed to support the windowless OC96 ActiveX spec, meaning basically they draw all of the contents by hand rather than using existing functionality. Classic-looking controls in a Stardock application is definately not a good thing - we're the people who turned theming into a big deal. Sure there were a lot of single apps out there, such as Winamp or Litestep, but noone has embraced theming as much as we have. So theming was really important.

Yesterday I spent a lot of time in WinDbg tracing through interaction between the VB Forms 2.0 control and the host, trying to figure out everything that needed to be supported that wasn't already. Lots of staring at assembly. An unfortunate thing I've found is that there are some helper functions in the VB Forms 2.0 code that make propput/get calls on the host and do a few other things. The propget helper will simply return TRUE to the calling function without error if a host does not implement an interface! To their credit, there is an MS QB article stating that the controls are designed to only work under VBA and MS Office, but still, what a pain.

After evaluating the issue last night, I decided to implement some controls specifically for DesktopX, using the ATL Simple Controls wizard and basing off of a few control types. I had already done this for button, checkbox, and edit box, but we really needed list & combo boxes. So my day today(among DirectSkin stuff and other fun) was spent implementing most of the support for this. I've tried to make sure that the interfaces are very similar to the VB Forms controls so it will be easy for the developers to move over, and also tried to make sure that the controls are as customizable as the originals. And they're themed, so that's always nice

Other than that it was a pretty boring day. I can't wait to get back on BootSkin, I think the true-color high res boot screens are going to blow people away.

Comments
on Jan 23, 2004
And lastly, these controls do not show up as themed, because they're designed to support the windowless OC96 ActiveX spec, meaning basically they draw all of the contents by hand rather than using existing functionality.


I wonder if desktopx will support windowless controls? It would kick ass because SVG viewer has windowless mode, and if thats enabled, Svg format allows for a whole lot of flexiability with alpha.