# Windows Programming
## Introduction

This book aims to be a comprehensive source for any developer who is interested in programming for the Windows platform. It starts at the lowest level, with the Win32 API (C and VB Classic) and then goes over to MFC (C++). Beyond these basic sections, it will cover COM, and the creation of ActiveX modules from a variety of languages. Next, it delves into the Windows DDK, and talk about programming device drivers for Windows platform. Finally, it moves on to the highest-level programming tasks, including shell extensions, shell scripting, and finally ASP and WSH.
Other topics that will be discussed here are: Writing screen-savers, creating HTML help modules, and compiling DLL files.
This book will focus on topics that are specific to Windows, and avoids general programming topics. For related material the reader is encouraged to look into Wikibooks other works, they will cover general programming, ASM, C, C++, Visual Basic and Visual Basic.NET and other languages and concepts in greater detail. Appropriate links to these books are provided.
The reader is assumed to have a previous knowledge of the programming languages involved. Specifically, prior knowledge in C, C++, and Visual Basic is required for certain sections of this book.

## Table of Contents
### Section 1: Windows Basics

* Windows System Architecture
* User Mode vs Kernel Mode
* C and Win32 API
* <Windows.h>
* Handles and Data Types
* Unicode
* Dynamic Link Libraries (DLL)
* Programming Windows With OSS Tools
* Resource Scripts

### Section 2: Win32 API and UI Controls

* Message Loop Architecture
* Interfacing (Mouse, keyboard, and timer messages)
* Window Creation
* User Interface Controls
* GDI and Drawing
* Dialog Boxes
* Input-Output
* File Management
* Memory Subsystem (heaps, virtual memory)
* Multitasking
* Interprocess Communication
* MDI Programs
* Registry API
* Security API
* Winsock

### Section 3: Microsoft Foundation Classes (MFC)

* Microsoft Foundation Classes (MFC)
** Classes Hierarchy

### Section 4: Dynamic Data Exchange (DDE), ActiveX and COM

* Dynamic Data Exchange (DDE)
* COM and ActiveX
* COM Programming
* DCOM and COM+
* Multi-language programming examples
* OLE Programming

### Section 5: Device Driver Programming

* Device Driver Introduction
* The DDK
* Driver Structure
* Driver API
* Terminate and Stay Resident (TSR)
* Virtual Device Drivers (VXD)
* Windows Driver Model (WDM)
* Vista Driver Migration

### Section 6: Shell Programming

* Programming Shell Extensions
* Extending IE
* Programming Screen-savers
* Programming Services
* Programming CMD aka Windows Batch Programming
** Sample FTP script
* Control Panel Applets
* Windows Script Host
* ASP
** JScript
** VBScript
** PerlScript
* Compiled HTML Help and Help API

### Appendices

* Resource Script Reference
* Obtaining the SDK
* Obtaining the DDK
* Obtaining MASM
* Obtaining the HTML Help Workshop
* Key Combinations
* 64-bit Windows Migration
* Windows Vista Migration
* Lists of Available APIs and related libraries
* Wine

## Further Reading
### Wikimedia Resources

Programming Languages:
* C
* C++
* BASIC
* Active Server Pages
* JavaScript
Information about Windows:
* Subject:Microsoft Windows
Related topics:
* Ada Programming/Platform/Windows
* Guide to Windows Commands
* C# Programming

### External Resources

* Advanced Win32 API Newsgroup
* Microsoft Developers Network
* Petzold, Charles, "Programming Windows", Microsoft Press
* Hart, Johnathan, "Windows System Programming", second edition, 2001. ISBN 0201703106
* Gordon, Alan, "The COM and COM+ Programming Primer", 2000, ISBN 0130850322
* Oney, Walter, "Programming the Windows Driver Model", second edition, 2002. ISBN 0735618038