Visual Studio Express 2005 and the Platform SDK

1. Download and install Visual C++ Express 2005.
2. Download and install the Windows Server 2003 R2 Platform SDK or web install
Note: The PSDK default location is C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2, we will refer to it as C:\Program Files\MS_PSDK
3. To enable windows.h and other typical windows development APIs in Visual C++ Express go to
Tools > Options > Projects and Solutions > VC++ Directories and set the following:
Executable files: C:\Program Files\MS_Platform_SDK\Bin
Include files: C:\Program Files\MS_Platform_SDK\Include
Library files: C:\Program Files\MS_Platform_SDK\Lib

4. In a notepad, open C:\Program Files\Microsoft Visual Studio 8\VC\VCProjectDefaultscorewin_express.vsprops
add the following to AdditionalDependencies: " user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib"
5. Enable the win32 api in the project setup wizard, open this file in Notepad
C:\Program Files\Microsoft Visual Studio 8\VC\VCWizards\AppWiz\Generic\Application\html\1033\AppSettings.htm
comment out the following lines (after IS_EXPRESS_SKU) as follows (approx line #440)
// WIN_APP.disabled = true;
// WIN_APP_LABEL.disabled = true;
// DLL_APP.disabled = true;
// DLL_APP_LABEL.disabled = true;

test project 1 - console
Test your configuration by compiling and running the following application:
Set it up as a Win32 Console Project (right before you click [Finish], click Application Settings and select console application).
#include <windows.h>
#include <tchar.h>
#include <shellapi.h>
int _tmain(int argc, _TCHAR* argv[])
    ShellExecute(NULL, _T("open"), _T(""), NULL, NULL, SW_SHOW);
    return 0;

test project 2 - win32 gui
Set this one up as a Win32 Console Project at first but later choose windows application (right before you click [Finish], click Application Settings and select windows application).

If you don't select 'windows application' and do console again, you will want to go to
Project > Project Properties > Configuration Properties > Linker > System and set 'Subsystem' to "Windows (/SUBSYSTEM:WINDOWS)" in the dropdown, because you are using win32 api gui elements, and WinMain() instead of main().
#include <windows.h>
#include <tchar.h>
#define WIN32_LEAN_AND_MEAN          
  //create the main window
    WC_DIALOG, //predefined const WC_DIALOG for dialog boxes
    _T("My Window"), // title text of the window
    400, // x
    100, // x
    200, // w
    200, // h
    NULL, // parent window handle -  NULL
    NULL, //  
    NULL, //  
    NULL  //  
  //display a message box
    NULL, // parent window handle - NULL
    _T("Message - Hello World"),
    _T("Title of Message Box"),  
    0 // style
  return 0;

Deploy Your Application
To deploy an application, the client will need to download
vcredist_x86.exe for Visual C++ Express 2005 SP1. Then the client should be able to run any .exe you have compiled.
code snippets are licensed under Creative Commons CC-By-SA 3.0 (unless otherwise specified)