QC1302 - GUI and C/C++ Applications I
Mario Giannini

 Texts Programming Windows 95, Charles Petzold, Paul Yao, Microsoft Press.
Foundations of Visual C++ Programming for Windows 95, Paul Yao, IDG Books

1 take-home programming midterm
1 in-class multiple-choice and essay style final exam
If test can not be taken on schedule, it must be taken following week.


Handed in on printout, no disks unless specifically asked for.


Grading is broken down as follows:
Midterm/Final 60%
Homework 25%
Participation 15%

Grades are broken down as follows:
100 = A+, 99 to 95=A, 94 to 85=B, 85 to 75=C,
74 to 65=D, below 65=F

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 students two weeks prior to the final exam. A grade of incomplete is granted at the instructors discretion, taking into account the students grade average and ability to complete class assignments.

 Goals The goal of this class is to take the student from an introduction of Graphical User Interface programming, to an intermediate understanding of the Windows API. The Windows 95 and NT operating systems will be used as a programming model, with differences between 32- and 16-bit programming approaches. The latter part of the class will deal with Rapid Application Development, centralizing study on the Microsoft Foundation Class.

Session 1: Introduction
Graphical User Interface History
Windows versions
1.0, 2.0, 3.0, 3.1, 3.11, 95, NT Workstation, NT Server
GUI Concepts
Messages and the Message Queue
Homework: Enter, compiler, and run the Hello World program
Challenge: Design a C++ class to wrap a basic Windows Application

Session 2: Windows Basics - A Minimum Windows Program in C and C++
Review of Hello World
Programming Conventions
Registering and creating windows
Windows Procedures
Message Handling
The Clipboard
Homework: Alter last weeks homework to display a message when user clicks client area.

Session 3: Menus and Graphics
Menu processing
Adding a menu option
Responding to a menu choice
Enabling/Disabling, and altering the menu at runtime
The Graphics Device Context
GDI Drawing functions
Homework: 1) Add a File… Exit menu option to last weeks homework
2) Add a menu item that toggles it's own check mark.
3) Change the mouse event so that instead of a message, it displays the click coordinates

Session 4: Graphics continued
Coordinate systems
System Metrics
'Enumerating' functions
Homework: Write a program that lists the available font names to the screen
Challenge: List each font in it's own typeface

Session 5: Dialog Boxes and Messages
Dialog Boxes
Modal and Modeless
Responding to events
Control messages
Homework: Create a 'logon' style dialog, with password control

Session 6: Printing
GDI and the printer
Mapping Modes
Escape statements
Basic reporting
Homework: Create a 2-page report, that prints 1 and a half pages of text.

Session 7: File and memory
File operations
File control
Files as memory and communications streams
Win16 vs. Win32
Virtual memory
Memory management routines
Homework: Load a text file into memory, and display it.
Challenge: Sort the file

Session 8: Microsoft Foundation Classes
Document/View architecture
Application Classes
Window classes
Homework: Generate 'Hello World', using AppWizard and MFC
Midterm assigned - Due next class

Session 9: MFC continued
On????? Functions
Message Maps
MFC as an API 'wrapper' class
Homework: To be announced

Session 10: MFC View classes
CView vs. CFormView
View and Document interaction
Basic view functions
Homework: Create a calculator program, with a CFormView-derived view

Session 11: MFC Document classes and Menus
Data storage
Creating with Visual C++
Responding to and handling events

Session 12: MFC and GDI and Events
OnDraw, in Detail
The CDC object
Mouse and keyboard events
Mouse drag-and-drop operations
Homework: Create the 'scribble' program

Session 13: MFC and Dialog boxes
Creating and invoking
Dialogs as base classes
Dialog interaction
Homework: Create the logon dialog. Invoke it as part of your program startup code.

Session 14: MFC Database and Internet classes
A basic introduction to databases and SQL
CDatabase and CRecordset
Recordset operations
Socket and internet basics
MFC Classes
Review for final exam

Session 15: Finishing
MFC review and project development
MFC and OCX controls
Final exam