views:

931

answers:

8

I have not used Windows Vista. I knew that many APIs have been changed/deprecated in Vista, so programs need to be fixed or configured to execute in XP Compatible mode.

So, what should windows programmer know when they move from XP/Vista to Windows 7?

+2  A: 

It think it is too early to know for sure, but I believe that there will only be minor changes in the API from Vista to Windows 7. I expect that if your program runs well in Vista, you will have nothing to worry about.

There is more likely to be new API's in Windows 7 that you could use, but few API's that were available in Vista that are no longer available.

XP to Vista was the major jump in the API, just like 98 to NT was, but the changes between NT and Windows 2000 for example were much less.

Rob Prouse
+1  A: 

According to here there is a new API for the new right-click taskbar functionality. For example, access to recent files.

lagoa89
+1  A: 

I think the first thing I'd look at when doing programs for Windows 7 would be Multitouch, it could help to improve usability and perhaps helps porting programs to mobile phones like iPhone.

schnaader
+1  A: 

At the PDC back in October, they had a bunch of sessions about programming for Windows 7. One that I thought was a nice general concept session was Windows 7: Design Principles for Windows 7. You can check out the entire list of Windows 7 related sessions here

bsruth
+6  A: 

For starters, and if history has taught us anything - don't rely on the Betas or CTPs, especially the early ones (I believe Windows 7 ship date is still sometime in 2010).

Having said that, I believe that Windows 7 shares a similar kernel to the Windows 2008 Server and Windows Vista SP 1 kernels as well as the same (or similar) security models. It's likely the same will apply to driver requirements too, but again too early to tell.

At this early stage, about all you could do is see if your application deploys, installs and runs under the Windows 7 beta. If you already have updated your application to run within the restrictions enforced by Windows Vista then I'd bet you will probably be safe.

If you are porting an application from earlier versions of Windows (XP or earlier) then I'd target Vista support first (handle/support the security model, etc).

With luck only minor changes may be required to jump to Windows 7, but really you'd have to look at Windows 7 closer to 2010.

At this stage we might see the .Net Framework 4.0 by 2010, so if your application is a .Net application, you might be tempted to upgrade to 4.0 to take advantage of new language features.

Edit: I almost forgot about this - (1) a whitepaper on Developing for Windows 7! If you're curious about the changes, this has a pretty in-depth feel to it.

Some particular points of interest/new features include:

  • "Windows 7 is designed to run on the same hardware as Windows Vista, and to be compatible with applications and device drivers that work with Windows Vista."
  • "With Windows BranchCache, clients can retrieve data from other clients in their own branch that have already downloaded the data, instead of having to retrieve the data over remote servers. "
  • "Built on the Sensor platform, the Windows Location APIs are a new Windows 7 feature that enables application developers to access the user’s physical location information. "
  • Here's the (2) main page.

    [(1) http://code.msdn.microsoft.com/Release/ProjectReleases.aspx?ProjectName=Win7DeveloperGuide&ReleaseId=1702 ]
    [(2) http://code.msdn.microsoft.com/Win7DeveloperGuide ]

    RobS
    Win7 is widely expected to ship in mid 2009, and the current beta is expected to be the only one.
    Will Dean
    A: 

    Since Windows 7 is still in a Beta phase, you're not sure at a 100% degree of what you'll find with the stable release. However, Microsoft published a very well documented site right for early Windows 7 developers. Here you can find a lot of stuff related to the new APIs along with some examples and news from development team. Another important fact you have to consider is the existence of .NET Framework . Among it's goal, one is to give you a layer of abstraction on the system below so usually you can run a .NET application on Windows XP or Windows Vista without having to mess around with low level APIs.

    Stefano Driussi
    A: 

    Unless you're a driver developer, use a platform-independent graphical toolkit library, no worries for you to implement stuff. Personally I'd prefer something like Qt or Java, but I guess the .Net API's will also stay compatible.

    FredV
    +1  A: 

    One thing that bit me from XP to Vista, was setting up some things in the registry now requires higher permission levels, I.e. my app setup some file extension/program associations using a method I have been using for years. This didn't work as a normal user (at least not globally) and required poweruser/administrator privilege, I haven't yet found a way to at least allow it for the current user.

    Also, the old WinHelp is gone (good).

    'Documents and Settings' folders have been moved to 'users' (good, should have been that way from the start!), but the CSIDL codes (which you should be using to specify special folders) are the same.

    WebFolders with scipting had been deprecated in XP, they may be gone now.

    New capabilities/formats for Icon files.

    Roger Nelson