| 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 | 
| Homework | Handed in on printout, no disks unless specifically asked for. | 
| Grading | Grading is broken down as follows: Grades are broken down as follows: 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