GUI Midterm Assignment

Your midterm assignment is to write a program that plays AVI and WAV multimedia files. You must complete the program, it must be bug-free, and your source code well-commented. The final result must be handed in within 1 week, with both printout and disk, containing the entire project and the compiled source code, and a 'design document' which is described below.

This assignment has been chosen to utilize things we have learned upto this point, as well as ask you to do some research and preparation of a design document.

Program Operation

Program operation requirements are basic: The user must have the following menu choices:

Open - Presents the file open common dialog box, and lets user select an AVI file
Exit - Terminates the program. Confirmation is not needed
Play - Plays or resumes the current movie. Disabled if no movie is loaded or if current movie is
Pause - Pauses the current movie. Disabled if no movie is loaded or if current movie is not
About - Displays a dialog box that displays the program name, and your name, with the program

Assignment Requirements

Menu Items
Menu items such as Play and Pause must be enabled and disabled as appropriate.

About dialog
Your program must have an about dialog, that displays the program name, your name, and the 32x32 icon for your program.

Your program must have a custom Icon, whose design is up to you. You will need to create the icon in the resource editor. You will need to create two icons: one 32x32 (for the 'About' dialog), and one 16x16 which is used by the operating system. These two icons will share 1 ID. The 32x32 is the default icon, once that is created, create the 16x16 icon by clicking on the button to the right of the combo box in the icon editor.

File Open
You must use the GetOpenFileName function to get a user name from the user (you must use the MCIWNDF_NOOPEN option with MCIWndCreate).

Title bar
The title bar should contain the name of the currently-loaded file, or 'untitled' if there is none. While the movie is playing, the title bar should also reflect the current frame (the current position in the playback).

All functions must be commented with function name, description, parameter list, and return value.

Research and Documentation
This assignment is not as hard as it sounds. A large part of your assignment requires you to do research on how to play multimedia files. The MCI (Media Control Interface) will help you greatly. Use the online help, everything you need is there.

Before starting the program, prepare a document that describes how you are going to accomplish the tasks above. This should serve as your design specification. Outline the obstacles you face, and your strategies for accomplishing them (like, AVI playback, and periodic update of the caption bar). You must hand in this document with your project.

Your project will be graded on the following items, listed in order of importance:
1. Program should be fully implemented (complete)
2. Your design document: Complete and well-defined, and reflects what was actually done.
3. Comments and source code appearance
4. Elimination of redundant code
5. Efficiency

Getting Help
As always, you can ask questions concerning the assignment via email. Because this is an exam, I will not be able to answer certain questions. If I receive a question which I can answer, I will add a 'Midterm Questions' section to the web page for this class at