Course Catalog
Curriculum Guides
Buy Courseware
Technical Library
About Object Innovations
Contact Us

877-558-7246 (toll free)  

146.  Advanced Windows Programming Using Visual C++

Rev. 2.0


This course teaches advanced programming techniques using the Win32 API and MFC. It is intended for experienced MFC developers who wish to better understand the fundamental architecture of Windows NT/2000 and Windows 95/98 and to utilize advanced programming techniques to create industrial strength applications.


Module 1 begins with an overview of the Win32 architecture and the Win32 API. There is a discussion of the fundamentals of SDK Windows programming and MFC programming without the wizards. It then covers advanced MFC and Win32 programming topics including multi-threaded programming, DLLs, and interprocess communication. The fundamentals of COM are introduced, including the use of Visual C++ compiler support to create COM client programs.


Module 2 covers database programming topics for C++ programmers. ODBC is covered, including a sample program showing ODBC programming at the API level. The MFC CDatabase, CRecordset and CRecordView classes are discussed in detail. There is coverage of parameterized queries and joins. Microsoft’s Universal Data Access architecture is introduced, including a discussion of OLE DB. ActiveX Data Objects (ADO) programming in C++ is covered. An appendix covers programming with DAO.


Module 3 is devoted to various advanced aspects of MFC programming, pertaining primarily to the user interface. There is extended treatment of the Win32 common controls, including the tree view control and image lists. Advanced features of document/view are covered, including multiple document types, multiple views, and multiple panes. Advanced menu techniques are covered. Dynamic toolbars and dialog bars are discussed. Advanced features of GDI are covered, including bitmaps, metafiles and printing. Use of the Windows system registry is covered.


Extensive programming examples and exercises are provided using Visual C++ 6.0. Besides doing standalone exercises, during the course the student will develop several cumulative Windows applications. Self-extracting files are provided containing all the examples and laboratory exercises in the course.




·         Gain a firm foundation in Win32 architecture, including DLLs, processes and theads

·         Learn interprocess communication techniques based on the Win32 API

·         Learn the fundamentals of COM required for use of modern Win32 features

·         Learn how to implement database programs using the MFC database classes and ADO

·         Acquire advanced user interface techniques that are used in professional applications


Course Duration:  5 days.


Prerequisites:  A basic knowledge of Windows programming using MFC and the Visual C++ development environment


Module 1. Win32 Windows Programming Using MFC


1.      Win32 Architecture and Programming

Windows Operating Systems

Dynamic Link Libraries

Win32 API

Kernel Objects

Win32 Memory Management


2.      Win32 Programming

Win32 Program Flow

SDK Windows Programs

Console Programs

Windows Versions

Error Information

MFC Without the Wizards


3.      Dynamic Link Libraries

Dynamic vs. Static Libraries

DLLs to Manage Resources

Explicit and Implicit Linking

Linking to C Language DLLs from C++ Programs

MFC Regular and Extension DLLs


4.      Introduction to Threads Using MFC

Win32 Processes and Threads

MFC Thread Encapsulation

User Interface and Worker Threads

MFC Thread Synchronization

Thread Safety


5.      Processes in Win32

Creating and Terminating Processes

Process Data Structures

Process Kernel Objects



6.      Interprocess Data Communication

Interprocess Communciation in Win32

Memory-Mapped Files



Named Pipes


7.      COM Fundamentals


Classes and Objects

Globally Unique Identifiers



Instantiating an Object

Object Lifetime and Interface Negotiation

Initializing COM

COM Client Programming Model


Appendix A. Visual C++ COM Support


Using Type Libraries with Import Directive


Smart Pointers

Error Handling



Module 2. Database Programming Fundamentals Using Visual C++


1.      Form Views and Data Entry

CFormView Class

Converting a Dialog to a Form View

Creating a Form View with AppWizard and ClassWizard

Control Variables in Dialog Data Exchange

Data Entry User Interface Paradigm


2.      Introduction to ODBC

ODBC Architecture

Connecting to a Data Source

Executing SQL Statements

Retrieving Result Data


3.      MFC Database Classes

CDatabase and CRecordset Classes

Record Field Exchange

Scrolling in a Recordset

Recordset Status

Choosing a Data Source at Runtime

MFC Specification of SELECT Statement

Edits, Adds and Deletes

CRecordView Class


4.      More About ODBC

Using ODBC at the API Level

Parameterized Queries



5.      ActiveX Data Objects

Universal Data Access


ADO Object Model

Database Programming Using ADO


Appendix A. Data Access Objects


Microsoft Jet Database Engine

DAO Object Model

Creating Databases Using DAO

MFC DAO Classes


Module 3. Advanced User Interface Programming Using MFC


1.      Windows Common Controls

Win32 Common Controls

MFC Common Control Classes

Progress, Slider and Animation Controls

Bitmaps and Image Lists

Tree View Control

List View Controls


2.      Windows System Registry

System Registry

Win32 Registry API

Saving User Preferences in Registry


3.      Advanced Document/View Architecture

Document Templates

Multiple Document Classes

Multiple View Classes

Splitter Windows and Multiple Panes


4.      Advanced Menus and Toolbars

Dynamic Menus

Context Menus

Dynamic Toolbars

Dialog Bars


5.      Advanced GDI

Coordinate Transformations






System Requirements




·         NT 4.0 or Windows 2000

·         Visual C++ 6




·         Pentium 500MHz or equivalent CPU

·         128 Meg of RAM

·         At least 500 megabytes of free disk space

·         CDROM drive or networked to a server with a CDROM drive