
WildBill
PatronContent Type
Profiles
Forums
Events
Everything posted by WildBill
-
Thanks for the compliments. It's good to hear that you're interested in improving Win2k as well I'll be happy to share whatever I can if you need any help. I went through every file in TClock3 from top to bottom and I located the GDI leak. It was actually Win98 problem -- apparently the Windows TransparentBlt() call has a GDI leak in Win95 and Win98. Fortunately TClock3 has a replacement for Win95, so I simply told it to use that for 98 as well. I also found quite a few other GDI and memory leaks in my code, and I put try...catch blocks around everything I could find that allocates something and deallocates it later. If there are any further leaks, they should be architectural in nature (such as having a finalization routine not get rid of everything that the corresponding initialization routine creates). I tested the newest version on my Win98 box and it's performing much better. I've updated the download link at the top to point to the new version.
-
It should run on XP. I tested it on XP Home SP2 and it ran for me, though the tray didn't paint correctly. While it runs on 98, it definitely doesn't play well with it and I probably have a GDI resource leak somewhere. I'll have to see if I can refactor the code to make resource leaks go away. One thing of note is that the interface doesn't show up by default -- you have to right-click on the clock and select "TClock3 Properties" to make it show up. I went through the Revolutions Pack thread and I'm really impressed. You're making the whole OS over I'd love to see if it can be ported to Win2k since that's all I run (except for testing specific problems that people point out). I saw that you were having problems getting it to run on Win2k -- I don't know how your software works but I wouldn't mind offering some help if I can. I use a local and/or global hook in TClock3; if you're doing something similar I can probably help at least a little since I had to deal with lots of OS issues already in getting TClock3 to run. At least maybe I can try to steer you around the pitfalls that I fell into I also have a small alpha program in the XPize forum here called SmoothText that overrides Windows DLL behavior by using a global hook, loading the DLL that I want to override, using VirtualProtect() to allow changing the code, and altering it to point to custom routines. I don't know if you're attempting anything similar, but I've managed to make it pretty reliable on Win2k if that might help you. I don't know if Win98 can do what SmoothText does, but you surely know a lot more about 98 than I do. SmoothText tries to render *all* text in Win2k using sub-pixel aliasing (sort of a poor-man's ClearType without violating the patent). Subpixel-aliasing text was invented by Apple in 1981, so I've read, so it should be safe.
-
LOL, you're testing with the same skin I did. WindowBlinds skins don't normally come with rebar or start menu arrows, so I made some of my own and they come with TClock3. They use MagicPink transparency if you decide to use them. I'm seeing the black-on-black problem as well, both on the start menu and on the taskbar buttons. It appears to be a problem with the subpixel anti-aliasing code and Win98. When I turn it off they draw properly and a lot faster. I haven't seen the ghost taskbar button yet or the memory usage. Is there a way to get a proper task manager in Win98? I've been using Win2k since 2001 so I'm not really familiar with Win98 anymore. The problem with TClock3 still hanging around when Explorer crashes is a known problem. One of these days I need to get it to exit when that happens but to date is just hasn't been a high priority. I have a lot of other things that I have to do today so I can't guarantee much but I'll try to learn what I can. One other thing: you should turn the cache setting off. I had it disabled in the code since it was causing all kinds of instability issues in Win2k as well. I don't know if it's related to memory usage or to something else. I saw on the Win98 forum that there is another program that does some pretty incredible Win98 skinning, with "native skinning". I don't know if that technique would help me or not, but if someone could explain to me what is meant by native skinning I'd appreciate it.
-
I did some testing on a Win98 box and made some changes that get it to run (see the top of the thread for an updated download link). It's not as good as it is under Win2k, but it's worth testing. I have a whole new respect for Win2k now; Win98 is WAY more fragile. Compared to Win2k it crashes if you just breathe on it wrong.
-
I wiped an old hard drive and set up Win98SE with a development environment. The two things causing crashes were the links to SetLayeredWindowAttributes and the CPU monitor. I now have TClock3 running in Win98, but there are still some visual glitches. I think these are solvable and I'm working them one at a time. As I type this I have everything but the tray window being skinned, with some glitches in the task buttons. With luck I might get everything resolved tonight now that it's running.
-
TClock3 shares the same registry settings area as TClock2. I suppose a brute-force method of ensuring a clean install if you had TClock2 installed previously is to delete the HKEY_CURRENT_USER\Software\TClock2 key in your registry, but it would mean that you would lose all your TClock2 settings as well (or perhaps just rename the key so you don't lose the settings).
-
I took a look at it but it doesn't help me much. It looks like the global hook is on, which is strange since it should default to off. What happens if you run noglobal.bat instead of starting TClock3 directly? That should force TClock3 to start with the global setting off. Also, did you have TClock2 previously installed? I'm wondering if you might have had something turned on from TClock2 that might not work properly in TClock3, like the something from the Alarm or Synchronize tabs (which I've never tried).
-
I added code to make sure that only Win2k and newer can call SetLayeredWindowAttributes, and I updated the download link at the top of the thread (version 0.2.6). Form what I saw, I doubt that was the problem, but you never know. I'd hate to have to wipe one of my extra hard drives and install Win98 just to try it, but I will if it still fails for you. If you care to try it again, please keep me posted on how it works out.
-
Have you tried TClock3? You'll probably have to run the Win98 Explorer, but it might be able to skin the whole taskbar with a WindowBlinds skin (download a skin, rename the .wba to .zip and extract it, run TClock3, enable "full skinning", and click the big button to import the WindowBlinds .uis file that was extracted).
-
I've posted version 0.1.5 of my text-smoothing program here: Please try it out and send me as much feedback as you can. Something like this is really hard to get perfect since it means having to track down all the special cases. One known bug is that the "k" character shows up blank in Courier New (heck if i know why). I'm open to suggestions as to what to do about that one. This program isn't perfect and you should expect text glitches, but it's very stable and works well most of the time (it's only the first version, after all). If you dig though the code you should see that it's very simple to override a DLL routine, and so there are lots of possibilities with this technique. Don't expect results as good as ClearType, since that does some pretty advanced things (which is why it's patented). This uses only the most basic subpixel-antialiasing techniques (invented 25 years ago if you can believe it), but it's better than nothing. Edit: Uploaded SmoothText 0.1.5 and edited the download link. Changes are: 1. Visual changes that should improve text positioning.
-
I know that one of the Holy Grails is to get 32-bit alpha-blended icons working in Win2k. I haven't achieved that yet, but I've got something working that might get us there in the future. I've been suspecting that we might have to override default behavior to get them working. I decided to try something similar that would also be of a benefit to Win2k users that could also serve as a pilot for overriding things, and it's almost ready. I have a program that overrides many of the text-drawing functions by attaching a global hook to all processes, and the result is that I have system-wide subpixel antialiasing working in Win2k. It's not perfect yet and there is one showstopper bug (when you close the program everything that is running crashes), but the text is absolutely gorgeous. It's not ClearType -- ClearType is much more sophisticated than the crude method I'm using, but the result is still pretty spectacular. It's also a very simple program, and with this technique it might be possible to override how icons are loaded in the future so that alpha blended icons might eventually be possible. The way I override stuff is to load the GDI DLL into memory in each hooked process and call a Windows API function that lets me overwrite the code. My technique is really simple -- I change the first 5 bytes to jump to a custom drawing routine that draws the text to a buffer, calling the original Windows routine when I need the text drawn. This doesn't work on XP as XP has better memory protection to guard against trojans, but Win2k is just fine with it. It means that we can override the behavior of just about any DLL function without altering the DLL's at all. If anyone is brave enough to want to try it I can post it, but beware -- when you close the program, be prepared to have everything crash. I run it before I run everything else (including TClock3) and it works well. It requires DirectX 7 or greater as it was the only way to get decent performance. Edit: It looks like I've got the crash problem solved -- now the program only needs some polishing
-
New version (0.2.5) - Fixed sub-pixel aliased text rendering - Lots of bug fixes - Lots of new full skinning settings - Supports tiling the main taskbar and rebar gripper images - Added a big button to the Full Skinning tab to import WindowBlinds skins - Trying to fix deficiencies with WindowBlinds 4 where close/max/min buttons don't render properly if they're alpha-blended .TGA files (so far I can only fix it when you drag the window) I've updated the download link in the top post to point to it...
-
I have my 0.2.5 version directly reading WindowBlinds .UIS and .SSS files and I've implemented tiling for the main taskbar image and for rebar grippers (the tiling code is generic but I haven't implemented the UI or registry settings yet for tiling other images). I post my code in each version I release, but no matter what I did I couldn't get VC98 to compile the original TClock2 code :/ I'm mainly a Delphi programmer and when I decided to make TClock3 I ported TClock2 over to Delphi first. One of the things that has driven me crazy in the past has been stability (or the lack of it). I did a lot of rearchitecting for 0.2.3 and converted it to at least a partial object-oriented design. The thing that really helped stabiliy was adding a TWindowManagerAccessor class that manages lots of things for the purpose of thread-safety (like access to images). All of my classes are contained in clock.pas, if you're interested. At the moment I'm trying to get TClock3 to correct some of the deficiencies of WindowBlinds 4 on Win2k and earlier. For instance, if you use a WindowBlinds skin that has alpha-blended .TGA images for the close, minimize, and maximize buttons, WindowBlinds 4 doesn't render them properly (you get black areas around them where it should be alpha-blending). So far I have TClock3 painting them properly when you move windows but not otherwise, and it's driving me crazy.
-
Good idea. I've edited the initial post to point to the newest one. The main executable is TClock3Test.exe, and it's in there (though I agree it's not obvious -- I need to rename it when it nears completion). TClock3 skins the taskbar for Win2k and earlier, and it also spruces up the desktop icons. Here is a screenshot I took of my laptop last month that uses it (on Win2k): It uses WindowBlinds skins, though you don't have to have WindowBlinds installed to use it. If you don't have WindowBlinds, there are just a few steps you need to take to get a skin: 1. Go to Stardock's WinCustomize site. 2. On the left side, click the WindowBlinds link to go to the WindowBlinds section. 3. Find a skin you like and download it. You should download a file that has a .WBA extension. 4. .WBA files are really .ZIP files. Rename your .WBA file to .ZIP and extract it in a directory somewhere (warning, they usually contain a LOT of files, so you should extract it in its own directory). Then you can use TClock3 with the skin. Start TClock3, right-click on the taskbar clock, and choose "TClock3 Properties" from the popup menu. All tabs but the last one (the one that says "Full Skinning" affect everything EXCEPT skinning, with the exception of the Start Button tab (where you set the start button image). These tabs are just as they were in TClock2, with just a few additions. To skin the taskbar, go to the Full Skinning tab and enable it with the check box. Then, for each subtab, browse for the appropriate image file in the folder where you extracted the WindowBlinds skin. If the image is a .TGA file then the "Alpha" checkbox should be set to "Alpha", and if the image is a .BMP that uses pink areas to denote transparency then the checkbox should be set to "MagicPink". If it isn't either of these things (such as for the taskbar's main image) then leave the checkbox to "none". When everything is set, click "Apply" to tell TClock3 to set everything or "Ok" to have it set everything and close the popup window. The software is alpha and (I know, I know) isn't all that user-friendly yet. I eventually want it to be able to directly read WindowBlinds skins but I haven't done that yet. Here is an earlier MSFN thread where I first introduced TClock3 that has a lot more info on getting it to skin everything.
-
It's mainly intended for Win98 through Win2k, but I've only tested it on 2k and XP as that's all I have running. It has a lot of code inside to try to accommodate 9x but as I haven't tried it I don't know how well it will render. The API calls it relies on exist since Win98 so I don't expect major problems. Of them all, XP has the strictest memory protection so since it passes that test I would think that it should run fine on 98.
-
I guess no one has tried it yet?
-
I've made a couple of enhancements and uploaded TClock3 0.2.4: - Added a checkbox to the Desktop tab that lets you hide desktop icons in addition to icon text (though if you click on where the icons used to be the desktop still acts as if they're still there -- I haven't figured out yet how to prevent this). - For the desktop icon text, taskbar button text, and start menu text (but not the clock text) you can specify a width percentage in the range 25..400. This lets you make your font appear thinner or fatter. - Fixed a couple of bugs where I was calling code that wasn't thread-safe instead of the thread-safe version. You can get TClock3 0.2.4 here. Has anyone tried TClock3 yet? Anyone have any feedback to offer/help needed/etc? Any screenshots?
-
HP laptop running Win2k SP4 (yes, really!), TClock3 0.2.3, and XPize 4.5.1, with a new wallpaper for November.
-
After months of work I have a new version of TClock3 available for people to play with. It's been re-architected from top-to-bottom and should be a *lot* more stable. I don't claim it's bulletproof, but it's very very usable. It even runs on XP, though task buttons and the system tray don't paint correctly there (something I haven't yet figured out). I've tested this on multiple Win2k boxes and it works very well. I encourage people to give it a try and send feedback, if you're inclined (and post screenshots if you really like it ) Here's a basic list of what's new: - partial Start Menu skinning (not perfect, but ok for a first try) - better font rendering - support for min/max/close button halos if you're also running WindowBlinds (because WB4 doesn't do them) - start button overlays - you can have different fonts for the clock, taskbar buttons, start menu, and desktop if you use the full skinning option - optional multi-line text on task buttons (make the font smaller and give it a try) - if the global hook option is on, moving windows under the taskbar repaints it on the fly so it really behaves like glass (make sure you have at least a decent video card for this). - you can save your settings to an .INI file (and load them back). It makes switching skins easy... - supports start button bitmaps that have animated frames after the usual five (no, it doesn't animate them yet but it can read them properly if you tell it how many frames are in the image). The start button overlay requires that you turn on the "global hook" option and restart TClock3 (if you don't, the overlay won't repaint itself properly). If you also want to try button halos, you have to turn on the "skin other windows" option as well. The program isn't perfect, and I still consider it alpha (maybe almost beta), but it's very usable IMHO. I really need feedback if I'm to really improve it... Download link edited to newest version New version (0.2.9) - Tried to remove some race conditions that could cause the clock area to be much wider than it should be. New version (0.3.0) - Added command-line option -loadini=filename where filename is the name of an .INI file that is in the same folder as TClock3Test.exe (JUST THE NAME, DO NOT INCLUDE ANY PATH). This will force TClock3 to load the .INI file at startup. New version (0.3.1) - Made some changes to the startup code that should improve stability New version (0.3.2) - Fixed a bad bug where some apps would refuse to close if TClock3 was running. - If Explorer crashes, TClock3 will also exit rather than remain running. New version (0.3.3) - Added ability to skin window borders - Massive changes to internal structure and user interface New version (0.3.4) - Fixed a TON of divide-by-zero bugs that could cause crashes - Added code so it will cooperate with SmoothText 0.1.7 or greater. New version (0.3.5) - Made some major architectural changes (with more to come) squarely aimed at improving stability. The program is MUCH more stable now. - Lots of other bugfixes (e.g. the start button overlay and button halos work better) - Improved and expanded skin importing - Had to change the way this works with SmoothText (stability issue). You'll need to upgrade to SmoothText 0.2.2 to use SmoothText with this. The PC I tested Win98 on has a really crappy video card and driver, so I don't know if the visual glithces I saw are Win98 issues or driver issues. While TClock3 runs, sometimes the clock background, system tray, and taskbar buttons wouldn't paint properly. I'm posting it because I think it needs more Win9x testing beyond the old laptop I used. Unfortunately, subpixel-aliased text won't work for desktop icons in Win98 since it can't read the desktop background in Win9x. Transparent taskbars also aren't possible in Win9x for the same reason. However, it can perform subpixel-aliasing on taskbar text since it doesn't need the desktop background for that. If the clock background doesn't paint properly, try using a .BMP image for the system tray skin (I only tested alpha-blended .TGA files). In general, if you see visual glitches in Win9x, try using .BMP images instead (with alpha blending set to either None or MagicPink). TClock3 itself comes with a MagicPink.bmp file for just this purpose of getting the clock to paint correctly if all else fails. You can get TClock3 0.3.5 here:
-
I migth eventually try another stab at getting 32-bit icons to work in Win2k, but at the moment I'm trying to get TClock3 0.2.3 firmed up (it's pretty much been re-architected from top to bottom but the maximize/minimize/close button halo feature isn't as stable as I want it to be yet--the rest is just about bulletproof at this point and even runs on XP). I've learned a lot about the 32-bit icon problem, though, and it looks like it's most likely a problem with the treeview component. It looks like the treeview component stores all icons in a single giant image file, and when I send the command to retrieve the image file the alpha values in it are wrong. This tells me that any solution would necessarily involve somehow overriding how the treeview component works, at least in the EXPLORER.EXE process. I don't yet know if this is doable without investigating, but I have a sample of code that overrides existing Windows code in a running process (for capturing window contents), so it seems at least *theoretically* possible (though I can't say how easy or difficult it would be without digging a lot deeper). It's also possible that the problem isn't the treeview component itself but the mechanism for loading icon resources; in that case I would have to find where that happens and possibly override that, but no guarantees. It looks like a really tough problem to solve, but possible at least in the theoretical sense. For all I know, it might involve overriding both the treeview component (for painting the icons) as well as loading them...
-
TClock3 beta available for the bave...but need hosting
WildBill replied to WildBill's topic in Windows 2000/2003/NT4
Here's another little shot to show another thing I'm working on...halos for window buttons. It's still way too unstable to release, but the halos are finally working. Since WindowBlinds 4 doesn't support them on Windows < XP I wanted to see if I could get them another way. Now if Stardock could only update WB4 to handle them since it's definitely possible... -
TClock3 beta available for the bave...but need hosting
WildBill replied to WildBill's topic in Windows 2000/2003/NT4
Here's a taste of what's coming in TClock3 0.2.3 - Refactoring lots of code to make it more reliable - Fixed a lot of bugs when the taskbar sizing bar isn't hidden - Added a Full Skinning...Start Menu tab, supports partial start menu skinning (not by any means perfect yet, but usable) - Global Windows hook rather than a local one (at the moment it's optional until I'm 100% comfortable with it). The global hook lets TClock3 detect movements of most other windows and lets it repaint the taskbar on the fly so it really behaves more like glass (not perfect, but works pretty well) - With the global hook active, has support for an optional start button overlay that extends beyond the taskbar (actually, the overlay can appear regardless of the hook setting, but it won't repaint itself properly if the hook is only a local one) - The beginning of getting it to work on XP, but not nearly ready yet. It at least doesn't crash 100% of the time now... - Plays better with WindowBlinds 4 (it won't let WB override the Start button image). WB still insists on painting its rebar grippers, though, though that's not a big deal (of course, if Stardock had decided to better support Win2k I never would have bothered with all this). Lots more to do, of course, but I figured it was worth a screenshot. The active glass stuff requires a fast graphics card if you want really snappy repainting -- it's *okay* on my Radeon X800 Pro, but it's killer on the X1800 Pro. Thanks to ImageShack for Free Image Hosting -
Windows 2000 background icon transparency
WildBill replied to XibaD's topic in Windows 2000/2003/NT4
On bare Win2k, I don't know, but I'm investigating the possibility of doing it with TClock3. From what I've learned so far it will probably require that Active Desktop be enabled, though. With AD I can get to the bare desktop background (which I would need to do it properly), whereas without it I can only get to the desktop after everything has been painted on it (so far, at least). The one thing I really need to figure out is how to paint an alpha-blended icon in Win2k. The standard icon-painting call won't do it. Edit: Some quick digging on MSDN shows that the only way to do it the "standard" way (using the ImageList drawing routines) is with comctl32.dll version 6, which only comes with XP and isn't redistributable. I'm digging to see if I can get to the bitmap data for the icon, which might allow me to use the standard AlphaBlend() call to paint an alpha-blended icon onto the desktop (AlphaBlend is available on Win98 or greater). I should point out, though, that this would only work for the *desktop*, since that's what I'm overriding. It would have no effect on other listviews, so the value might be dubious. Well I've been at it all night and it doesn't seem possible so far. I can get the images out of the image list just fine, but all alpha information seems to be lost -
TClock3 beta available for the bave...but need hosting
WildBill replied to WildBill's topic in Windows 2000/2003/NT4
One more update, the last for today... - Fixed some problems with rendering the system tray (though there are still glitches when TClock3 is first started, which I'm still working on) You can get version 0.2.2 here: -
TClock3 beta available for the bave...but need hosting
WildBill replied to WildBill's topic in Windows 2000/2003/NT4
I just uploaded TClock3 0.2.1, which you can get here. It fixes bugs in 0.2.0 where the taskbar wouldn't behave properly if you tried to move it from one screen edge to another, and overall better supports different screen edges (I refactored all the code that handles it).