Home Software Win32 Tutorials Sourcecode and Snippets Links to other sites About Catch22

Win32 Tips, Tricks and Tutorials

No MFC, No VB - pure Win32 C/C++ !!!


Presented here are a collection of programming tutorials for Windows. The tutorials cover various Windows programming topics, but most concentrate on the user-interface aspect of programming. All tutorials and source downloads are in the C programming language. No external libraries such as MFC are required to build the source code presented in these tutorials.

Mailing List

Receive updates about new software and tutorials as soon as they appear on this site. You can subscribe or unsubscribe to the list using the form below.
Enter your email address:
The list is hosted by FreeLists, and you can view their privacy statement here: www.freelists.org/privacy.html.

Please send any comments or suggestions to:

Tips and Tricks

Win32 Tips and Tricks
15 May 2001
A page presenting many useful tips for Windows programming.
Win32 Tips and Tricks - Part 2
14 May 2006
More useful tips for Win32 programming.
Visual C++ Tips and Tricks
26 March 2005
Lots of useful tips for using Visual C++.

Design and Implementation of a Win32 Text Editor

Brand new tutorial series, covering the design and implementation of Neatpad - a text editor written using pure C/C++ Win32 techniques. The entire range of functionality is covered - text file loading, undo and redo, unicode, user-interface details and memory management techniques.

Part 1 - Overview
29 Jan 2005
Introduction to the Win32 Text Editor series.
Part 10 - Transparent text
25 Feb 2006
Overview of the issues involved in rendering text selections.
Part 2 - Loading a text file the easy way
18 Feb 2005
Loading and displaying a text file.
Part 11 - Introduction to Uniscribe
27 Feb 2006
Introducing Uniscribe.
Part 3 - Scrollbars and scrolling
20 Feb 2005
Adding scrollbars and scrolling to the TextView.
Part 12 - Uniscribe Mysteries
1 Mar 2006
Looking at ScriptItemize and ScriptLayout.
Part 4 - Enhanced drawing and painting
19 April 2005
Improving the text display of TextView.
Part 13 - More Uniscribe Mysteries
2 Mar 2006
Looking at ScriptShape and ScriptPlace.
Part 5 - Mouse selection and highlighting
29 May 2005
Mouse input, window focus and selection highlighting.
Part 14 - Drawing styled text with Uniscribe
6 Mar 2006
Drawing styled text with ScriptTextOut.
Part 6 - Scrolling with the mouse
30 May 2005
Mouse selection and scrolling.
Part 15 - Integrating UspLib
6 Mar 2006
Migrating Neatpad to the UspLib engine.
Part 7 - Margins and long lines
7 Aug 2005
Selection margin, line numbers and long-line highlighting.
Part 16 - Keyboard Navigation
14 May 2006
Keyboard navigation with Uniscribe.
Part 8 - Introduction to Unicode
4 Dec 2005
An introduction to Unicode and character sets.
Part 17 - Piece Chains
12 Sep 2006
Editing text with Piece Chains.
Part 9 - Unicode text processing
4 Dec 2005
Unicode file support in Neatpad.
Part 18 - Unicode Text Editing
28 Nov 2006
Editing complex scripts.

OLE Drag and Drop

Tutorial series detailing OLE drag and drop, using pure Win32 C++.

Part 1 - Introduction OLE Drag and Drop
15 Feb 2004
Introducing the OLE and COM technologies.
Part 5 - Drop Source
16 Jun 2004
Implementing the IDropSource interface.
Part 2 - OLE Data Transfers
15 Jun 2004
All about OLE data types, storage mediums and data formats.

Part 6 - Drop Target
17 Jun 2004
Implementing the IDropTarget interface.

Part 3 - Implementing IDataObject
15 Jun 2004
Standalone implementation of the IDataObject interface.
Part 7 - Files and Explorer
Coming Soon!
Drag and drop files to/from explorer.
Part 4 - Enumerating FORMATETC
16 Jun 2004
Standalone implementation of the IEnumFormatEtc interface.

Part 8 - Streaming Data
Coming Soon!
Streaming data with the IStream interface.

Using Cards.dll

Three tutorials describing different ways to access the standard Windows cards.dll bitmaps.

Part 1 - Using the cards.dll API
22 May 2001
How to access the cards.dll API.
Part 2 - Direct bitmap access
1 Oct 2001
Accessing the cards.dll bitmaps as resources.
Part 3 - CardLib
4 Dec 2001
Introducing CardLib, a card-game programming library.

Docking and Splitter Windows

Three tutorials describing different ways implement docking and splitter windows.

Docking Toolbars - Part 1
20 Nov 2001
How to implement floating toolbars.
Docking Toolbars - Part 2
30 Jun 2002
How to implement docking toolbars.
Splitter Windows
22 May 2001
An example of a splitter-bar used to separate two windows.

Windows User Interface Tutorials

A collections of tutorials covering many different aspects of Windows user-interface programming.

Custom Controls from Scratch
20 Nov 2001
How to create a custom win32 control.
Custom Combobox
4 Jan 2004
How to customize the appearance of a combobox.
System Imagelist
2 Jul 2002
How to access the System Image List (AKA the Shell Icon Cache).
Custom MessageBox
30 Jun 2002
How to customize the standard MessageBox dialog.
Custom Scrollbars
5 Jan 2002
Introducing the Cool Scrollbar library, for customizing the appearance of scrollbars.
Flicker-free drawing
20 Nov 2001
Techniques to eliminate flicker from your applications.
URL Control
1 Oct 2001
A simple HTTP URL control.
Custom Titlebar
1 Oct 2001
How to insert buttons into the titlebar of a window.
Drive-list control
25 Aug 2001
A drop-down list displaying drive names and icons.
Directory-list control
26 Aug 2001
A directory-picker list box.
Customize date-time controls
23 Aug 2001
Improve the apearance of the date-time control.
Fixed-width font enumeration
22 May 2001
How to enumerate all fixed-width fonts in a system along with their sizes.
Masked Edit input
22 May 2001
How to filter specific keys-strokes from a standard edit control.
Introduction to Printing
22 May 2001
How to print from a Windows application.
Insert buttons into an edit control
20 May 2001
How to insert a button into an edit control.
64bit Scrollbars
2 Sep 2005
How to create 64bit scroll ranges using standard Win32 scrollbars.

Windows System Tutorials

Tutorials covering Windows System programming.

Undocumented CreateProcess
6 Jan 2004
Undocumented and hard-to-find information regarding the CreateProcess API call.
Reducing Executable Size
1 Oct 2001
A tutorial covering a variety of techniques for creating tiny executables.
Self-deleting Executables
1 Oct 2001
Techniques which allow an executable file to delete itself whilst running.
Memory Techniques - Part 1
20 Aug 2001
Memory management techniques for large file editors.
Memory Techniques - Part 2
30 Aug 2001
Memory management techniques for large file editors.

Windows NT Kernel-mode Programming

Tutorials covering Windows system and kernel-mode programming.

Introduction to Device Drivers
25 Mar 2005
Introduction to writing a simple Windows NT device driver.
Remote Debugging using VMWare
28 Mar 2005
How to debug a device-driver using WinDbg and VMWare.
Scheduling APCs
Coming soon
An example on how to use Asynchronous Procedure Calls.
Hooking kernel APIs
Coming soon
Techniques for hooking APIs in kernel space.
Process and Thread notification
Coming soon
How to use the new Process and Thread notification APIs.

Please send any comments or suggestions to:

Last modified: 01 August 2008 12:48:44