Самый простой, потому что не требуется никаких специальных элементов управления. Используем обычный CStatic. Создаем диалог, на него элемент управления CStatic, а в ресурсы набор для анимации с идентификаторами по порядку.
Ну, а теперь описываем переменную таймера и номера картинки.
class CTestAnimDlg : public CDialog { // Construction public: CTestAnimDlg(CWnd* pParent = NULL); // standard constructor UINT m_nTimer; int x; ........ };
Инициализируем номер первой картинки:
CTestAnimDlg::CTestAnimDlg(CWnd* pParent /*=NULL*/) : CDialog(CTestAnimDlg::IDD, pParent) { //{{AFX_DATA_INIT(CTestAnimDlg) // NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT // Note that LoadIcon does not require // a subsequent DestroyIcon in Win32 x=IDB_BITMAP1; m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); }
Описываем идентификатор таймера:
#include "TestAnimDlg.h" #define TIMER_ID 100 #ifdef _DEBUG
Заводим таймер:
BOOL CTestAnimDlg::OnInitDialog() { ....... // TODO: Add extra initialization here m_nTimer = SetTimer(TIMER_ID, 200, 0); return TRUE; // return TRUE unless you set the focus to a control }
И по событию таймера меняем картинку:
void CTestAnimDlg::OnTimer(UINT nIDEvent) { // TODO: Add your message handler code here and/or call default if (x<(IDB_BITMAP14)) x++; else x=IDB_BITMAP1; m_Anim.SetBitmap(::LoadBitmap(AfxGetApp()->m_hInstance, MAKEINTRESOURCE(x))); CDialog::OnTimer(nIDEvent); }
Вот и все, запускаем и смотрим.