다음을 통해 공유


CAsyncMonikerFile 클래스

ActiveX 컨트롤(이전의 OLE 컨트롤)에서 비동기 모니커를 사용할 수 있도록 기능을 제공합니다.

구문

class CAsyncMonikerFile : public CMonikerFile

멤버

공용 생성자

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

공용 메서드

이름 설명
CAsyncMonikerFile::Close 모든 리소스를 닫고 해제합니다.
CAsyncMonikerFile::GetBinding 비동기 전송 바인딩에 대한 포인터를 검색합니다.
CAsyncMonikerFile::GetFormatEtc 스트림에서 데이터의 형식을 검색합니다.
CAsyncMonikerFile::Open 파일을 비동기적으로 엽니다.

보호된 메서드

속성 설명
CAsyncMonikerFile::CreateBindStatusCallback 를 구현하는 COM 개체를 만듭니다 IBindStatusCallback.
CAsyncMonikerFile::GetBindInfo 만들 바인딩 유형에 대한 정보를 요청하기 위해 OLE 시스템 라이브러리에서 호출됩니다.
CAsyncMonikerFile::GetPriority 바인딩의 우선 순위를 가져오기 위해 OLE 시스템 라이브러리에서 호출됩니다.
CAsyncMonikerFile::OnDataAvailable 비동기 바인딩 작업 중에 클라이언트에서 사용할 수 있게 되면 데이터를 제공하기 위해 호출됩니다.
CAsyncMonikerFile::OnLowResource 리소스가 부족할 때 호출됩니다.
CAsyncMonikerFile::OnProgress 데이터 다운로드 프로세스의 진행률을 나타내기 위해 호출됩니다.
CAsyncMonikerFile::OnStartBinding 바인딩이 시작될 때 호출됩니다.
CAsyncMonikerFile::OnStopBinding 비동기 전송이 중지될 때 호출됩니다.

설명

COleStreamFile에서 파생되는 CMonikerFileCAsyncMonikerFile에서 파생된 IMoniker 인터페이스는 URL에서 비동기적으로 파일을 로드하는 것을 포함하여 모든 데이터 스트림에 비동기적으로 액세스합니다. 파일은 ActiveX 컨트롤의 데이터 경로 속성일 수 있습니다.

비동기 모니커는 주로 인터넷 지원 애플리케이션 및 ActiveX 컨트롤에서 파일 전송 중에 반응형 사용자 인터페이스를 제공하는 데 사용됩니다. 다음은 CDataPathProperty를 사용하여 ActiveX 컨트롤에 대한 비동기 속성을 제공하는 예제입니다. 개체는 CDataPathProperty 긴 속성 교환 프로세스 중에 새 데이터의 가용성을 나타내는 콜백을 반복적으로 가져옵니다.

인터넷 애플리케이션에서 비동기 모니커 및 ActiveX 컨트롤을 사용하는 방법에 대한 자세한 내용은 다음 문서를 참조하세요.

상속 계층 구조

CObject

CFile

COleStreamFile

CMonikerFile

CAsyncMonikerFile

요구 사항

헤더: afxole.h

CAsyncMonikerFile::CAsyncMonikerFile

CAsyncMonikerFile 개체를 생성합니다.

CAsyncMonikerFile();

설명

인터페이스를 IBindHost 만들지 않습니다. IBindHost 는 멤버 함수에서 Open 제공하는 경우에만 사용됩니다.

인터페이스에 대한 설명은 IBindHost Windows SDK를 참조하세요.

CAsyncMonikerFile::Close

이 함수를 호출하여 모든 리소스를 닫고 해제합니다.

virtual void Close();

설명

미개봉 또는 이미 닫힌 파일에서 호출할 수 있습니다.

CAsyncMonikerFile::CreateBindStatusCallback

를 구현하는 COM 개체를 만듭니다 IBindStatusCallback.

virtual IUnknown* CreateBindStatusCallback(IUnknown* pUnkControlling);

매개 변수

pUnkControlling
집계를 사용하지 않는 경우 제어 알 수 없는(외부 IUnknown) 또는 NULL에 대한 포인터입니다.

Return Value

pUnkControlling이 NULL이 아니면 함수는 지원하는 새 COM 개체의 내부 IUnknown 포인터를 반환합니다IBindStatusCallback. NULL인 경우 pUnkControlling 함수는 지원하는 새 COM 개체에 대한 포인터 IUnknown 를 반환합니다 IBindStatusCallback.

설명

CAsyncMonikerFile를 구현하는 COM 개체가 필요합니다.IBindStatusCallback MFC는 이러한 개체를 구현하며 집계할 수 있습니다. 사용자 고유의 COM 개체를 반환하도록 재정 CreateBindStatusCallback 의할 수 있습니다. COM 개체는 COM 개체의 알 수 없는 제어를 사용하여 호출 CreateBindStatusCallback 하여 MFC의 구현을 집계할 수 있습니다. COM 지원을 사용하여 구현된 COM 개체는 을 CCmdTarget 사용하여 CCmdTarget::GetControllingUnknown알 수 없는 제어를 검색할 수 있습니다.

또는 COM 개체를 호출 CreateBindStatusCallback( NULL )하여 MFC의 구현에 위임할 수 있습니다.

CAsyncMonikerFile::Open 호출 CreateBindStatusCallback.

비동기 모니커 및 비동기 바인딩에 대한 자세한 내용은 IBindStatusCallback 인터페이스 및 비동기 바인딩 및 스토리지 작업 방법을 참조하세요. 집계에 대한 자세한 내용은 집계를 참조 하세요. 세 항목은 모두 Windows SDK에 있습니다.

CAsyncMonikerFile::GetBindInfo

비동기 모니커의 클라이언트에서 호출하여 비동기 모니커에 바인딩 방법을 알려줍니다.

virtual DWORD GetBindInfo() const;

Return Value

에 대한 설정을 검색합니다 IBindStatusCallBack. 인터페이스에 대한 설명은 IBindStatusCallback Windows SDK를 참조하세요.

설명

기본 구현은 바인딩을 비동기식으로 설정하고, 스토리지 매체(스트림)를 사용하고, 데이터 푸시 모델을 사용하도록 설정합니다. 바인딩의 동작을 변경하려는 경우 이 함수를 재정의합니다.

이 작업을 수행하는 한 가지 이유는 데이터 푸시 모델 대신 데이터 풀 모델을 사용하여 바인딩하는 것입니다. 데이터 풀 모델에서 클라이언트는 바인딩 작업을 구동하고 모니커는 데이터를 읽을 때만 클라이언트에 제공합니다. 데이터 푸시 모델에서 모니커는 비동기 바인딩 작업을 구동하고 새 데이터를 사용할 수 있을 때마다 클라이언트에 지속적으로 알깁니다.

CAsyncMonikerFile::GetBinding

비동기 전송 바인딩에 대한 포인터를 검색하려면 이 함수를 호출합니다.

IBinding* GetBinding() const;

Return Value

비동기 전송이 IBinding 시작될 때 제공되는 인터페이스에 대한 포인터입니다. 어떤 이유로든 전송을 비동기적으로 수행할 수 없는 경우 NULL을 반환합니다.

설명

이렇게 하면 인터페이스를 통해 IBinding 데이터 전송 프로세스를 제어할 수 있습니다(예: with IBinding::Abort, IBinding::PauseIBinding::Resume.).

인터페이스에 대한 설명은 IBinding Windows SDK를 참조하세요.

CAsyncMonikerFile::GetFormatEtc

스트림에서 데이터의 형식을 검색하려면 이 함수를 호출합니다.

FORMATETC* GetFormatEtc() const;

Return Value

현재 열린 스트림의 Windows 구조 FORMATETC 에 대한 포인터입니다. 모니커가 바인딩되지 않았거나, 비동기가 아니거나, 비동기 작업이 시작되지 않은 경우 NULL을 반환합니다.

CAsyncMonikerFile::GetPriority

바인딩 프로세스가 바인딩 작업에 대해 스레드에 지정된 우선 순위를 받기 시작할 때 비동기 모니커의 클라이언트에서 호출됩니다.

virtual LONG GetPriority() const;

Return Value

비동기 전송이 수행되는 우선 순위입니다. 표준 스레드 우선 순위 플래그 중 하나는 THREAD_PRIORITY_ABOVE_NORMAL, THREAD_PRIORITY_BELOW_NORMAL, THREAD_PRIORITY_HIGHEST, THREAD_PRIORITY_IDLE, THREAD_PRIORITY_LOWEST, THREAD_PRIORITY_NORMAL 및 THREAD_PRIORITY_TIME_CRITICAL. 이러한 값에 대한 설명은 Windows 함수 SetThreadPriority 를 참조하세요.

설명

GetPriority 는 직접 호출하지 않아야 합니다. THREAD_PRIORITY_NORMAL 기본 구현에서 반환됩니다.

CAsyncMonikerFile::OnDataAvailable

비동기 바인딩 작업 중에 사용할 수 있게 되면 클라이언트에 데이터를 제공하기 위한 비동기 모니커 호출 OnDataAvailable 입니다.

virtual void OnDataAvailable(DWORD dwSize, DWORD bscfFlag);

매개 변수

dwSize
바인딩 시작부터 사용할 수 있는 데이터의 누적 양(바이트)입니다. 데이터 양이 작업과 관련이 없거나 사용 가능한 특정 금액이 없음을 나타내는 0일 수 있습니다.

bscfFlag
BSCF 열거형 값입니다. 다음 값 중 하나 이상이 될 수 있습니다.

  • BSCF_FIRSTDATANOTIFICATION 지정된 바인딩 작업에 대한 첫 번째 호출 OnDataAvailable 을 식별합니다.

  • BSCF_INTERMEDIATEDATANOTIFICATION 바인딩 작업에 대한 중간 호출 OnDataAvailable 을 식별합니다.

  • BSCF_LASTDATANOTIFICATION 바인딩 작업에 대한 마지막 호출 OnDataAvailable 을 식별합니다.

설명

이 함수의 기본 구현은 아무 작업도 수행하지 않습니다. 샘플 구현은 다음 예제를 참조하세요.

예시

void CMyMoniker::OnDataAvailable(DWORD dwSize, DWORD bscfFlag)
{
   if ((bscfFlag & BSCF_FIRSTDATANOTIFICATION) != 0)
   {
      m_dwReadBefore = 0;
      m_strText.Empty();
   }

   DWORD dwArriving = dwSize - m_dwReadBefore;

   if (dwArriving > 0)
   {
      int nLen = m_strText.GetLength();
      ASSERT((DWORD)nLen == m_dwReadBefore);
      LPTSTR psz = m_strText.GetBuffer(nLen + dwArriving);
      Read(psz + nLen, dwArriving);
      m_strText.ReleaseBuffer(nLen + dwArriving);
      m_dwReadBefore = dwSize;
   }
}

CAsyncMonikerFile::OnLowResource

리소스가 부족할 때 모니커에 의해 호출됩니다.

virtual void OnLowResource();

설명

기본 구현은 .를 호출합니다 GetBinding( )-> Abort( ).

CAsyncMonikerFile::OnProgress

일반적으로 긴 작업 중에 적절한 간격으로 이 바인딩 작업의 현재 진행률을 나타내기 위해 모니커에 의해 반복적으로 호출됩니다.

virtual void OnProgress(
    ULONG ulProgress,
    ULONG ulProgressMax,
    ULONG ulStatusCode,
    LPCTSTR szStatusText);

매개 변수

ulProgress
ulProgressMax에 표시된 예상 최대값을 기준으로 바인딩 작업의 현재 진행률을 나타냅니다.

ulProgressMax
이 작업에 대한 호출 기간 동안 예상되는 ulProgress의 최대값OnProgress 나타냅니다.

ulStatusCode
바인딩 작업의 진행률에 대한 추가 정보를 제공합니다. 유효한 값은 열거형에서 BINDSTATUS 가져옵니다. 가능한 값은 비고를 참조하세요.

szStatusText
ulStatusCode에 따라 현재 진행률에 대한 정보입니다. 가능한 값은 비고를 참조하세요.

설명

ulStatusCode(및 각 값에 대한 szStatusText)에 사용할 수 있는 값은 다음과 같습니다.

설명
BINDSTATUS_FINDINGRESOURCE 바인딩 작업은 바인딩되는 개체 또는 스토리지를 보유하는 리소스를 찾는 것입니다. szStatusText검색할 리소스의 표시 이름(예: "www.microsoft.com")을 제공합니다.
BINDSTATUS_CONNECTING 바인딩 작업은 바인딩되는 개체 또는 스토리지를 보유하는 리소스에 연결됩니다. szStatusText연결 중인 리소스의 표시 이름(예: IP 주소)을 제공합니다.
BINDSTATUS_SENDINGREQUEST 바인딩 작업이 바인딩되는 개체 또는 스토리지를 요청하고 있습니다. szStatusText개체의 표시 이름(예: 파일 이름)을 제공합니다.
BINDSTATUS_REDIRECTING 바인딩 작업이 다른 데이터 위치로 리디렉션되었습니다. szStatusText새 데이터 위치의 표시 이름을 제공합니다.
BINDSTATUS_USINGCACHEDCOPY 바인딩 작업은 캐시된 복사본에서 요청된 개체 또는 스토리지를 검색합니다. szStatusText는 NULL입니다.
BINDSTATUS_BEGINDOWNLOADDATA 바인딩 작업이 바인딩되는 개체 또는 스토리지를 수신하기 시작했습니다. szStatusText데이터 위치의 표시 이름을 제공합니다.
BINDSTATUS_DOWNLOADINGDATA 바인딩 작업은 바인딩되는 개체 또는 스토리지를 계속 받습니다. szStatusText데이터 위치의 표시 이름을 제공합니다.
BINDSTATUS_ENDDOWNLOADDATA 바인딩 작업이 바인딩되는 개체 또는 스토리지 수신을 완료했습니다. szStatusText데이터 위치의 표시 이름을 제공합니다.
BINDSTATUS_CLASSIDAVAILABLE 바인딩되는 개체의 인스턴스가 만들어질 예정입니다. szStatusText새 개체의 CLSID를 문자열 형식으로 제공하여 클라이언트가 원하는 경우 바인딩 작업을 취소할 수 있도록 합니다.

CAsyncMonikerFile::OnStartBinding

바인딩이 시작될 때 작업을 수행하도록 파생 클래스에서 이 함수를 재정의합니다.

virtual void OnStartBinding();

설명

이 함수는 모니커에 의해 다시 호출됩니다. 기본 구현은 아무 작업도 수행하지 않습니다.

CAsyncMonikerFile::OnStopBinding

바인딩 작업이 끝날 때 모니커에 의해 호출됩니다.

virtual void OnStopBinding(HRESULT hresult, LPCTSTR szError);

매개 변수

hresult
오류 또는 경고 값인 HRESULT입니다.

szErrort
오류를 설명하는 문자열입니다.

설명

전송이 중지될 때 작업을 수행하도록 이 함수를 재정의합니다. 기본적으로 함수는 .를 해제합니다.IBinding

인터페이스에 대한 설명은 IBinding Windows SDK를 참조하세요.

CAsyncMonikerFile::Open

이 멤버 함수를 호출하여 파일을 비동기적으로 엽니다.

virtual BOOL Open(
    LPCTSTR lpszURL,
    CFileException* pError = NULL);

virtual BOOL Open(
    IMoniker* pMoniker,
    CFileException* pError = NULL);

virtual BOOL Open(
    LPCTSTR lpszURL,
    IBindHost* pBindHost,
    CFileException* pError = NULL);

virtual BOOL Open(
    IMoniker* pMoniker,
    IBindHost* pBindHost,
    CFileException* pError = NULL);

virtual BOOL Open(
    LPCTSTR lpszURL,
    IServiceProvider* pServiceProvider,
    CFileException* pError = NULL);

virtual BOOL Open(
    IMoniker* pMoniker,
    IServiceProvider* pServiceProvider,
    CFileException* pError = NULL);

virtual BOOL Open(
    LPCTSTR lpszURL,
    IUnknown* pUnknown,
    CFileException* pError = NULL);

virtual BOOL Open(
    IMoniker* pMoniker,
    IUnknown* pUnknown,
    CFileException* pError = NULL);

매개 변수

lpszURL
비동기적으로 열 파일에 대한 포인터입니다. 파일은 유효한 URL 또는 파일 이름일 수 있습니다.

pError
파일 예외에 대한 포인터입니다. 오류가 발생할 경우 원인으로 설정됩니다.

pMoniker
비동기 모니커 인터페이스 IMoniker에 대한 포인터, 함께 검색 IOleClientSite::GetMoniker(OLEWHICHMK_CONTAINER)할 수 있는 문서 고유의 모니커 조합인 정확한 모니커 및 경로 이름에서 만든 모니커입니다. 컨트롤은 이 모니커를 사용하여 바인딩할 수 있지만 컨트롤이 저장해야 하는 모니커가 아닙니다.

pBindHost
잠재적으로 상대 경로 이름에서 모니커를 만드는 데 사용할 인터페이스에 대한 포인터 IBindHost 입니다. 바인딩 호스트가 잘못되었거나 모니커를 제공하지 않는 경우 호출의 기본값은 .입니다 Open(lpszFileName,pError). 인터페이스에 대한 설명은 IBindHost Windows SDK를 참조하세요.

pServiceProvider
인터페이스에 대한 포인터입니다 IServiceProvider . 서비스 공급자가 잘못되었거나 서비스를 IBindHost제공하지 못하는 경우 호출의 기본값은 다음과 같습니다 Open(lpszFileName,pError).

pUnknown
인터페이스에 대한 포인터입니다 IUnknown . 찾은 경우 IServiceProvider 함수는 .에 대해 IBindHost쿼리합니다. 서비스 공급자가 잘못되었거나 서비스를 IBindHost제공하지 못하는 경우 호출의 기본값은 다음과 같습니다 Open(lpszFileName,pError).

Return Value

파일이 성공적으로 열리면 0이 아닌 경우 그렇지 않으면 0입니다.

설명

이 호출은 바인딩 프로세스를 시작합니다.

lpszURL 매개 변수에 대한 URL 또는 파일 이름을 사용할 수 있습니다. 예시:

CMyMoniker *pMyMoniker = new CMyMoniker();
pMyMoniker->Open(_T("http://www.microsoft.com"));

- 또는 -

CMyMoniker *pMyMoniker = new CMyMoniker();
pMyMoniker->Open(_T("file:c:\\mydata.dat"));

참고 항목

CMonikerFile 클래스
계층 구조 차트
CMonikerFile 클래스
CDataPathProperty 클래스