Класс CAnimateCtrl
Предоставляет функциональные возможности стандартного элемента управления анимациями Windows.
Синтаксис
class CAnimateCtrl : public CWnd
Участники
Открытые конструкторы
Имя | Описание |
---|---|
CAnimateCtrl::CAnimateCtrl | Формирует объект CAnimateCtrl . |
Открытые методы
Имя | Описание |
---|---|
CAnimateCtrl::Close | Закрывает клип AVI. |
CAnimateCtrl::Create | Создает элемент управления анимации и присоединяет его к объекту CAnimateCtrl . |
CAnimateCtrl::CreateEx | Создает элемент управления анимации с указанными расширенными стилями Windows и присоединяет его к объекту CAnimateCtrl . |
CAnimateCtrl::IsPlaying | Указывает, выполняется ли воспроизведение клипа аудио-видео с чередованием (AVI). |
CAnimateCtrl::Open | Открывает клип AVI из файла или ресурса и отображает первый кадр. |
CAnimateCtrl::P lay | Воспроизводит клип AVI без звука. |
CAnimateCtrl::Seek | Отображает выбранный один кадр клипа AVI. |
CAnimateCtrl::Stop | Останавливает воспроизведение клипа AVI. |
Замечания
Этот элемент управления (и, следовательно CAnimateCtrl
, класс) доступен только для программ под управлением Windows 95, Windows 98 и Windows NT версии 3.51 и более поздних версий.
Элемент управления анимацией — это прямоугольное окно, отображающее клип в формате AVI (аудиотрансляций) — стандартный формат видео и аудио в Windows. Клип AVI — это серия растровых кадров, как фильм.
Элементы управления анимацией могут воспроизводить только простые клипы AVI. В частности, клипы, которые будут воспроизводиться элементом управления анимацией, должны соответствовать следующим требованиям:
Должен быть ровно один видеопоток, и он должен иметь по крайней мере один кадр.
В файле может быть не более двух потоков (обычно другой поток, если он присутствует, является аудиопотоком, хотя элемент управления анимацией игнорирует звуковую информацию).
Клип должен быть распакованным или сжатым с сжатием RLE8.
Изменения палитры не допускаются в видеопотоке.
Вы можете добавить клип AVI в приложение в качестве ресурса AVI или сопровождать приложение в виде отдельного файла AVI.
Так как поток продолжает выполняться во время отображения клипа AVI, одно из распространенных способов использования элемента управления анимацией заключается в том, чтобы указать системное действие во время длительной операции. Например, диалоговое окно "Поиск" проводник отображает движущееся стекло с увеличением, так как система ищет файл.
Если вы создаете CAnimateCtrl
объект в диалоговом окне или из ресурса диалогового окна с помощью редактора диалогов, он будет автоматически уничтожен, когда пользователь закрывает диалоговое окно.
При создании CAnimateCtrl
объекта в окне может потребоваться его уничтожить. При создании CAnimateCtrl
объекта в стеке он автоматически уничтожается. Если вы создаете CAnimateCtrl
объект в куче с помощью new
функции, необходимо вызвать delete
объект, чтобы уничтожить его. Если вы наследуете новый класс и CAnimateCtrl
выделяете любую память в этом классе, переопределите CAnimateCtrl
деструктор для удаления выделений.
Дополнительные сведения об использовании CAnimateCtrl
см. в разделе "Элементы управления " и "Использование CAnimateCtrl".
Иерархия наследования
CAnimateCtrl
Требования
Заголовок: afxcmn.h
CAnimateCtrl::CAnimateCtrl
Формирует объект CAnimateCtrl
.
CAnimateCtrl();
Замечания
Перед выполнением любых других операций с создаваемым объектом необходимо вызвать функцию create member.
Пример
// This example creates a secondary thread that implements
// the methods of CAnimateCtrl. The procedure of the thread
// is MyClipThreadProc and the thread was created with the
// code AfxBeginThread( MyClipThreadProc, (LPVOID) pParentWnd).
// The example code creates and initializes an animation control,
// then proceeds to pump messages from the queue until one the
// private messages WM_STOPCLIP, WM_PLAYCLIP, WM_SHOWFIRSTFRAME or
// WM_SHOWLASTFRAME is received. The appropriate action is done for
// these messages. The thread ends when the WM_STOPCLIP is received.
// NOTE: the thread parameter, pParam, is a pointer to a CWnd object
// that will be the parent of the animation control.
#define WM_STOPCLIP WM_USER + 1
#define WM_PLAYCLIP WM_USER + 2
#define WM_SHOWFIRSTFRAME WM_USER + 3
#define WM_SHOWLASTFRAME WM_USER + 4
UINT MyClipThreadProc(LPVOID pParam)
{
// NOTE: pParentWnd is the parent window of the animation control.
CWnd *pParentWnd = (CWnd *)pParam;
CAnimateCtrl cAnimCtrl;
// Create the animation control.
if (!cAnimCtrl.Create(WS_CHILD | WS_VISIBLE | ACS_CENTER,
CRect(10, 10, 100, 100), pParentWnd, 1))
{
return false;
}
// Open the AVI file.
if (!cAnimCtrl.Open(_T("MyAvi.avi")))
{
return false;
}
// Pump message from the queue until the stop play message is received.
MSG msg;
while (GetMessage(&msg, NULL, 0, 0) && (msg.message != WM_STOPCLIP))
{
switch (msg.message)
{
// Start playing from the first frame to the last,
// continuously repeating.
case WM_PLAYCLIP:
if (!cAnimCtrl.Play(0, (UINT)-1, (UINT)-1))
return false;
break;
// Show the first frame.
case WM_SHOWFIRSTFRAME:
if (!cAnimCtrl.Seek(0))
return false;
cAnimCtrl.RedrawWindow();
break;
// Show the last frame.
case WM_SHOWLASTFRAME:
if (!cAnimCtrl.Seek((UINT)-1))
return false;
cAnimCtrl.RedrawWindow();
break;
}
TranslateMessage(&msg);
DispatchMessage(&msg);
}
cAnimCtrl.Stop();
cAnimCtrl.Close();
return true;
}
CAnimateCtrl::Close
Закрывает клип AVI, который ранее был открыт в элементе управления анимацией (если таковые есть) и удаляет его из памяти.
BOOL Close();
Возвращаемое значение
Ненулевое значение в случае успеха, иначе — 0.
Пример
См. пример CAnimateCtrl::CAnimateCtrl.
CAnimateCtrl::Create
Создает элемент управления анимации и присоединяет его к объекту CAnimateCtrl
.
virtual BOOL Create(
DWORD dwStyle,
const RECT& rect,
CWnd* pParentWnd,
UINT nID);
Параметры
dwStyle
Задает стиль элемента управления анимацией. Примените любое сочетание стилей окон, описанных в разделе "Примечания" ниже, и стили элементов управления анимацией, описанные в статье "Стили элементов управления анимацией" в пакете SDK для Windows.
rect
Указывает положение и размер элемента управления анимации. Это может быть объект CRect или структура RECT .
pParentWnd
Указывает родительское окно элемента управления анимации, обычно значение CDialog
. Он не должен иметь значение NULL.
nID
Указывает идентификатор элемента управления анимации.
Возвращаемое значение
Ненулевое значение в случае успеха, иначе — 0.
Замечания
Вы создаете два CAnimateCtrl
шага. Сначала вызовите конструктор, а затем вызов Create
, который создает элемент управления анимацией и присоединяет его к объекту CAnimateCtrl
.
Примените следующие стили окон к элементу управления анимации.
WS_CHILD Always
WS_VISIBLE обычно
WS_DISABLED редко
Если вы хотите использовать расширенные стили окон с элементом управления анимацией, вызовите CreateEx вместо Create
этого.
Помимо стилей окон, перечисленных выше, может потребоваться применить один или несколько стилей элементов управления анимацией к элементу управления анимацией. Дополнительные сведения о стилях элементов управления анимацией см. в пакете SDK для Windows.
Пример
См. пример CAnimateCtrl::CAnimateCtrl.
CAnimateCtrl::CreateEx
Создает элемент управления (дочернее окно) и связывает его с CAnimateCtrl
объектом.
virtual BOOL CreateEx(
DWORD dwExStyle,
DWORD dwStyle,
const RECT& rect,
CWnd* pParentWnd,
UINT nID);
Параметры
dwExStyle
Задает расширенный стиль создаваемого элемента управления. Список расширенных стилей Windows см. в параметре dwExStyle для CreateWindowEx в пакете SDK для Windows.
dwStyle
Задает стиль элемента управления анимацией. Примените любое сочетание стилей элементов управления окна и анимации, описанных в разделе "Стили элементов управления анимацией" в пакете SDK для Windows.
rect
Ссылка на структуру RECT , описывающую размер и положение создаваемого окна в координатах клиента pParentWnd.
pParentWnd
Указатель на окно, которое является родительским элементом элемента управления.
nID
Идентификатор дочернего окна элемента управления.
Возвращаемое значение
Имеет ненулевое значение в случае успешного выполнения, иначе — 0.
Замечания
Используйте CreateEx
вместо создания расширенные стили Windows, указанные предисловием расширенного стиля Windows WS_EX_.
CAnimateCtrl::IsPlaying
Указывает, выполняется ли воспроизведение клипа аудио-видео с чередованием (AVI).
BOOL IsPlaying() const;
Возвращаемое значение
ЗНАЧЕНИЕ TRUE, если воспроизведение клипа AVI; в противном случае — ЗНАЧЕНИЕ FALSE.
Замечания
Этот метод отправляет сообщение ACM_ISPLAYING , описанное в пакете SDK для Windows.
CAnimateCtrl::Open
Вызовите эту функцию, чтобы открыть клип AVI и отобразить его первый кадр.
BOOL Open(LPCTSTR lpszFileName);
BOOL Open(UINT nID);
Параметры
lpszFileName
CString
Объект или указатель на строку, завершающую значение NULL, содержащую имя файла AVI или имя ресурса AVI. Если этот параметр имеет значение NULL, система закрывает клип AVI, который ранее был открыт для элемента управления анимацией( если таковой имеется).
nID
Идентификатор ресурса AVI. Если этот параметр имеет значение NULL, система закрывает клип AVI, который ранее был открыт для элемента управления анимацией( если таковой имеется).
Возвращаемое значение
Ненулевое значение в случае успеха, иначе — 0.
Замечания
Ресурс AVI загружается из модуля, создавшего элемент управления анимацией.
Open
не поддерживает звук в клипе AVI; Вы можете открывать только автоматические клипы AVI.
Если элемент управления анимацией имеет ACS_AUTOPLAY
стиль, элемент управления анимацией автоматически начнет воспроизводить клип сразу после его открытия. Он будет продолжать воспроизводить клип в фоновом режиме, пока поток продолжает выполняться. После воспроизведения клипа он будет повторяться автоматически.
Если элемент управления анимацией имеет ACS_CENTER
стиль, клип AVI будет центрирован в элементе управления, а размер элемента управления не изменится. Если элемент управления анимации не имеет ACS_CENTER
стиля, элемент управления изменится, когда клип AVI открывается до размера изображений в клипе AVI. Позиция левого верхнего угла элемента управления не изменится, только размер элемента управления.
Если элемент управления анимацией имеет ACS_TRANSPARENT
стиль, первый кадр будет нарисован с помощью прозрачного фона, а не цвета фона, указанного в клипе анимации.
Пример
См. пример CAnimateCtrl::CAnimateCtrl.
CAnimateCtrl::P lay
Вызовите эту функцию для воспроизведения клипа AVI в элементе управления анимацией.
BOOL Play(
UINT nFrom,
UINT nTo,
UINT nRep);
Параметры
nFrom
Отсчитываемый от нуля индекс кадра, в котором начинается воспроизведение. Значение должно быть меньше 65 536. Значение 0 означает начало первого кадра в клипе AVI.
nTo
Отсчитываемый от нуля индекс кадра, в котором заканчивается воспроизведение. Значение должно быть меньше 65 536. Значение - 1 означает конец последнего кадра в клипе AVI.
nRep
Количество раз воспроизведения клипа AVI. Значение -1 означает воспроизведение файла на неопределенный срок.
Возвращаемое значение
Ненулевое значение в случае успеха, иначе — 0.
Замечания
Элемент управления анимацией будет воспроизводить клип в фоновом режиме, пока поток продолжает выполняться. Если элемент управления анимацией имеет ACS_TRANSPARENT
стиль, клип AVI будет воспроизводиться с помощью прозрачного фона, а не цвета фона, указанного в клипе анимации.
Пример
См. пример CAnimateCtrl::CAnimateCtrl.
CAnimateCtrl::Seek
Вызовите эту функцию для статического отображения одного кадра клипа AVI.
BOOL Seek(UINT nTo);
Параметры
nTo
Отсчитываемый от нуля индекс отображаемого кадра. Значение должно быть меньше 65 536. Значение 0 означает отображение первого кадра в клипе AVI. Значение -1 означает отображение последнего кадра в клипе AVI.
Возвращаемое значение
Ненулевое значение в случае успеха, иначе — 0.
Замечания
Если элемент управления анимацией имеет ACS_TRANSPARENT
стиль, клип AVI будет нарисован с помощью прозрачного фона, а не цвета фона, указанного в клипе анимации.
Пример
См. пример CAnimateCtrl::CAnimateCtrl.
CAnimateCtrl::Stop
Вызовите эту функцию, чтобы остановить воспроизведение клипа AVI в элементе управления анимацией.
BOOL Stop();
Возвращаемое значение
Ненулевое значение в случае успеха, иначе — 0.
Пример
См. пример CAnimateCtrl::CAnimateCtrl.
См. также
Класс CWnd
Диаграмма иерархии
CAnimateCtrl::Create
ON_CONTROL