Click here to Skip to main content
15,867,488 members
Articles / Desktop Programming / MFC
Article

MFC Wrapper Class for MCIWnd

Rate me:
Please Sign up or sign in to vote.
4.71/5 (15 votes)
11 Jan 20032 min read 158K   3.1K   48   33
An MFC Wrapper Class for MCIWnd

Sample Image - MCIWndWrapper.gif

Introduction

A recent small project required the use of MFC and it also needed to be able to play an AVI file. The Microsoft 'Video for Windows' technology seemed like the easiest route to go. To make the project coding cleaner, I built a MFC wrapper class CMCIWnd for the MCIWnd functions.

Using the code

There are no licensing restrictions on the use of the source code. This is completely an exercise in giving something back to a community that has helped me often when I needed some quick code.

To use the wrapper class in your own project, add MCIWnd.cpp and MCIWnd.h to your project. In your project settings, link to Vfw32.lib and Winmm.lib. Create a variable of type CMCIWnd and then call CMCIWnd::Create() to create the window, CMCIWnd::Open() to open an AVI file, and CMCIWnd::Play() to play the file.

The demo application shows how to do all this. I elected to keep the demo application very simple so you could quickly see how the CMCIWnd wrapper class would be used in an MFC project. Take a look at MCIWndWrapperDlg.cpp and its CWrapperDlg::OnPlayAVI() function. It shows how to use the CMCIWnd wrapper class to play an AVI file. Just in case you need to know how to do it, I also added MFC message handlers for the notifications that the MCIWnd window sends to a parent window.

Points of Interest

I did manage to make one improvement in the wrapper class that is not offered out of the box by MCIWnd. While you can set the MCIWnd to repeat/loop the playing of an AVI, the standard MCIWnd Play() function does not recognize this setting and will only play the AVI one time. I did a bit of digging in the mciSendCommand() function and came up with a way for the wrapper class's CMCIWnd::Play() function to recognize the repeat setting and have the AVI loop if CMCIWnd::GetRepeat() is TRUE.

History

  • 12/25/2002 Created.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here


Written By
Web Developer
United States United States
Paul Kissel is presently a Principal with RiverBend Software, Inc. - a consulting services company specializing in the design and development of consumer-focused, commercial application software for Microsoft Windows.

Comments and Discussions

 
GeneralRe: urgent help Pin
Paul Kissel1-Jun-03 21:35
Paul Kissel1-Jun-03 21:35 
GeneralRe: urgent help Pin
luweiwinson16-Jul-08 21:19
luweiwinson16-Jul-08 21:19 
GeneralMemory Leak HELP!!!! Pin
pvivera30-Apr-03 18:56
pvivera30-Apr-03 18:56 
GeneralRe: Memory Leak HELP!!!! Pin
GaryMLong25-Jun-03 16:00
GaryMLong25-Jun-03 16:00 
GeneralRe: Memory Leak HELP!!!! Pin
pvivera26-Jun-03 3:41
pvivera26-Jun-03 3:41 
GeneralNotification Pin
itlk19-Feb-03 10:26
itlk19-Feb-03 10:26 
GeneralRe: Notification Pin
Paul Kissel19-Feb-03 11:21
Paul Kissel19-Feb-03 11:21 
GeneralRe: Notification Pin
itlk19-Feb-03 21:10
itlk19-Feb-03 21:10 
Hi Paul,

thank you for help. It works well Wink | ;-)



Regards,
Lubomir
QuestionCan not play avi... Pin
itlk9-Feb-03 9:46
itlk9-Feb-03 9:46 
AnswerRe: Can not play avi... Pin
Paul Kissel18-Feb-03 22:47
Paul Kissel18-Feb-03 22:47 
AnswerRe: Can not play avi... Pin
itlk19-Feb-03 10:19
itlk19-Feb-03 10:19 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.