C++/GUI Development Lab

Mario Giannini


Text Inside Visual C++, by Kruglinski


The C++ Programming Language by Stroustrup

Writing Solid Code Microsoft Press


The final project for this class is an application left to the students decision. It must incorporate topics covered throughout the semester and individual research. The project will be handed in during it’s several stages of development, and may be discussed with the instructor at any time.

Tests 1 Take home midterm.


Grading is broken down as follows:

Project 60%
Midterm 15%
Homework 15%
Participation 10%

No 'upgrades' will be permitted for homeworks, or assignments unless previously agreed upon with instructor. No more than two homework assignments will be accepted from a student on the final day of class.

A grade of ‘incomplete’ must be requested by the student two weeks prior to the final day of class. The decision to issue an incomplete, or not, is made solely by the instructor and will be based upon the student’s work completed to date (which must also be handed in with the request).


The goal of this class is to develop experience in project design, development, and completion. C++ and GUI topics and algorithms will be explored and discussed in an advanced level. Code re-usability, design principles and creative algorithms will be stressed throughout the semester.


This Syllabus applies to the special class that includes GUI principles. In an attempt to provide a good class, extra one-on-one sessions will be provided where students will have a chance to discuss project development with the instructor.

Class # Class Outline
1 Stages of development
Top Down Programming
Project Maintenance
Project or Make files
.H and .CPP file organization

Homework: Prepare documents for project specifying operation, design, and implementation.

2 Windows Programming
What is GUI
Even driven vs. procedural programming
GUI Terminology
Event, Callback, Message

3 Windows Programming continued
What is SDK
The ‘generic’ program
Message loops
Window Procedures
Window Classes
An introduction to MFC (The sales pitch)

4 Identifying ‘shortcuts’, to get your project done on time. MFC Class overview
MFC as a wrapper for SDK
What classes does it create
Different types of projects
How to modify and over-ride the behavior of the standard classes
Resource Editor
Adding buttons, edit fields, and other child-window components
What exactly does MFC, AppWizard, and ClassWizard do for you?
Homework: Start creating screen prototypes for your project

5 Debugging and MFC
The CObject debugging ability
Common MFC problems
Memory Management
How MFC uses memory
Win16 vs. Win32 memory management

6 The Document and View Classes
Where to store different types of data
The View class functions
Interacting with the user
Event Handling
Responding to events from different control types

Homework: Identify what in your project should be in the view class, and what’s in the document class. Midterm
7 The View Class, continued
GDI Functions, and the CDC class
Drawing shapes
The Document class
Document saving and loading
New documents
Homework: Write the Serialize() routine for your document class

8 Dialog Box classes
Creating a Dialog box
Invoking and displaying
Setting and retrieving values from a dialog box
Homework: Complete all dialog box interaction with your project

9 Dialog Boxes, Completion Database Classes
Databases and Recordsets
Queries (filtering and ordering)
Homework: Submit list of all recordset classes in your project

10 Printing and Print Preview
Database-style reports
Common Dialog interface

11 In-class discussion: Problems in project development
Please come to class prepared to discuss problems or roadblocks with your projects.

12 Advanced bitmap manipulation Bitmap display masks
Mapping modes
Advanced database access
Multiple table access
Behind the scenes of the CDatabase class

13 Using the component gallery
Classes and OCX’s

14 Project Review and Discussion
Please come to class prepared to demonstrate your project, and discuss your approaches and problems.

15 Win16 vs. Win32 versions of MFC
DLL Creation
Internet Socket Classes
OCX Creation

Comments or questions should be sent to mario@openroad.org