Thanks for the tip. I haven't even tried skinning the start menu yet, though I knew that TClock2 was supposedly capable of it. It's definitely on my list. Since my last post I've fixed the clock problem, and I have it appearing properly now, and the system tray is nicely skinned. I also have support for 32-bit .BMP files somewhat working, such that taskbar buttons and the tray skin can now be alpha-blended with the taskbar background (I've learned that it's critical to double-buffer them to achieve proper alpha-blending). Next is to get proper alpha-blending of the Start button, and then move on to skinning the QuickLaunch buttons. In its present state it's certainly usable, though until I flesh out the executable it relies on registry entries that I've entered by hand. Last night I also got mouseover events working for the task buttons, and they highlight nicely when you move the mouse over them. The buttons don't have to have the same height as the default taskbar buttons either...I have logic which controls their width and height, based on number of tasks, taskbar size, and available rows/columns.
Edit: I can now skin the rebar grippers and rebar arrows (arrows appear when the bar is smaller than required to show all of the items), though I still have to implement mouseover support for the rebar arrows. Nevertheless, it's getting there. Toolbars might be a tough nut to crack, but I've already figured out how to set custom button sizes (MS's documentation appears to be *wrong* on that score), which is half the battle...
Edit: Quicklaunch buttons are now skinned, and it turned out to be pretty easy. All of the major components are now skinned, so now it's time to start optimizing it, fixing visual glitches, cleaning up the code, etc. Then I'll move on to Start Menu skinning...
Edit: Go up a couple of posts to see an updated screnshot...
Edit: I have much of the executable ported now, and it will soon be ready for the brave among you to play with. I've also added another screenshot here. Note the variable alpha...You can specify a transparency value for different parts of the taskbar, and different alphas for different circumstances:
- Clock/tray alpha
- Taskbar alpha
- Task button inactive alpha
- Task button active alpha
- Task button inactive mouseover alpha
- Task button active mouseover alpha
- Quicklaunch button inactive alpha
- Quicklaunch button active alpha
- Quicklaunch button inactive mouseover alpha
- Quicklaunch button active mouseover alpha
- Start button inactive alpha
- Start button mouseover alpha
- Start button active (pressed) alpha
- Taskbar gripper alpha
- Rebar gripper alpha
- Rebar arrows alpha
The taskbar alpha should have the lowest value (in this example, it's 64, and the inactive alphas for all objects is also 64). You should use higher alphas for other states, like mouseover, active (pressed), and active mouseover. Don't expect this to be fast, though I'm getting decent results without using any caching (and this laptop that I'm developing it on has crappy TwisterT shared-memory video). There is still a lot of work to do, as I get visual glitches when I resize the taskbar, but the basic stuff is working at least.
Edited by WildBill, 26 November 2005 - 04:09 PM.