DirectShow DirectShow 레퍼런스 인터페이스 IAMCopyCaptureFileProgress [목차열람] [주소복사] [슬롯비우기] |
Microsoft DirectX 9.0 |
IAMCopyCaptureFileProgress 은,ICaptureGraphBuilder2::CopyCaptureFile 메서드가 사용하는 콜백 인터페이스이다.
CopyCaptureFile 메서드의 완료에는 긴 시간이 걸리는 경우가 있기 (위해)때문에, 애플리케이션은 이 인터페이스를 처리 해, 복사 작업의 진행 상황에 대해 정기적으로 통지를 받을 수가 있다. 애플리케이션이 이러한 정보를 필요로 하지 않는 경우는, 이 인터페이스를 처리 할 필요는 없다.
IAMCopyCaptureFileProgress 인터페이스는,IUnknown 로부터 계승되는 메서드에 가세해 이하의 메서드를 공개한다.
메서드 | 설명 |
Progress | 캡춰 조작중에,ICaptureGraphBuilder2::CopyCaptureFile 메서드가 정기적으로 호출한다. |
주의
이 인터페이스를 사용하려면 , 인터페이스를 계승하는 클래스,IUnknown 의 메서드를 포함해 그 클래스의 모든 메서드를 처리 한다. 애플리케이션내에서 클래스의 인스턴스를 생성 해,CopyCaptureFile 메서드에 건네준다. CopyCaptureFile 메서드가 돌려주어질 때까지 개체가 삭제되지 않는 것이 보증되고 있는 경우는, 클래스에 COM 참조 카운트를 처리 할 필요는 없다.
이하의 샘플 코드는, 인터페이스를 처리 하는 클래스를 나타내고 있다.
class CProgress : public IAMCopyCaptureFileProgress
{
public:
STDMETHODIMP_(ULONG) AddRef() { return 1; }
STDMETHODIMP_(ULONG) Release() { return 0; }
STDMETHODIMP QueryInterface(REFIID iid, void **ppv)
{
if (ppv == NULL) return E_POINTER;
if (iid == __uuidof(IUnknown))
{
*ppv = static_cast<IUnknown*>(this);
return S_OK;
}
if (iid == IID_IAMCopyCaptureFileProgress)
{
*ppv = static_cast<IAMCopyCaptureFileProgress*>(this);
return S_OK;
}
return E_NOINTERFACE;
}
}
STDMETHODIMP Progress(int iPercent)
{
if (i < 0 || i > 100) return E_INVALIDARG;
TCHAR szMsg[32];
wsprintf(szMsg, TEXT("Progress: %d%%"), i);
// g_hwndStatus 는 유효한 HWND 인 것으로 한다.
SetWindowText(g_hwndStatus, szMsg);
return S_OK;
};
};
이하의 샘플에서는, 이 클래스를 CopyCaptureFile 메서드내에서 사용하고 있다.
// CProgress 개체의 범위
{
CProgress Prog;
// pBuilder 는 초기화된 ICaptureGraphBuilder2 포인터인 것으로 한다.
hr = pBuilder->CopyCaptureFile(szCaptureFile, szDestFile, TRUE,
static_cast<IAMCopyCaptureFileProgress*>(&Prog));
}