Share via


애니메이션 컨트롤 정보

애니메이션 컨트롤은 AVI(Audio-Video Interleaved) 클립을 표시하는 창입니다. AVI 클립은 동영상과 같은 일련의 비트맵 프레임입니다. 애니메이션 컨트롤은 오디오가 포함되지 않는 AVI 클립만 표시할 수 있습니다.

애니메이션 컨트롤의 한 가지 일반적인 용도는 긴 작업 중에 시스템 작업을 나타내는 것입니다. 이는 AVI 클립이 표시되는 동안 작업 스레드가 계속 실행되기 때문일 수 있습니다. 예를 들어 Windows 탐색기의 찾기 대화 상자에는 시스템이 파일을 검색할 때 움직이는 돋보기가 표시됩니다.

참고

ComCtl32.dll 버전 6을 사용하는 경우 스레드는 지원되지 않습니다. 애플리케이션이 UI를 차단하지 않거나 애니메이션이 발생하지 않는지 확인합니다.

 

애니메이션 컨트롤은 압축되지 않은 AVI 파일 또는 BI_RLE8(실행 길이) 인코딩을 사용하여 압축된 AVI 파일에서 시작된 AVI 클립을 표시할 수 있습니다. 애플리케이션에 AVI 클립을 AVI 리소스로 추가하거나 클립이 애플리케이션을 별도의 AVI 파일로 함께 사용할 수 있습니다.

참고

AVI 파일 또는 리소스에는 사운드 채널이 없어야 합니다. 애니메이션 컨트롤의 기능은 매우 제한적이며 변경될 수 있습니다. 애플리케이션에 멀티미디어 재생 및 녹음/녹화 기능을 제공하는 컨트롤이 필요한 경우 MCIWnd 컨트롤을 사용할 수 있습니다. 자세한 내용은 MCIWnd 창 클래스를 참조하세요.

 

이 섹션에서는 다음 항목을 설명합니다.

애니메이션 컨트롤 만들기

애니메이션 컨트롤은 ANIMATE_CLASS 창 클래스에 속합니다. CreateWindow 또는 CreateWindowEx 함수 또는 Animate_Create 매크로를 사용하여 애니메이션 컨트롤을 만듭니다. 매크로는 부모 창의 왼쪽 위 모서리에 애니메이션 컨트롤을 배치하고, ACS_CENTER 스타일을 지정하지 않은 경우 AVI 클립의 프레임 크기에 따라 컨트롤의 너비와 높이를 설정합니다. ACS_CENTER를 지정한 경우 Animate_Create는 컨트롤의 너비와 높이를 0으로 설정합니다. SetWindowPos 함수를 사용하여 컨트롤의 위치와 크기를 설정할 수 있습니다.

대화 상자 또는 대화 상자 리소스에서 애니메이션 컨트롤을 만들면 사용자가 대화 상자를 닫을 때 컨트롤이 자동으로 제거됩니다. 창 내에서 애니메이션 컨트롤을 만드는 경우 컨트롤을 명시적으로 삭제해야 합니다.

애니메이션 컨트롤 메시지 정보

애플리케이션은 애니메이션 컨트롤에 메시지를 보내 해당 AVI 클립을 열고, 재생하고, 중지하고, 닫습니다. 각 메시지에는 메시지를 명시적으로 보내는 대신 사용할 수 있는 하나 이상의 매크로가 있습니다.

애니메이션 컨트롤을 만든 후 애플리케이션은 ACM_OPEN 메시지를 보내 AVI 클립을 열고 메모리에 로드합니다. 메시지는 AVI 파일의 경로 또는 AVI 리소스의 이름을 지정합니다. 시스템은 애니메이션 컨트롤을 만든 모듈에서 AVI 리소스를 로드합니다.

애니메이션 컨트롤에 ACS_AUTOPLAY 스타일이 있는 경우 컨트롤은 AVI 파일 또는 AVI 리소스가 열린 직후에 AVI 클립 재생을 시작합니다. 아니면 애플리케이션에서 ACM_PLAY 메시지를 사용하여 AVI 클립을 시작할 수 있습니다. 애플리케이션은 ACM_STOP 메시지를 보내 언제든지 클립을 중지할 수 있습니다. 재생된 마지막 프레임은 컨트롤이 AVI 클립 재생을 완료하거나 ACM_STOP이 전송될 때 계속 표시됩니다.

애니메이션 컨트롤은 부모 창에 두 개의 알림 코드, 즉 ACN_STARTACN_STOP을 보낼 수 있습니다. 대부분의 애플리케이션은 알림을 처리하지 않습니다.

AVI 파일 또는 AVI 리소스를 닫고 메모리에서 제거하려면 애플리케이션에서 파일 이름 또는 리소스 이름이 NULL로 설정된 ACM_OPEN을 보내는 Animate_Close 매크로를 사용할 수 있습니다.

기본 메시지 처리

이 섹션에서는 ANIMATE_CLASS 창 클래스의 창 프로시저에서 처리하는 창 메시지를 설명합니다.

메시지 수행되는 처리
WM_CLOSE 애니메이션 컨트롤과 연결된 AVI 파일 또는 AVI 리소스를 해제합니다.
WM_DESTROY AVI 파일 또는 AVI 리소스를 해제하고 내부 데이터 구조를 해제한 다음 DefWindowProc 함수를 호출합니다.
WM_ERASEBKGND 정적 컨트롤의 현재 배경색을 사용하여 창 배경을 지웁니다.
WM_NCCREATE 내부 데이터 구조를 할당하고 초기화한 다음 DefWindowProc을 호출합니다.
WM_NCHITTEST HTTRANSPARENT 적중 테스트 값을 반환합니다.
WM_PAINT 애니메이션 컨트롤에 AVI 프레임을 그립니다.
WM_SIZE 컨트롤에 ACS_CENTER 스타일이 있는지 확인합니다. 컨트롤이 없는 경우 DefWindowProc을 호출합니다. 그렇지 않으면 컨트롤의 애니메이션을 가운데에 두고 컨트롤을 무효화한 다음 DefWindowProc을 호출합니다.