CTA - QC1402
GUI and C/C++ Applications Part 2
Mario Giannini
mario@openroad.org
Course Overview:
This covers advanced programming in C++ for Windows 95 and NT, centering on the Microsoft Foundation Classes (MFC), a popular application frameworks, and the Microsoft ActiveX/Component Object Model (COM) programming model. We will examine ways to create ActiveX / OCX components and ways to use existing components (through MFC and browser scripting languages.) Also, we will look at MFC support for areas such as databases and the Internet. We will also cover new Windows technologies such as DirectX/Direct3D programming for multimedia Windows, and briefly at the future of Windows development using emerging technologies like Java. Along the way, we will also look at advanced C++ language features like templates and structured exception handling.
In lieu of a final project, students are expected to complete 6 (challenging) programming assignments in advanced topics in MFC / C++ programming. (These assignments will be normally due three weeks after they are distributed in-class.)
Required Texts:
Mario Giannini, PWindows Programming Programmers Notebook, Prentice Hall.
David Kruglinksi, Programming Visual C++, Fifth Edition, Microsoft Press.
Wieying Chen, ActiveX Programming Unleashed, Sams.net Publishing.
Recommended:
Nigel Thompson, 3D Graphics Programming for Windows 95, Microsoft
Press.
· The above books
should be available at the Posman's Bookstore at 116th and Broadway
(and at other bookstores around the city).
Other Useful Windows References:
Kurt Brockenschmidt, Inside OLE, 2nd ed., Microsoft Press.
Microsoft, OLE Automation Programmer's Reference, Microsoft Press.
Stan Trujillo, Cutting-Edge Direct3D Programming, Coriolis Group
Books.
Session 1: Introduction COM, OLE & ActiveX
Course Overview
Visual C++ & MFC 4.2
MFC Review
What is Advanced MFC?
Component Programming
COM, OLE and ActiveX Demystified
Session 2: MFC Document and View File I/O and Streams
SDI vs. MDI applications
Persistence and streams
CArchive and CFile
Saving and retrieving documents
Session 3: Multitasking MFC Classes
Starting and coordinating threads
User and worker threads
Design issues
Events
Critical sections
Mutexes
Session 4: Templates and MFC Container Classes / The VC++ Standard Library
MFC container support
C++ templates review
MFC non-templatized container classes
MFC templatized container classes
STL containers
The Standard Library string class
Session 5: Exception Handling and MFC Databases
C++ Structured Exception Handling
MFC Database Classes
Wizard-based database programming
CDatabase and CRecordset
CDAODatabase and CDAORecordset
Programming with table structures in DAO
Session 6: MFC Common Control Classes
Standard MFC Control Classes Reviewed
Image Lists
TreeView Controls
ListView Controls In-Depth
Progress Controls
Sliders and Spin Buttons
Session 7: DirectX -- DirectDraw Programming
DirectX Basics
DirectDraw
Screensaver Basics
Designing your own C++ classes for MFC
Bitmaps, surfaces and animation
Session 8: Midterm
Session 9: Direct3D Programming
Direct3D Basics
Meshes & rendering schemes
Light sources
.X files
Retained mode
Immediate mode
Session 10: Designing with ActiveX Controls in MFC
Using OCX's
The Visual C++ Component Gallery
OCX's and the Dialog Editor
Viewing OCX classes
A grid sample
Popular OCX controls
Session 11: COM and OLE Automation
DLL's vs. COM
OLE and COM
Creating COM Objects
Type Information
OLE Automation
Session 12: Building ActiveX Controls I
MFC and COleControl
Wizard-based development
OLE control internals
Sample MFC-based OLE control
Development issues
Session 13: Building ActiveX Controls II
The ActiveX Template Library
The ActiveX SDK
Deployment issues
Session 14: ActiveX on the Web
VBScript, JavaScript and ActiveX
Java vs. C++
The Future of Windows development
Final Exam (Details TBA)