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.
Please send any comments or suggestions to:
| 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++. |
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. |
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 |
| 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 |
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. |
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. |
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. |
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. |
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