Win32 programming tutorials

Welcome to, where you can find an assortment of Win32 and Winsock programming tutorials.

A good portion of the information on this site focuses on the often daunting task of Winsock networking, as information on this subject can be difficult to find. Although, we have also included detailed information on basic 'Windows programming'

C++ Win32 Tutorial Series

All tutorials and code snippets are designed to compile on Visual Studio 2005, 2008, and 2010 express editions. If using Visual Studio 2005, you will need to also download and install the Platform SDK. Both Visual Studio Express and the Platform SDK are freely available from the Microsoft website.

Currently we have covered Blocking Sockets, Non Blocking Sockets, and Asynchronous (async) Sockets. These subjects are broken up in to two different parts each (the client and the server), to keep things organised and to ease the learning curve.

Error handling has also been included on both Win32 and Winsock tutorials. As applications get more and more complex, error handling becomes essential. It is not that hard to implement and can save hours of frustration and wasted time.

Our basic windows series has now covered message boxes, basic window creation, and our new tutorial covering how to populate a window with buttons, edit boxes, and other GUI assets.

All Windows based tutorials use 'Multi-byte character set' instead of 'Unicode' (default for 2005, 2008, & 2010). The main reason is to prevent confusion with having to cast from LPWSTR to char and back again in later tutorials, making the lessons easier to follow in the long run. Refer to 'Prerequisites' in the tutorial main page to configure Visual Studio correctly.

Winsock UDP sockets will be covered shortly.

I would like to personally thank all of the people who have contacted me through Twitter for the continued support. It is highly appreciated. I look forward to keeping up the standard, and bringing more guides online in the future.

Stay up to date

Follow us on Twitter
Join in on the discussion on Twitter!