Udostępnij za pośrednictwem


Klasa CAsyncMonikerFile

Udostępnia funkcje do używania asynchronicznych elementów monikers w kontrolkach ActiveX (dawniej kontrolki OLE).

Składnia

class CAsyncMonikerFile : public CMonikerFile

Elementy członkowskie

Konstruktory publiczne

Nazwa/nazwisko opis
CAsyncMonikerFile::CAsyncMonikerFile CAsyncMonikerFile Tworzy obiekt.

Metody publiczne

Nazwa/nazwisko opis
CAsyncMonikerFile::Close Zamyka i zwalnia wszystkie zasoby.
CAsyncMonikerFile::GetBinding Pobiera wskaźnik do powiązania asynchronicznego transferu.
CAsyncMonikerFile::GetFormatEtc Pobiera format danych w strumieniu.
CAsyncMonikerFile::Open Otwiera plik asynchronicznie.

Metody chronione

Nazwa/nazwisko opis
CAsyncMonikerFile::CreateBindStatusCallback Tworzy obiekt COM, który implementuje IBindStatusCallbackelement .
CAsyncMonikerFile::GetBindInfo Wywoływana przez bibliotekę systemową OLE w celu żądania informacji o typie powiązania, który ma zostać utworzony.
CAsyncMonikerFile::GetPriority Wywoływana przez bibliotekę systemowa OLE w celu uzyskania priorytetu powiązania.
CAsyncMonikerFile::OnDataAvailable Wywoływane w celu dostarczenia danych, gdy staną się dostępne dla klienta podczas operacji asynchronicznych powiązań.
CAsyncMonikerFile::OnLowResource Wywoływane, gdy zasoby są niskie.
CAsyncMonikerFile::OnProgress Wywołana w celu wskazania postępu procesu pobierania danych.
CAsyncMonikerFile::OnStartBinding Wywoływana, gdy powiązanie jest uruchamiane.
CAsyncMonikerFile::OnStopBinding Wywoływana po zatrzymaniu transferu asynchronicznego.

Uwagi

Pochodzi z pliku CMonikerFile, który z kolei pochodzi z pliku COleStreamFile, CAsyncMonikerFile używa interfejsu IMoniker do uzyskiwania dostępu do dowolnego strumienia danych asynchronicznie, w tym ładowania plików asynchronicznie z adresu URL. Pliki mogą być właściwościami ścieżki danych kontrolek ActiveX.

Asynchroniczne elementy monikers są używane głównie w aplikacjach internetowych i kontrolkach ActiveX w celu zapewnienia dynamicznego interfejsu użytkownika podczas transferów plików. Doskonałym przykładem tego jest użycie właściwości CDataPathProperty w celu zapewnienia właściwości asynchronicznych dla kontrolek ActiveX. Obiekt CDataPathProperty będzie wielokrotnie pobierać wywołanie zwrotne, aby wskazać dostępność nowych danych podczas długiego procesu wymiany właściwości.

Aby uzyskać więcej informacji na temat używania asynchronicznych kontrolek monikers i ActiveX w aplikacjach internetowych, zobacz następujące artykuły:

Hierarchia dziedziczenia

Obiekt CObject

CFile

COleStreamFile

CMonikerFile

CAsyncMonikerFile

Wymagania

Nagłówek: afxole.h

CAsyncMonikerFile::CAsyncMonikerFile

CAsyncMonikerFile Tworzy obiekt.

CAsyncMonikerFile();

Uwagi

Nie tworzy interfejsu IBindHost . IBindHost jest używany tylko wtedy, gdy podajesz go w funkcji składowej Open .

Aby uzyskać opis interfejsu IBindHost , zobacz zestaw Windows SDK.

CAsyncMonikerFile::Close

Wywołaj tę funkcję, aby zamknąć i zwolnić wszystkie zasoby.

virtual void Close();

Uwagi

Można wywołać przy nieotwartych lub już zamkniętych plikach.

CAsyncMonikerFile::CreateBindStatusCallback

Tworzy obiekt COM, który implementuje IBindStatusCallbackelement .

virtual IUnknown* CreateBindStatusCallback(IUnknown* pUnkControlling);

Parametry

pUnkControlling
Wskaźnik do kontrolki nieznanej (zewnętrznej IUnknown) lub NULL, jeśli agregacja nie jest używana.

Wartość zwracana

Jeśli pUnkControlling nie ma wartości NULL, funkcja zwraca wskaźnik do wewnętrznego IUnknown obiektu w nowym obiekcie COM obsługującym IBindStatusCallback. Jeśli pUnkControlling ma wartość NULL, funkcja zwraca wskaźnik do IUnknown obiektu w nowym obiekcie COM obsługującym IBindStatusCallbackfunkcję .

Uwagi

CAsyncMonikerFile wymaga obiektu COM, który implementuje IBindStatusCallbackelement . MFC implementuje taki obiekt i jest aggregatable. Możesz zastąpić CreateBindStatusCallback , aby zwrócić własny obiekt COM. Obiekt COM może agregować implementację MFC, wywołując CreateBindStatusCallback polecenie z kontrolą nieznanego obiektu COM. Obiekty COM zaimplementowane przy użyciu CCmdTarget obsługi modelu COM mogą pobierać kontrolkę nieznaną przy użyciu polecenia CCmdTarget::GetControllingUnknown.

Alternatywnie obiekt COM może delegować do implementacji MFC, wywołując metodę CreateBindStatusCallback( NULL ).

CAsyncMonikerFile::Otwórz wywołania CreateBindStatusCallback.

Aby uzyskać więcej informacji na temat asynchronicznych powiązań i asynchronicznych, zobacz interfejs IBindStatusCallback i Jak asynchroniczne powiązanie i praca magazynu. Aby zapoznać się z omówieniem agregacji, zobacz Agregacja. Wszystkie trzy tematy znajdują się w zestawie Windows SDK.

CAsyncMonikerFile::GetBindInfo

Wywoływany z klienta asynchronicznego monikera, aby powiedzieć asynchroniczne moniker, jak chce powiązać.

virtual DWORD GetBindInfo() const;

Wartość zwracana

Pobiera ustawienia dla elementu IBindStatusCallBack. Aby uzyskać opis interfejsu IBindStatusCallback , zobacz zestaw Windows SDK.

Uwagi

Domyślna implementacja ustawia powiązanie jako asynchroniczne, aby używać nośnika magazynu (strumienia) i używać modelu wypychania danych. Zastąpi tę funkcję, jeśli chcesz zmienić zachowanie powiązania.

Jednym z powodów jest powiązanie przy użyciu modelu ściągania danych zamiast modelu wypychania danych. W modelu ściągania danych klient obsługuje operację wiązania, a moniker dostarcza tylko dane klientowi podczas jego odczytu. W modelu wypychania danych moniker napędza operację powiązania asynchronicznego i stale powiadamia klienta za każdym razem, gdy są dostępne nowe dane.

CAsyncMonikerFile::GetBinding

Wywołaj tę funkcję, aby pobrać wskaźnik do powiązania asynchronicznego transferu.

IBinding* GetBinding() const;

Wartość zwracana

Wskaźnik do interfejsu podanego po rozpoczęciu IBinding transferu asynchronicznego. Zwraca wartość NULL, jeśli z jakiegokolwiek powodu nie można wykonać transferu asynchronicznie.

Uwagi

Dzięki temu można kontrolować proces transferu danych za pośrednictwem interfejsuIBinding, na przykład za pomocą IBinding::AbortIBinding::Pause, i IBinding::Resume.

Aby uzyskać opis interfejsu IBinding , zobacz zestaw Windows SDK.

CAsyncMonikerFile::GetFormatEtc

Wywołaj tę funkcję, aby pobrać format danych w strumieniu.

FORMATETC* GetFormatEtc() const;

Wartość zwracana

Wskaźnik do struktury SYSTEMU Windows FORMATETC dla aktualnie otwartego strumienia. Zwraca wartość NULL, jeśli moniker nie został powiązany, jeśli nie jest asynchroniczny lub jeśli operacja asynchroniczna nie została rozpoczęta.

CAsyncMonikerFile::GetPriority

Wywoływany od klienta asynchronicznego monikera, ponieważ proces powiązania zaczyna odbierać priorytet nadany wątkowi dla operacji powiązania.

virtual LONG GetPriority() const;

Wartość zwracana

Priorytet, w którym odbędzie się transfer asynchroniczny. Jedną ze standardowych flag priorytetowych wątków: THREAD_PRIORITY_ABOVE_NORMAL, THREAD_PRIORITY_BELOW_NORMAL, THREAD_PRIORITY_HIGHEST, THREAD_PRIORITY_IDLE, THREAD_PRIORITY_LOWEST, THREAD_PRIORITY_NORMAL i THREAD_PRIORITY_TIME_CRITICAL. Aby uzyskać opis tych wartości, zobacz funkcję Systemu Windows SetThreadPriority .

Uwagi

GetPriority nie należy wywoływać bezpośrednio. THREAD_PRIORITY_NORMAL jest zwracana przez domyślną implementację.

CAsyncMonikerFile::OnDataAvailable

Asynchroniczne wywołania OnDataAvailable moniker w celu udostępnienia danych klientowi podczas asynchronicznych operacji powiązania.

virtual void OnDataAvailable(DWORD dwSize, DWORD bscfFlag);

Parametry

dwSize
Skumulowana ilość (w bajtach) danych dostępnych od początku powiązania. Może wynosić zero, co oznacza, że ilość danych nie jest odpowiednia dla operacji lub że żadna określona ilość nie stała się dostępna.

bscfFlag
Wartość wyliczenia BSCF. Może być co najmniej jedną z następujących wartości:

  • BSCF_FIRSTDATANOTIFICATION Identyfikuje pierwsze wywołanie OnDataAvailable dla danej operacji powiązania.

  • BSCF_INTERMEDIATEDATANOTIFICATION Określa pośredniczące wywołanie OnDataAvailable dla operacji powiązania.

  • BSCF_LASTDATANOTIFICATION Identyfikuje ostatnie wywołanie OnDataAvailable operacji powiązania.

Uwagi

Domyślna implementacja tej funkcji nic nie robi. Zapoznaj się z poniższym przykładem przykładowej implementacji.

Przykład

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

Wywoływana przez pseudonim, gdy zasoby są niskie.

virtual void OnLowResource();

Uwagi

Domyślna implementacja wywołuje metodę GetBinding( )-> Abort( ).

CAsyncMonikerFile::OnProgress

Wywoływany przez pseudonim wielokrotnie wskazujący bieżący postęp tej operacji wiązania, zazwyczaj w rozsądnych odstępach czasu podczas długotrwałej operacji.

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

Parametry

ulProgress
Wskazuje bieżący postęp operacji wiązania względem oczekiwanej wartości maksymalnej wskazanej w elProgressMax.

ulProgressMax
Wskazuje oczekiwaną maksymalną wartość parametru ulProgress przez czas trwania wywołań OnProgress dla tej operacji.

ulStatusCode
Zawiera dodatkowe informacje dotyczące postępu operacji wiązania. Prawidłowe wartości są pobierane z BINDSTATUS wyliczenia. Zobacz Uwagi dotyczące możliwych wartości.

szStatusText
Informacje o bieżącym postępie, w zależności od wartości ulStatusCode. Zobacz Uwagi dotyczące możliwych wartości.

Uwagi

Możliwe wartości dla klasy ulStatusCode (i szStatusText dla każdej wartości):

Wartość Opis
BINDSTATUS_FINDINGRESOURCE Operacja powiązania polega na znalezieniu zasobu, do którego jest powiązany obiekt lub magazyn. Element szStatusText zawiera nazwę wyświetlaną szukanego zasobu (na przykład "www.microsoft.com").
BINDSTATUS_CONNECTING Operacja powiązania nawiązuje połączenie z zasobem, z którego jest powiązany obiekt lub magazyn. Obiekt szStatusText zawiera nazwę wyświetlaną zasobu, z który jest połączony (na przykład z adresem IP).
BINDSTATUS_SENDINGREQUEST Operacja powiązania żąda, aby obiekt lub magazyn był powiązany. Obiekt szStatusText zawiera nazwę wyświetlaną obiektu (na przykład nazwę pliku).
BINDSTATUS_REDIRECTING Operacja powiązania została przekierowana do innej lokalizacji danych. Element szStatusText zawiera nazwę wyświetlaną nowej lokalizacji danych.
BINDSTATUS_USINGCACHEDCOPY Operacja powiązania pobiera żądany obiekt lub magazyn z kopii buforowanej. Wartość szStatusText ma wartość NULL.
BINDSTATUS_BEGINDOWNLOADDATA Operacja powiązania zaczęła odbierać obiekt lub magazyn, z którymi jest powiązany. Element szStatusText zawiera nazwę wyświetlaną lokalizacji danych.
BINDSTATUS_DOWNLOADINGDATA Operacja powiązania nadal odbiera obiekt lub magazyn, z którymi jest powiązany. Element szStatusText zawiera nazwę wyświetlaną lokalizacji danych.
BINDSTATUS_ENDDOWNLOADDATA Operacja powiązania zakończyła odbieranie powiązanego obiektu lub magazynu. Element szStatusText zawiera nazwę wyświetlaną lokalizacji danych.
BINDSTATUS_CLASSIDAVAILABLE Wystąpienie obiektu powiązanego z elementem ma zostać właśnie utworzone. Element szStatusText udostępnia identyfikator CLSID nowego obiektu w formacie ciągu, co umożliwia klientowi anulowanie operacji powiązania, jeśli jest to konieczne.

CAsyncMonikerFile::OnStartBinding

Zastąp tę funkcję w klasach pochodnych, aby wykonywać akcje podczas uruchamiania powiązania.

virtual void OnStartBinding();

Uwagi

Ta funkcja jest wywoływana z powrotem przez pseudonim . Domyślna implementacja nic nie robi.

CAsyncMonikerFile::OnStopBinding

Wywoływana przez pseudonim na końcu operacji powiązania.

virtual void OnStopBinding(HRESULT hresult, LPCTSTR szError);

Parametry

hresult
HrESULT, który jest wartością błędu lub ostrzeżenia.

szErrort
Ciąg znaków opisujący błąd.

Uwagi

Zastąpi tę funkcję, aby wykonywać akcje po zatrzymaniu transferu. Domyślnie funkcja zwalnia IBindingelement .

Aby uzyskać opis interfejsu IBinding , zobacz zestaw Windows SDK.

CAsyncMonikerFile::Open

Wywołaj tę funkcję składową, aby otworzyć plik asynchronicznie.

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);

Parametry

lpszURL
Wskaźnik do pliku, który ma zostać otwarty asynchronicznie. Plik może być dowolnym prawidłowym adresem URL lub nazwą pliku.

pError
Wskaźnik do wyjątków pliku. W przypadku błędu zostanie on ustawiony na przyczynę.

pMoniker
Wskaźnik do asynchronicznego interfejsu IMonikermoniker , precyzyjnego monikera, który jest kombinacją własnego monikera dokumentu, który można pobrać za pomocą IOleClientSite::GetMoniker(OLEWHICHMK_CONTAINER), i moniker utworzony na podstawie nazwy ścieżki. Kontrolka może używać tego monikera do powiązania, ale nie jest to moniker kontrolki, która powinna zostać zapisana.

pBindHost
Wskaźnik do interfejsu IBindHost , który będzie używany do tworzenia moniker na podstawie potencjalnie względnej nazwy ścieżki. Jeśli host powiązania jest nieprawidłowy lub nie udostępnia nazwy moniker, wywołanie domyślnie ma wartość Open(lpszFileName,pError). Aby uzyskać opis interfejsu IBindHost , zobacz zestaw Windows SDK.

pServiceProvider
Wskaźnik do interfejsu IServiceProvider . Jeśli dostawca usług jest nieprawidłowy lub nie może dostarczyć usługi dla IBindHost, wywołanie domyślnie ma wartość Open(lpszFileName,pError).

pUnknown
Wskaźnik do interfejsu IUnknown . Jeśli IServiceProvider zostanie znaleziona, funkcja wykonuje zapytania dotyczące IBindHostelementu . Jeśli dostawca usług jest nieprawidłowy lub nie może dostarczyć usługi dla IBindHost, wywołanie domyślnie ma wartość Open(lpszFileName,pError).

Wartość zwracana

Niezero, jeśli plik został otwarty pomyślnie; w przeciwnym razie 0.

Uwagi

To wywołanie inicjuje proces powiązania.

Możesz użyć adresu URL lub nazwy pliku dla parametru lpszURL . Na przykład:

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

- lub -

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

Zobacz też

Klasa CMonikerFile
Wykres hierarchii
Klasa CMonikerFile
Klasa CDataPathProperty