Hello, I am an Engineering Manager at Facebook with 13+ years in Ad Technology, Natural Language Processing and Data mining. (Learn More)
by Pravin Paratey


Years back, when I decided I wanted to be a windows programmer and began win32 programming, I didn’t have an easy tutorial I could follow. I had to trudge through reference books, API lists and code samples to figure out how to do simple tasks. I have written this tutorial to help you get comfortable with win32 programming and avoid many of the mistakes I made on my journey there.

We will start developing a tiny Drawing program and improve upon it as we move through the lessons. At the end of this series, not only will you have a full fledged drawing application but I hope you will have learnt enough of the basics of windows programming to feel right at home.


This tutorial is written for absolute beginners to windows programming. It is not intended to be used as a reference and so does not cover every aspect of windows programming. A basic understanding of the C++ programming language is assumed.

Platform and compiler

These tutorials and examples should run on all compilers from VC++ to the freely available gcc. The platform is windows from win95 and up. I am told that the programs can be compiled and run on *nix systems with wine.

The examples in this tutorial have been tested on Code::Blocks and Dev-C++. Both are free for non-commercial use. The next chapter guides you on setting up your development environment. If you experience any difficulties on your specific compiler, feel free to email me or pop in your question at the forums.

With the fall of hardware prices, ease of programming and increasing competition, being able to deploy applications quickly have become a priority. RAD tools like visual basic are preferred today. With .NET looking really promising, is win32 really worth learning?

I would say, it really depends on what you want to do. A good understanding of how win32 works will definitely help you write better programs with .NET tools. System drivers and such will still be written in win32, and systems with limited memory and limited computing power will definitely benefit from the speed and low memory requirements of well written win32 programs.


This is my first attempt at writing a tutorial. I may have forgotten to add certain things and overlooked others as trivial. Comments/suggestions/flames are always welcome at pravinp@gmail.com. Your feedback will help make this tutorial better and you might find yourself mentioned in the credits part of this document.

Official Homepage

The official version of this tutorial can be found at http://pravin.paratey.com/win32/. Check here for the latest changes and revisions to this document.

This document titled “Windows Programming Tutorial” is copyright © 2002-2012, Pravin Paratey.

You are free to mirror and distribute this document in any form so long at its contents are not altered and it is presented in its entirety with this copyright notice intact.