About | Forum | Gallery | News | Order the XPT | Products | Rants | Security | Services | Workshop
Home » Services » Courses

Product Sheet: Windows GUI Programming

Radsoft offer professional in-house, onsite, and online courses in a number of subjects including Win32 system programming, Win32 GUI programming, and remedial courses in the C programming language. Current venues include northern Europe, Scandinavia, Australia, and the Far East.


Admission to the online course 'Win32 GUI Programming' is pursuant to the applicant having the necessary prerequisites to complete the course. Information about these prerequisites is sent on request.


The in-house and onsite courses follow a strict curriculum and require ten full days of study over one weekend. The online course is paced with very reasonable time limits. In all cases, it is of vital importance that all students fully master previous materials before moving on.

Fees & Payment

Payment is made before the start of the course and in full. Payment details are supplied on request. Payment is by wire transfer only.


This course is not a 'sightseeing tour' of the Win32 API, but a model for learning how to build efficient Win32 executables from available resources while following requirement specifications.


Week One

Skills Review

  • Remedial work with the C language
  • Review of side effects in C
  • Working towards one's own programming style in C
  • Understanding the compiler (MSVC 5 or 6)

The Windows programming model

  • Event-driven programming
  • Windows messaging and message flow

Building an application framework

  • The bare essentials (Hello World in a window)
  • Menus
  • Menu helpers: toolbars, tooltips, et al.
  • Stringtable resources

More on WinMain

  • hPrevInstance
  • Who calls WinMain
  • Who gets the command line first
  • Writing your own entry point
  • ANSI and Unicode
  • ShowWindow and 'show values'
  • Creating window classes
  • GetStockObject, GetSysColor
  • Extended window styles
  • Window 'procedures' and their instantiation

Common Dialogs

  • Function and types of 'common dialogs'
  • OPENFILENAME, GetOpenFileName, GetSaveFileName
  • Multi-zero-terminated filter strings
  • OFN_ flags
  • Installing hooks
  • Print and Page Setup dialogs
  • Find and Replace dialogs
  • Registering Windows messages


  • Accelerator resources
  • Loading accelerators
  • Translating accelerators


  • Modal and modeless dialogs
  • Creating dialogs
  • Checking for dialog messages
  • Dialog 'procedures'
  • Dialog controls
  • Contents of dialog messages
  • Communicating with dialog controls
  • The six original dialog controls
  • The newer 'common controls'
  • Initialising for use of common controls
  • Dialog styles
  • Stand-alone dialogs: 'the right way'

Property Sheets

  • Property sheet pages
  • Property sheet headers
  • Transitioning code from dialogs


  • Overview
  • Device contexts
  • The 'hamburger principle'
  • Selecting objects
  • What to delete, what to leave alone
  • Creating off-screen objects
  • Bit block transfers
  • Stretching bitmaps
  • Pens, brushes, fonts, geometric objects


  • Overview
  • Static linking vs. dynamic linking
  • Build-time dynamic linking vs. runtime dynamic linking
  • The DLL entry point
  • Exporting code and data
  • The module definition file

Week Two

Practical Requirement Spec: 411

  • Introduction to the spec
  • Preparing the framework
  • Adding the menu items
  • Editing and integrating the toolbar
  • Putting code behind the concept: listboxes
  • Opening and saving application data files
  • Checking for file changes
  • Transitioning to the newer list view
  • Why use a list view and not a list box
  • Code simplifications
  • NMHDR, catching WM_NOTIFY
  • Routing code efficiently
  • Deciding on a file format
  • Opening and saving files
  • Use of the Clipboard
  • Registering a clipboard format
  • The Clipboard chain
  • Opening the clipboard
  • Emptying and setting data to the clipboard
  • Pasting in data from the clipboard
  • The Global* family of memory functions
  • GlobalSize, GlobalFree, GlobalLock, GlobalUnlock
  • Further features, getting ready for delivery

Additional Study (Week Three)


  • The screensaver library
  • Running code through library window procedures
  • The configuration dialog
  • Where the application name comes from
  • Required string resources
  • Required icon resources
  • How to make a screensaver 'tick'
  • Where the screensaver device context comes from
  • Calculating screen real estate
  • Erasing the screen background
  • Initialising from and saving configuration data


  • WinHelp basics
  • WinHelp as a super-set of RTF
  • Using Help Workshop
  • Transitioning to HTML Help Workshop
  • Setting up keywords and links
  • Setting up the contents file
  • Setting up file links

Tweaking with the Tribe

All the Rest

Trimming WinMain

Other Development Models

Where to go from here

Course materials include full source to tutorials and solutions.

About | Buy | News | Products | Rants | Search | Security
Copyright © Radsoft. All rights reserved.