Playing an AVI file in the status bar

Sample Image

Environment: VC6 SP2, NT4, 9x

During some long data processing, it is useful to let the user know that "something is happening, honest!" Many programs (such as Outlook Express) do this by the neat trick of showing an animation within one of the status bar panes. This article shows how this can be achieved by embedding an animation control.

The demo program allows a simple animation to be switched on or off from the View menu.

To add status bar animation takes the following steps:

1. Add the files RJLStatusBar.cpp and .h and StatusbarAnimate.cpp and .h to your project.

2. Add a CStatusbarAnimate* member in your CMainFrame class; change the CStatusBar member to be of the class CRJLStatusBar.

3. Add a suitable AVI resource to your resource file (you need some form of AVI editor to create this--I used Corel Photo-Paint 8). The AVI is drawn transparently, with the upper left pixel being the transparency color. Make sure that the status bar pane that will display this is large enough (controlled by the length of the text associated with the pane ID).

4. Add the following code to CMainFrame:



CMainFrame::CMainFrame()
{
	m_pAnimate = NULL;
}

CMainFrame::~CMainFrame()
{
	StopAnimation();
}

void CMainFrame::StartAnimation( UINT id, int nPane /*=1*/ )
{
	StopAnimation();

	m_pAnimate = new CStatusbarAnimate;
	m_pAnimate->Create(id, nPane);
}

void CMainFrame::StopAnimation()
{
	delete m_pAnimate;
	m_pAnimate = NULL;
}

bool CMainFrame::IsAnimationActive()
{
	return (m_pAnimate != NULL);
}

// needed to ensure original text not visible
void CMainFrame::OnUpdateAnimate(CCmdUI* pCmdUI) 
{
	pCmdUI->SetText(_T(""));
}

Now to start the animation just call StartAnimation and to stop it call StopAnimation.

Downloads

Download demo project - 34 Kb