DirectShow DirectShow 레퍼런스 인터페이스 IVideoWindow [목차열람] [주소복사] [슬롯비우기] |
Microsoft DirectX 9.0 |
IVideoWindow 인터페이스는, 비디오 윈도우의 프로퍼티를 설정한다. 애플리케이션은 이 인터페이스를 사용해, 윈도우의 오너, 윈도우의 위치와 넓이, 그 외의 프로퍼티를 설정할 수 있다.
비디오 렌더링 필터와 필터 그래프 매니저는 양쪽 모두, 이 인터페이스를 공개한다. 애플리케이션이 이 인터페이스를 사용하는 경우는, 필터 그래프 매니저가 공개하고 있는 인터페이스를 사용할 필요가 있다. 필터 그래프 매니저는, 메서드 호출을 모두 비디오 렌더러에 전송 한다. 게다가 비디오 렌더러가 자신을 갱신하기 위해서 필요한 WM_DISPLAYCHANGE 등의 특정의 윈도우 메시지도 전송 한다. 비디오 윈도우를 자식 윈도우로 하면 이후 그 윈도우는 이러한 메시지를 직접 납득할 수 없게 된다. 따라서, 필터 그래프 매니저로부터의 전송을 기다리게 된다.
다만, 필터 그래프에 복수의 비디오 렌더러가 포함되어 있는 경우, 필터 그래프 매니저는 그 중의 (임의에 선택된) 1 개의 비디오 렌더러로 밖에 통신하지 않는다. 따라서, 애플리케이션이 복수의 비디오 윈도우를 사용하려면 , 필터 자신의 IVideoWindow 인터페이스를 직접 사용할 필요가 있다. 그 경우,IVideoWindow::NotifyOwnerMessage 메서드를 사용해, 반드시 윈도우 메시지를 각 비디오 렌더러에 전송 하는 것.
비디오 윈도우를 자식 윈도우에 배치하는 MFC 애플리케이션은, 하늘의 WM_ERASEBKGND 메시지 핸들러를 정의해야 한다. 정의하지 않으면 비디오 표시 영역은 올바르고 재드로잉(Drawing) 되지 않는다.
비디오 렌더러가 접속되지 않은 경우, 이 인터페이스의 메서드는 모두 에러 코드 VFW_E_NOT_CONNECTED 를 돌려준다. 접속과 절단을 반복해도, 비디오 렌더러로 설정한 프로퍼티는 유효하다. 이 인터페이스는 Automation 호환이므로, 불리언 값은 OAFALSE (0) 또는 OATRUE (-1)이다.
필터 개발자 :CBaseVideoWindow 클래스를 사용하면 이 인터페이스가 처리 하기 쉽다.
IDispatch 로부터 계승하는 메서드 외에,IVideoWindow 인터페이스는 다음의 메서드를 공개한다.
메서드 | 설명 |
get_AutoShow | 비디오 렌더러가 비디오 데이터를 받았을 때에 비디오 윈도우를 자동적으로 표시할지 어떨지를 조회한다. |
get_BackgroundPalette | 비디오 윈도우가 팔레트를 백그라운드에서 실현될지 어떨지를 조회한다. |
get_BorderColor | 목적지 직사각형의 인연의 주위에 표시되는 색을 얻어온다. |
get_Caption | 비디오 윈도우의 캡션을 얻어온다. |
get_FullScreenMode | 비디오 렌더러가 풀 스크린 모드인지 아닌지를 조회한다. |
get_Height | 비디오 윈도우의 높이를 얻어온다. |
get_Left | 비디오 윈도우의 x 좌표를 얻어온다. |
get_MessageDrain | 비디오 윈도우로부터 마우스 메시지 및 키보드 메시지를 받아들이는 윈도우가 있으면 그 윈도우를 얻어온다. |
get_Owner | 비디오 윈도우의 부모 윈도우가 있으면 그 윈도우를 얻어온다. |
get_Top | 비디오 윈도우의 y 좌표를 얻어온다. |
get_Visible | 비디오 윈도우가 표시되고 있는지를 조회한다. |
get_Width | 비디오 윈도우의 폭을 얻어온다. |
get_WindowState | 비디오 윈도우의 표시/비표시, 최소화/최대화를 조회한다. |
get_WindowStyle | 비디오 윈도우의 윈도우 스타일을 얻어온다. |
get_WindowStyleEx | 비디오 윈도우의 확장 스타일을 얻어온다. |
GetMaxIdealImageSize | 비디오 이미지의 이상적인 최대 사이즈를 얻어온다. |
GetMinIdealImageSize | 비디오 이미지의 이상적인 최소 사이즈를 얻어온다. |
GetRestorePosition | 복원된 윈도우의 위치를 얻어온다. |
GetWindowPosition | 비디오 윈도우의 위치를 얻어온다. |
HideCursor | 커서를 비표시로 한다. |
IsCursorHidden | 커서가 비표시인지 아닌지를 조회한다. |
NotifyOwnerMessage | 비디오 윈도우에 메시지를 전송 한다. |
put_AutoShow | 비디오 데이터를 받았을 때에, 비디오 렌더러가 자동적으로 비디오 윈도우를 표시할지 어떨지를 지정한다. |
put_BackgroundPalette | 비디오 윈도우가 팔레트를 백그라운드에서 실현될지 어떨지를 지정한다. |
put_BorderColor | 목적지 직사각형의 인연의 주위에 표시되는 색을 설정한다. |
put_Caption | 비디오 윈도우의 캡션을 설정한다. |
put_FullScreenMode | 풀 스크린 모드를 유효 또는 무효로 한다. |
put_Height | 비디오 윈도우의 높이를 설정한다. |
put_Left | 비디오 윈도우의 x 좌표를 설정한다. |
put_MessageDrain | 비디오 윈도우로부터 마우스 메시지와 키보드 메시지를 받아들이는 윈도우를 지정한다. |
put_Owner | 비디오 윈도우의 부모 윈도우를 지정한다. |
put_Top | 비디오 윈도우의 y 좌표를 설정한다. |
put_Visible | 비디오 윈도우의 표시/비표시를 바꾼다. |
put_Width | 비디오 윈도우의 폭을 설정한다. |
put_WindowState | 비디오 윈도우의 표시/비표시, 최소화/최대화를 바꾼다. |
put_WindowStyle | 비디오 윈도우의 윈도우 스타일을 설정한다. |
put_WindowStyleEx | 비디오 윈도우의 확장 윈도우 스타일을 설정한다. |
SetWindowForeground | Z 오더의 선두에 비디오 윈도우를 배치한다. |
SetWindowPosition | 비디오 윈도우의 위치를 설정한다. |