Click here to Skip to main content
Click here to Skip to main content

XP Media Center Animated Button Control

, 27 Sep 2006
Rate this:
Please Sign up or sign in to vote.
Drop-in animated button class that emulates the XP Media Center 2005 buttons.


I was tasked with writing an application that was to look and behave like XP Media Center 2005. I found that the templates for plug-ins provided in the Media Center SDK were nowhere near as good looking as the actual Media Center. Being a VC++ programmer, I found that a plug-in would not give me the power I needed. This is common with Microsoft, if you want any nice looking GUI classes, you must write them yourself (Visual Studio, Office). I decided to write an application from scratch.


I love the Media Center animated buttons; first, I wrote a class using two animated GIFs. It was sloppy and just didn't seem right to me. Then, I took the Media Center resource DLL apart and examined all of the images. I noticed that each button consisted of three images and a Wav file. The two main images are alpha blended on a timer, and the third image is for clicked animation. I was impressed. Great idea, I wish I thought of it. I had to settle for copying their technique.


This project was built and tested on Windows 2000 and Windows XP, using Visual Studio 6 SP5 and the Microsoft Platform SDK (Feb 2003).

Using the code

  1. The MCButton class relies on three images, the Wav file is optional. Add "MCButton.h" and "MCButton.cpp" to your project, and the three images to your resources. In the test app, the resources are defined as IDB_BUTTON_FIRST, IDB_BUTTON_LAST, and IDB_BUTTON_PRESSED. Subclass a button on any dialog, and set the images with the SetImages(UINT, UINT, UINT) member function;
  2. (Optional) Add a Wav file resource to play when the button is clicked.
  3. In the window initialization, add the CMCButton methods:
    BOOL CMainDlg::OnInitDialog()
        // ...
        // Setup MCButton
         m_Button.SubclassDlgItem(IDC_BTN, this);
         m_Button.SetImages(IDB_BUTTON_FIRST, IDB_BUTTON_LAST, 
         m_Button.SetClickedSound(IDR_WAVE_SELECT); // Optional
        // ...

Change Log

  • September 27th 2006: I eliminated GLOBAL.h, and added a function to set all images at once for easier incorporation into any project. I am terrible at writing, so I rewrote the article because I needed the practice. I also added an animated GIF so that you may see exactly what the button does without having to download it.


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


About the Author

Software Developer
United States United States
No Biography provided

Comments and Discussions

QuestionHelp me!!.How can change the icon inside CMCButton? Pinmemberwpwneh33314-Mar-08 7:09 
AnswerRe: Help me!!.How can change the icon inside CMCButton? PinmemberJJMatthews15-Mar-08 6:59 
GeneralPlease help! PinmemberJack691048714-Jun-07 20:35 
GeneralRe: Please help! PinmemberJJMatthews5-Jun-07 18:37 
GeneralRe: Please help! PinmemberJack691048715-Jun-07 23:45 
GeneralRe: Please help! PinmemberJJMatthews6-Jun-07 8:33 
GeneralRe: Please help! PinmemberJack691048716-Jun-07 18:35 
GeneralI need help Pinmemberbahzad325-May-07 23:51 
GeneralRe: I need help PinmemberJJMatthews31-May-07 7:40 
Generalhelp~ Pinmemberalexsando16-Mar-07 4:51 
GeneralRe: help~ PinmemberJJMatthews20-Mar-07 9:23 
GeneralThank's you PinmemberSoenson8-Jan-07 0:44 
GeneralRe: Thank's you Pinmembermds1237-Apr-07 0:12 
QuestionWhere is the version of 27th 2006 PinmemberDibi7-Nov-06 1:48 
AnswerRe: Where is the version of 27th 2006 PinmemberJJMatthews7-Nov-06 3:33 
JokeGood Job PinmemberOscarTV11-Oct-06 23:26 
QuestionNeed Help???? PinmemberChhoto Bou3-Jul-06 20:41 
AnswerRe: Need Help???? PinmemberJJMatthews6-Oct-06 20:57 
GeneralNeed Help!!!!!!! PinmemberChhoto Bou3-Jul-06 19:59 
GeneralRe: Need Help!!!!!!! PinmemberChhoto Bou3-Jul-06 20:02 
GeneralC# Pinmemberbryan_2000024-Nov-05 9:41 
GeneralAwesome Pinmembersmesser20-Aug-05 11:28 

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

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

| Advertise | Privacy | Terms of Use | Mobile
Web02 | 2.8.141220.1 | Last Updated 27 Sep 2006
Article Copyright 2005 by JJMatthews
Everything else Copyright © CodeProject, 1999-2014
Layout: fixed | fluid