DirectShow DirectShow 레퍼런스 DirectShow base class base class 레퍼런스 CBasePropertyPage   [목차열람] [주소복사] [슬롯비우기]
CBasePropertyPage 클래스
 
Microsoft DirectX 9.0

CBasePropertyPage 클래스

CBasePropertyPage 의 접속 처리

CBasePropertyPage 클래스는 프로퍼티 페이지를 처리 하는 추상 클래스이다. 프로퍼티 페이지를 지원 하는 필터 (또는 그 외의 개체)를 쓰는 경우는, 이 클래스를 사용한다.

프로퍼티 페이지는 COM 개체이기 (위해)때문에, 클래스 식별자 (CLSID)의 GUID 를 생성해,CFactoryTemplate 배열의 엔트리를 지정할 필요가 있다. 더 자세한 정보는, 「DirectShow 와 COM 」를 참조할것. 다음의 예는 전형적인 클래스 팩토리의 엔트리를 나타내고 있다.

CFactoryTemplate g_Templates[] =
{   
    { 
        L"My Property Page",
        &CLSID_MyPropPage,
        CMyProp::CreateInstance,
        NULL,
        NULL
    },
        /* 필터용의 템플릿도 추가한다 (생략).  */
};

필터는 ISpecifyPropertyPages 인터페이스를 공개할 필요가 있다. 이 인터페이스에는 GetPages 라고 하는 1 개의 메서드가 있다. 이 메서드는 프로퍼티 페이지의 CLSID 를 돌려준다. 다음 코드는, 이 메서드의 처리 방법의 예이다.

STDMETHODIMP CMyFilter::GetPages(CAUUID *pPages)
{
    if (! pPages) return E_POINTER;

    pPages->cElems = 1;
    pPages->pElems = reinterpret_cast<GUID*>(CoTaskMemAlloc(sizeof(GUID)));
    if (pPages->pElems == NULL) 
    {
        return E_OUTOFMEMORY;
    }
    *(pPages->pElems) = CLSID_MyPropPage;
    return S_OK;
} 

필터의 NonDelegatingQueryInterface 메서드도 잊지 않고 오버라이드(override) 하는 것. 더 자세한 정보는, 「DirectShow 와 COM 」 및 「INonDelegatingUnknown 」를 참조할것.

다음에, 프로젝트의 리소스로서 다이얼로그를 생성 해, 다이얼로그의 타이틀을 보관 유지하는 캐릭터 라인 리소스를 생성 한다. 이러한 리소스 ID 는 양쪽 모두 CBasePropertyPage 생성자의 파라미터이다. 리소스로 타이틀 캐릭터 라인을 보관 유지 하면, 프로퍼티 페이지의 로컬라이즈를 간단하게 실시할 수 있다.

CBasePropertyPage 클래스는 IPropertyPage 인터페이스의 프레임워크(framework)를 제공한다. 이 프레임워크(framework)는,CBasePropertyPage::OnActivateCBasePropertyPage::OnApplyChanges 등의 다수의 가상 메서드를 호출한다. base class에서는, 이러한 메서드는 다만 S_OK 를 돌려주는 것만으로 있다. 상속 클래스에서는, 이러한 가상 메서드의 일부 또는 전부를 오버라이드(override) 할 필요가 있다. 더 자세한 정보는, 각각의 메서드의 「주의」를 참조할것.

요건

헤더 : Cprop.h 로 선언해, Streams.h 를 인클루드 한다.

라이브러리 : Strmbase.lib (리테일 빌드) 또는 Strmbasd.lib (디버그 빌드).

프로텍트 멤버 변수  
m_bDirty 변경된 프로퍼티가 있을지 어떨지를 나타낸다.
m_DialogId 다이얼로그의 리소스 식별자.
m_Dlg 다이얼로그 윈도우의 핸들.
m_hwnd 다이얼로그 윈도우의 핸들.
m_pPageSite 프로퍼티 페이지 사이트의 IPropertyPageSite 인터페이스의 포인터.
m_TitleId 다이얼로그의 타이틀을 저장 하고 있는 캐릭터 라인의 리소스 식별자.
퍼블릭 메서드  
CBasePropertyPage 생성자 메서드.
~CBasePropertyPage 소멸자 메서드. 가상.
OnActivate 프로퍼티 페이지가 액티브하게 되었을 때 호출된다. 가상.
OnApplyChanges 사용자가 프로퍼티 페이지에 대한 변경을 적용했을 때 호출된다. 가상.
OnConnect 프로퍼티 페이지에 관련된 개체에의 IUnknown 포인터. 가상.
OnDeactivate 다이알로그 박스 윈도우가 파기되었을 때 호출된다. 가상.
OnDisconnect 프로퍼티 페이지를 관련지을 수 있었던 개체를 릴리즈 할 필요가 있는 경우에 호출된다. 가상.
OnReceiveMessage 다이알로그 박스가 메시지를 받아들였을 때 호출된다. 가상.
IPropertyPage 메서드  
Activate 다이알로그 박스 윈도우를 생성 한다.
Apply 현재의 프로퍼티 페이지값을 프로퍼티 페이지에 관련된 개체에 적용한다.
Deactivate 다이얼로그 윈도우를 파기한다.
GetPageInfo 프로퍼티 페이지에 관한 정보를 얻어온다.
Help 프로퍼티 페이지의 헬프를 호출한다.
IsPageDirty 프로퍼티 페이지가 액티브하게 된 후, 또는 IPropertyPage::Apply 를 마지막으로 호출한 후, 변경되었는지 어떠했는지를 나타낸다.
Move 다이알로그 박스의 배치와 사이즈 변경을 실시한다.
SetObjects 프로퍼티 페이지에 관련된 개체의 IUnknown 포인터를 제공한다.
SetPageSite 프로퍼티 페이지를 초기화한다.
Show 다이알로그 박스의 표시/비표시를 바꾼다.
TranslateAccelerator 키스트로크(keystroke)의 처리를 프로퍼티 페이지에 지시한다.

↑TOP