Tutorials

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.

Tips
Win32 Tips & Tricks
A page presenting many useful tips for Windows programming
15 May 2001
Visual C++ Tips & Tricks
Lots of useful tips for using Visual C++
26 Mar 2005
Win32 Tips & Tricks - Part 2
More useful tips for Win32 programming
14 May 2006
C & C++ Tricks
22 Jan 2012
User Interface
Insert buttons into an edit control
How to insert a button into an edit control
20 May 2001
Masked Edit Input
How to filter specific keys-strokes from a standard edit control
21 May 2001
Introduction to Printing
How to print from a Windows application.
22 May 2001
Fixed-width Font Enumeration
How to enumerate all fixed-width fonts in a system along with their sizes
22 May 2001
Customize date-time controls
Improve the apearance of the date-time control
23 Aug 2001
Drive-list control
A drop-down list displaying drive names and icons
25 Aug 2001
Directory list control
A directory-picker list box
26 Aug 2001
Custom Titlebar
How to insert buttons into a window's caption area
1 Oct 2001
URL Control
A simple HTTP URL control
1 Oct 2001
Custom Controls
How to create a custom win32 control
20 Nov 2001
Flicker-free Drawing
Techniques to eliminate flicker from your applications
20 Nov 2001
Custom Scrollbars
Introducing the Cool Scrollbar library, for customizing the appearance of scrollbars
5 Jan 2002
Custom MessageBox
How to customize the standard MessageBox dialog
30 Jun 2002
System Image List
How to access the System Image List (AKA the Shell Icon Cache)
2 Jul 2002
Custom Combobox
How to customize the appearance of a combobox.
4 Jan 2004
64bit Scrollbars
How to create 64bit scroll ranges using standard Win32 scrollbars
2 Sep 2005
Cards
Using cards.dll API
How to access the cards.dll API
22 May 2001
Cards.dll direct bitmap access
Accessing the cards.dll bitmaps as resources
1 Oct 2001
CardLib
Introducing CardLib, a card-game programming library
4 Dec 2001
CardLib Reference
CardLib Programmer's Quick-Reference
4 Dec 2001
Docking
Splitter Windows
An example of a splitter-bar used to separate two windows
22 May 2001
Docking Toolbars - Part 1
How to implement floating toolbars
20 Nov 2001
Docking Toolbars - Part 2
How to implement docking toolbars
30 Jun 2002
System
Memory Techniques - Part 1
Memory management techniques for large file editors
20 Aug 2001
Memory Techniques - Part 2
Memory management techniques for large file editors
30 Aug 2001
Self-deleting Executables
Techniques which allow an executable file to delete itself whilst running
1 Oct 2001
Reducing Executable Size
A tutorial covering a variety of techniques for creating tiny executables.
1 Oct 2001
Undocumented CreateProcess
Undocumented and hard-to-find information regarding the CreateProcess API call
6 Jan 2004
OLE
OLE Drag and Drop
15 Feb 2004
Drag and Drop Introduction
Introducing the OLE and COM technologies
15 Feb 2004
Implementing IDataObject
Standalone implementation of the IDataObject interface
15 Jun 2004
OLE Data Transfers
All about OLE data types, storage mediums and data format
15 Jun 2004
Enumerating FORMATETC
Standalone implementation of the IEnumFormatEtc interface
16 Jun 2004
Drop Target
Implementing the IDropTarget interface
17 Jun 2004
Drop Source
Implementing the IDropSource interface
17 Jun 2004
Neatpad
Design & Implementation of a Win32 Text Editor
Neatpad Text Editor
28 Jan 2005
Neatpad Overview
Introduction to the Win32 Text Editor series
29 Jan 2005
Loading a text file
Loading and displaying a text file
18 Feb 2005
Scrollbars & Scrolling
Adding scrollbars and scrolling to the TextView
20 Feb 2005
Enhanced Drawing & Painting
Improving the text display of TextView
19 Apr 2005
Mouse Selection & Highlighting
Mouse input, window focus and selection highlighting
29 May 2005
Scrolling with the Mouse
Mouse selection and scrolling
30 May 2005
Margins and Long Lines
Selection margin, line numbers and long-line highlighting
7 Aug 2005
Introduction to Unicode
An introduction to Unicode and character sets
4 Dec 2005
Unicode Text Processing
Unicode file support in Neatpad
5 Dec 2005
Transparent Text
Overview of the issues involved in rendering text selections
25 Feb 2006
Introduction to Uniscribe
Introducing Uniscribe
27 Feb 2006
Uniscribe Mysteries
Looking at ScriptItemize and ScriptLayout
1 Mar 2006
More Uniscribe Mysteries
Looking at ScriptShape and ScriptPlace
2 Mar 2006
Integrating UspLib
Migrating Neatpad to the UspLib engin
6 Mar 2006
Drawing styled text with Uniscribe
Drawing styled text with ScriptTextOut
6 Mar 2006
Keyboard Navigation
Keyboard navigation with Uniscribe
14 May 2006
Piece Chains
Editing text with Piece Chains
12 Sep 2006
Unicode Text Editing
Editing complex script
28 Nov 2006
Kernel
Introduction to Device Drivers
Kernel 101 - writing a simple Windows NT device driver
25 Mar 2005
Remote Debugging using VMWare
How to debug a device-driver using WinDbg and VMWare
28 Mar 2005