Tuesday, 10 November 2009

Windows 7 Is to Vista What XP Was to 2000

Filed under: Software Applications — Jan Goyvaerts @ 19:33

It seems that whenever Microsoft introduces a new version of Windows that includes major changes, they always need a follow-up release to get things right. Actually, that’s a good thing. It’s much better for the follow-up release to get things right rather than immediately making more major changes. If Windows is stable as a platform, it’s easier for application developers to support all the various versions of Windows that people are running today.

The major changes in Vista were stricter security policies and a new device driver model. This caused compatibility problems with software that didn’t follow the rules such as storing user data in c:\Program Files instead of the user’s data folder. That concept was introduced with Windows 95, but only not actually enforced until Vista. It took a bit of effort tracking down and fixing some of those issue with the Just Great Software products too. Hardware compatibility was also a problem if manufacturers didn’t provide updated drivers and the hardware wasn’t popular enough for a Microsoft driver to ship with Windows itself.

Windows 7 is essentially Windows Vista done right. The security policies are still the same, but the implementation has been polished, requiring far less clicks on that Continue button. The device driver model is also unchanged and manufactures have been shipping Vista-compatible and thus Windows 7-compatible drivers for several years now. Unsupported hardware is now mostly obsolete hardware.

What took the most work in making Just Great Software ready for Windows 7 was updating our various web sites to say that, yes, we support Windows 7. No important changes had to be made to the products themselves, because we’d already done all the hard work with the release of Windows Vista. The most significant compatibility problem we’ve discovered to date is that the drop-down lists on the toolbars in RegexBuddy and RegexMagic, such as those for selecting the regular expression flavor, show only half the button for dropping down the list. The fix for that will be rolled up as part of the next free minor updates for these products.

The most obvious new feature in Windows 7 is the redesigned taskbar. Whether you like the new taskbar or not, at least Microsoft did a good job of making sure existing applications work well with it. It even works well with Delphi applications that don’t set Application.MainFormOnTaskBar := True. That’s a feature CodeGear introduced a few Delphi versions ago for improved compatibility with Vista.

There’s a remarkable similarity between this story and that of Windows 2000 and XP. Windows 2000 was Microsoft’s first attempt to wean the world of the non-Unicode 16-bit/32-bit hodgepodge that were Windows 95, 98, and ME and onto the fully Unicode and fully 32-bit Windows NT. But due to software and hardware compatibility problems, many PC vendors continued to ship Windows 98, so people could run their old applications and games and use their old hardware. A lot of applications and hardware simply did not support Windows NT, making the move to Windows 2000 a big one.

Windows XP fixed that situation by being released in Home and Pro versions as well as simply by being released a few years later. Software and hardware developers had had the time to make their new offerings compatible with Windows 2000 and thus XP. The major new feature in Windows XP were the Windows themes. Instead of 1995-style gray rectangles, the windows in Windows were now blue and slightly curved, at least in the default theme. This instantly made software that didn’t support themes look outdated. But by providing two versions of a critical DLL, Microsoft made sure that those old applications still worked perfectly well, allowing them to keep their old looks.

The internal version numbers of Windows make this strategy clear. Remember Windows 3.0 and 3.1? Same story. Then Microsoft stopped using normal version numbers. Windows 95, 98, and ME are internally numbered 4.0, 4.10, and 4.90. Windows 2000 and Windows XP are actually Windows 5.0 and 5.1. Windows Vista is Windows 6.0, and Windows 7 is Windows 6.1. Seriously.


  1. Since you mentioned it, what is the correct way to get the dropdown width in Windows 7? So far we’ve just had to swap out the TP_SPLITBUTTONDROPDOWN code with a constant.

    Comment by Craig Peterson — Wednesday, 11 November 2009 @ 0:42

  2. We use the ExpressBars library from Developer Express for the toolbars in RegexBuddy and RegexMagic. They fixed the issue in build 47. The fix is that they’re now using GetSystemMetrics(SM_CYHSCROLL) to get the drop-down button width when the operating system is Windows 7. I don’t know if this is going to be relevant to your code because they weren’t using TP_SPLITBUTTONDROPDOWN in the first place. Note that I’m talking about an actual combo box on a toolbar, not about a tool button with a drop-down menu.

    Comment by Jan Goyvaerts — Wednesday, 11 November 2009 @ 9:59

  3. I was using Windows 2000 and then moved to XP then I moved to Vista and found its not as fast as XP and back again, I sticked with XP. To me(a basic user) XP is very fun and good.

    Comment by herretoej — Tuesday, 5 January 2010 @ 22:39

Sorry, the comment form is closed at this time.