QC1302 - GUI and C/C++ Applications I
Mario Giannini
mario@openroad.org

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

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.

 Homework

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

 Grading

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
Windows
Events
Messages and the Message Queue
Multi-tasking
SDI/MDI
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
WinMain
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
Graphics
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
Graphics
Coordinate systems
System Metrics
Fonts
Windows
'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
Controls
Responding to events
Messages
Control messages
Homework: Create a 'logon' style dialog, with password control

Session 6: Printing
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
Memory
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
Basics
AppWizard
ClassWizard
Document/View architecture
Application Classes
Window classes
Homework: Generate 'Hello World', using AppWizard and MFC
Midterm assigned - Due next class

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

Session 10: MFC View classes
Views
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
Documents
Serialization
Data storage
Menus
Creating with Visual C++
Responding to and handling events

Session 12: MFC and GDI and Events
GDI
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
Dialogs
Creating and invoking
Dialogs as base classes
Dialog interaction
Reusability
Homework: Create the logon dialog. Invoke it as part of your program startup code.

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

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