CAnimateCtrl 클래스

Windows 공용 애니메이션 컨트롤의 기능을 제공합니다.

구문

class CAnimateCtrl : public CWnd

멤버

공용 생성자

속성 설명
CAnimateCtrl::CAnimateCtrl CAnimateCtrl 개체를 생성합니다.

공용 메서드

이름 설명
CAnimateCtrl::Close AVI 클립을 닫습니다.
CAnimateCtrl::Create 애니메이션 컨트롤을 만들어 개체에 CAnimateCtrl 연결합니다.
CAnimateCtrl::CreateEx 지정된 Windows 확장 스타일을 사용하여 애니메이션 컨트롤을 만들고 개체에 CAnimateCtrl 연결합니다.
CAnimateCtrl::IsPlaying AVI(Audio-Video Interleaved) 클립이 재생 중인지 여부를 나타냅니다.
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 사용을 참조하세요.

상속 계층 구조

CObject

CCmdTarget

CWnd

CAnimateCtrl

요구 사항

헤더: afxcmn.h

CAnimateCtrl::CAnimateCtrl

CAnimateCtrl 개체를 생성합니다.

CAnimateCtrl();

설명

만든 개체에 대해 다른 작업을 수행하려면 먼저 멤버 만들기 함수를 호출해야 합니다.

예시

// 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();

Return Value

성공하는 경우 0이 아니고, 그렇지 않으면 0입니다.

예시

CAnimateCtrl::CAnimateCtrl에 대한 예제를 참조하세요.

CAnimateCtrl::Create

애니메이션 컨트롤을 만들어 개체에 CAnimateCtrl 연결합니다.

virtual BOOL Create(
    DWORD dwStyle,
    const RECT& rect,
    CWnd* pParentWnd,
    UINT nID);

매개 변수

dwStyle
애니메이션 컨트롤의 스타일을 지정합니다. 아래 설명 섹션에 설명된 Windows 스타일과 Windows SDK의 애니메이션 컨트롤 스타일에 설명된 애니메이션 컨트롤 스타일의 조합을 적용합니다.

rect
애니메이션 컨트롤의 위치와 크기를 지정합니다. CRect 개체 또는 RECT 구조체일 수 있습니다.

pParentWnd
애니메이션 컨트롤의 부모 창(일반적으로 .)을 CDialog지정합니다. NULL이 아니어야 합니다.

nID
애니메이션 컨트롤의 ID를 지정합니다.

Return Value

성공하는 경우 0이 아니고, 그렇지 않으면 0입니다.

설명

두 단계로 구성 CAnimateCtrl 합니다. 먼저 생성자를 호출한 다음 애니메이션 컨트롤을 만들어 개체에 연결하는 CAnimateCtrl 호출Create합니다.

애니메이션 컨트롤에 다음 창 스타일을 적용합니다.

  • WS_CHILD Always

  • WS_VISIBLE 일반적으로

  • WS_DISABLED 드물게

애니메이션 컨트롤에 확장 창 스타일을 사용하려면 대신 CreateExCreate호출합니다.

위에 나열된 창 스타일 외에도 애니메이션 컨트롤에 하나 이상의 애니메이션 컨트롤 스타일을 적용할 수 있습니다. 애니메이션 컨트롤 스타일에 대한 자세한 내용은 Windows SDK를 참조하세요.

예시

CAnimateCtrl::CAnimateCtrl에 대한 예제를 참조하세요.

CAnimateCtrl::CreateEx

컨트롤(자식 창)을 만들어 개체와 연결 CAnimateCtrl 합니다.

virtual BOOL CreateEx(
    DWORD dwExStyle,
    DWORD dwStyle,
    const RECT& rect,
    CWnd* pParentWnd,
    UINT nID);

매개 변수

dwExStyle
만들 컨트롤의 확장 스타일을 지정합니다. 확장된 Windows 스타일 목록은 Windows SDK의 CreateWindowEx에 대한 dwExStyle 매개 변수를 참조하세요.

dwStyle
애니메이션 컨트롤의 스타일을 지정합니다. Windows SDK의 애니메이션 컨트롤 스타일에 설명된 창 및 애니메이션 컨트롤 스타일의 조합을 적용합니다.

rect
pParentWnd의 클라이언트 좌표에서 만들 창의 크기와 위치를 설명하는 RECT 구조체에 대한 참조입니다.

pParentWnd
컨트롤의 부모 창에 대한 포인터입니다.

nID
컨트롤의 자식 창 ID입니다.

Return Value

성공하면 0이 아니고, 그렇지 않으면 0입니다.

설명

Windows 확장 스타일 서문 WS_EX_ 지정된 확장 Windows 스타일을 적용하려면 만들기 대신 사용합니다CreateEx.

CAnimateCtrl::IsPlaying

AVI(Audio-Video Interleaved) 클립이 재생 중인지 여부를 나타냅니다.

BOOL IsPlaying() const;

Return Value

AVI 클립이 재생 중이면 TRUE이고, 그렇지 않으면 FALSE입니다.

설명

이 메서드는 Windows SDK에 설명된 ACM_ISPLAYING 메시지를 보냅니다.

CAnimateCtrl::Open

이 함수를 호출하여 AVI 클립을 열고 첫 번째 프레임을 표시합니다.

BOOL Open(LPCTSTR lpszFileName);
BOOL Open(UINT nID);

매개 변수

lpszFileName
CString AVI 파일의 이름 또는 AVI 리소스의 이름을 포함하는 null로 끝나는 문자열에 대한 개체 또는 포인터입니다. 이 매개 변수가 NULL이면 시스템에서 애니메이션 컨트롤에 대해 이전에 연 AVI 클립(있는 경우)을 닫습니다.

nID
AVI 리소스 식별자입니다. 이 매개 변수가 NULL이면 시스템에서 애니메이션 컨트롤에 대해 이전에 연 AVI 클립(있는 경우)을 닫습니다.

Return Value

성공하는 경우 0이 아니고, 그렇지 않으면 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
재생이 시작되는 프레임의 인덱스(0부터 시작)입니다. 값은 65,536보다 작아야 합니다. 값이 0이면 AVI 클립의 첫 번째 프레임으로 시작합니다.

nTo
재생이 끝나는 프레임의 인덱스(0부터 시작하는 인덱스)입니다. 값은 65,536보다 작아야 합니다. 값 - 1은 AVI 클립의 마지막 프레임으로 끝나는 것을 의미합니다.

nRep
AVI 클립을 재생할 횟수입니다. 값 - 1은 파일을 무기한 재생한다는 의미입니다.

Return Value

성공하는 경우 0이 아니고, 그렇지 않으면 0입니다.

설명

애니메이션 컨트롤은 스레드가 계속 실행되는 동안 백그라운드에서 클립을 재생합니다. 애니메이션 컨트롤에 스타일이 ACS_TRANSPARENT 있는 경우 AVI 클립은 애니메이션 클립에 지정된 배경색이 아닌 투명한 배경을 사용하여 재생됩니다.

예시

CAnimateCtrl::CAnimateCtrl에 대한 예제를 참조하세요.

CAnimateCtrl::Seek

이 함수를 호출하여 AVI 클립의 단일 프레임을 정적으로 표시합니다.

BOOL Seek(UINT nTo);

매개 변수

nTo
표시할 프레임의 인덱스(0부터 시작하는 인덱스)입니다. 값은 65,536보다 작아야 합니다. 값이 0이면 AVI 클립의 첫 번째 프레임이 표시됩니다. 값이 -1이면 AVI 클립의 마지막 프레임이 표시됩니다.

Return Value

성공하는 경우 0이 아니고, 그렇지 않으면 0입니다.

설명

애니메이션 컨트롤에 스타일이 ACS_TRANSPARENT 있는 경우 AVI 클립은 애니메이션 클립에 지정된 배경색이 아닌 투명한 배경을 사용하여 그려집니다.

예시

CAnimateCtrl::CAnimateCtrl에 대한 예제를 참조하세요.

CAnimateCtrl::Stop

애니메이션 컨트롤에서 AVI 클립 재생을 중지하려면 이 함수를 호출합니다.

BOOL Stop();

Return Value

성공하는 경우 0이 아니고, 그렇지 않으면 0입니다.

예시

CAnimateCtrl::CAnimateCtrl에 대한 예제를 참조하세요.

참고 항목

CWnd 클래스
계층 구조 차트
CAnimateCtrl::Create
ON_CONTROL