Sdílet prostřednictvím


CAsyncMonikerFile – třída

Poskytuje funkce pro použití asynchronních monikerů v ovládacích prvcích ActiveX (dříve ovládací prvky OLE).

Syntaxe

class CAsyncMonikerFile : public CMonikerFile

Členové

Veřejné konstruktory

Název Popis
CAsyncMonikerFile::CAsyncMonikerFile CAsyncMonikerFile Vytvoří objekt.

Veřejné metody

Název Popis
CAsyncMonikerFile::Close Zavře a uvolní všechny prostředky.
CAsyncMonikerFile::GetBinding Načte ukazatel na asynchronní vazbu přenosu.
CAsyncMonikerFile::GetFormatEtc Načte formát dat ve streamu.
CAsyncMonikerFile::Open Otevře soubor asynchronně.

Chráněné metody

Název Popis
CAsyncMonikerFile::CreateBindStatusCallback Vytvoří objekt COM, který implementuje IBindStatusCallback.
CAsyncMonikerFile::GetBindInfo Volá systémová knihovna OLE k vyžádání informací o typu vazby, která se má vytvořit.
CAsyncMonikerFile::GetPriority Volá se systémová knihovna OLE, která získá prioritu vazby.
CAsyncMonikerFile::OnDataAvailable Volá se k poskytování dat, jakmile bude klient k dispozici během asynchronních operací vazby.
CAsyncMonikerFile::OnLowResource Volá se, když jsou prostředky nízké.
CAsyncMonikerFile::OnProgress Volá se k označení průběhu procesu stahování dat.
CAsyncMonikerFile::OnStartBinding Volá se při spuštění vazby.
CAsyncMonikerFile::OnStopBinding Volá se při zastavení asynchronního přenosu.

Poznámky

Odvozeno z CMonikerFile, který je zase odvozen z COleStreamFile, CAsyncMonikerFile používá IMoniker rozhraní pro přístup k libovolnému datovému proudu asynchronně, včetně načítání souborů asynchronně z adresy URL. Soubory mohou být vlastnosti cesty k datům ovládacích prvků ActiveX.

Asynchronní monikery se používají především v aplikacích s podporou internetu a ovládacích prvcích ActiveX k zajištění responzivního uživatelského rozhraní během přenosu souborů. Základním příkladem je použití CDataPathProperty k poskytování asynchronních vlastností pro ovládací prvky ActiveX. Objekt CDataPathProperty opakovaně získá zpětné volání, které bude indikovat dostupnost nových dat během zdlouhavého procesu výměny vlastností.

Další informace o používání asynchronních ovládacích prvků monikers a ovládacích prvků ActiveX v internetových aplikacích najdete v následujících článcích:

Hierarchie dědičnosti

Objekt CObject

CFile

COleStreamFile

CMonikerFile

CAsyncMonikerFile

Požadavky

Hlavička: afxole.h

CAsyncMonikerFile::CAsyncMonikerFile

CAsyncMonikerFile Vytvoří objekt.

CAsyncMonikerFile();

Poznámky

Nevytvoří IBindHost rozhraní. IBindHost se používá pouze v případě, že ji zadáte ve Open členské funkci.

Popis IBindHost rozhraní najdete v sadě Windows SDK.

CAsyncMonikerFile::Close

Voláním této funkce zavřete a uvolněte všechny prostředky.

virtual void Close();

Poznámky

Lze volat u neotevřených nebo již uzavřených souborů.

CAsyncMonikerFile::CreateBindStatusCallback

Vytvoří objekt COM, který implementuje IBindStatusCallback.

virtual IUnknown* CreateBindStatusCallback(IUnknown* pUnkControlling);

Parametry

pUnkControlling
Ukazatel na ovládací prvku neznámý (vnější IUnknown) nebo NULL, pokud se nepoužívá agregace.

Návratová hodnota

Pokud pUnkControlling není NULL, vrátí funkce ukazatel na vnitřní IUnknown u nového objektu COM podporující IBindStatusCallback. Pokud pUnkControlling má hodnotu NULL, vrátí funkce ukazatel na IUnknown nový objekt MODELU COM podporující IBindStatusCallback.

Poznámky

CAsyncMonikerFile vyžaduje objekt COM, který implementuje IBindStatusCallback. MFC implementuje takový objekt a je agregatable. Můžete přepsat CreateBindStatusCallback vrácení vlastního objektu COM. Objekt COM může agregovat implementaci mfc voláním CreateBindStatusCallback s řízením neznámý objekt COM. Objekty COM implementované pomocí CCmdTarget podpory modelu COM mohou načíst řízení neznámé pomocí CCmdTarget::GetControllingUnknown.

Alternativně může objekt COM delegovat na implementaci MFC voláním CreateBindStatusCallback( NULL ).

CAsyncMonikerFile::Open volání CreateBindStatusCallback.

Další informace o asynchronních monikerech a asynchronní vazbě naleznete v rozhraní IBindStatusCallback a jak asynchronní vazby a práce úložiště. Diskuzi o agregaci najdete v tématu Agregace. Všechna tři témata jsou v sadě Windows SDK.

CAsyncMonikerFile::GetBindInfo

Volá se z klienta asynchronního monikeru, aby řekl asynchronnímu monikeru, jak chce vytvořit vazbu.

virtual DWORD GetBindInfo() const;

Návratová hodnota

Načte nastavení pro IBindStatusCallBack. Popis IBindStatusCallback rozhraní najdete v sadě Windows SDK.

Poznámky

Výchozí implementace nastaví vazbu tak, aby byla asynchronní, aby používala médium úložiště (datový proud) a používala model nabízených oznámení dat. Tuto funkci přepište, pokud chcete změnit chování vazby.

Jedním z důvodů, proč to udělat, by bylo vytvořit vazbu pomocí modelu pro vyžádání dat místo modelu pro nabízení dat. V modelu vyžádání dat klient řídí operaci vazby a moniker poskytuje klientovi pouze data při čtení. V modelu nabízených oznámení dat řídí moniker asynchronní operaci vazby a nepřetržitě upozorní klienta vždy, když jsou k dispozici nová data.

CAsyncMonikerFile::GetBinding

Voláním této funkce načtete ukazatel na asynchronní vazbu přenosu.

IBinding* GetBinding() const;

Návratová hodnota

Ukazatel na rozhraní poskytnuté při zahájení asynchronního IBinding přenosu. Vrátí hodnotu NULL, pokud z nějakého důvodu nelze přenos provést asynchronně.

Poznámky

To vám umožní řídit proces přenosu dat prostřednictvím IBinding rozhraní, například pomocí IBinding::Abort, IBinding::Pausea IBinding::Resume.

Popis IBinding rozhraní najdete v sadě Windows SDK.

CAsyncMonikerFile::GetFormatEtc

Voláním této funkce načtěte formát dat ve streamu.

FORMATETC* GetFormatEtc() const;

Návratová hodnota

Ukazatel na strukturu Windows FORMATETC pro aktuálně otevřený datový proud. Vrátí hodnotu NULL, pokud není moniker vázán, pokud není asynchronní nebo pokud asynchronní operace nezačala.

CAsyncMonikerFile::GetPriority

Volá se z klienta asynchronního monikeru, protože proces vazby začne přijímat prioritu danou vláknu pro operaci vazby.

virtual LONG GetPriority() const;

Návratová hodnota

Priorita, při které se bude provádět asynchronní přenos. Jeden ze standardních příznaků priority vlákna: THREAD_PRIORITY_ABOVE_NORMAL, THREAD_PRIORITY_BELOW_NORMAL, THREAD_PRIORITY_HIGHEST, THREAD_PRIORITY_IDLE, THREAD_PRIORITY_LOWEST, THREAD_PRIORITY_NORMAL a THREAD_PRIORITY_TIME_CRITICAL. Popis těchto hodnot najdete ve funkci Windows SetThreadPriority .

Poznámky

GetPriority by nemělo být volána přímo. THREAD_PRIORITY_NORMAL je vrácena výchozí implementací.

CAsyncMonikerFile::OnDataAvailable

Asynchronní volání OnDataAvailable monikeru pro poskytování dat klientovi, jakmile je k dispozici během asynchronních operací vazby.

virtual void OnDataAvailable(DWORD dwSize, DWORD bscfFlag);

Parametry

dwSize
Kumulativní množství (v bajtech) dat dostupných od začátku vazby. Může to být nula, což znamená, že množství dat není pro operaci relevantní nebo že nebyla k dispozici žádná konkrétní částka.

bscfFlag
Hodnota výčtu BSCF. Může to být jedna nebo více následujících hodnot:

  • BSCF_FIRSTDATANOTIFICATION Identifikuje první volání OnDataAvailable pro danou operaci vazby.

  • BSCF_INTERMEDIATEDATANOTIFICATION Identifikuje zprostředkující volání OnDataAvailable operace vazby.

  • BSCF_LASTDATANOTIFICATION Identifikuje poslední volání OnDataAvailable operace vazby.

Poznámky

Výchozí implementace této funkce nic nedělá. Ukázkovou implementaci najdete v následujícím příkladu.

Příklad

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

Volal ho moniker, když jsou prostředky nízké.

virtual void OnLowResource();

Poznámky

Výchozí volání GetBinding( )-> Abort( )implementace .

CAsyncMonikerFile::OnProgress

Tento moniker opakovaně volal k označení aktuálního průběhu této operace vazby, obvykle v přiměřených intervalech během zdlouhavé operace.

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

Parametry

ulProgress
Označuje aktuální průběh operace vazby vzhledem k očekávanému maximu uvedenému v ulProgressMax.

ulProgressMax
Určuje očekávanou maximální hodnotu ulProgress pro dobu trvání volání OnProgress pro tuto operaci.

ulStatusCode
Poskytuje další informace týkající se průběhu operace vazby. Platné hodnoty jsou převzaty z výčtu BINDSTATUS . Informace o možných hodnotách najdete v poznámkách.

szStatusText
Informace o aktuálním průběhu v závislosti na hodnotě ulStatusCode. Informace o možných hodnotách najdete v poznámkách.

Poznámky

Možné hodnoty pro ulStatusCode (a szStatusText pro každou hodnotu) jsou:

Hodnota Popis
BINDSTATUS_FINDINGRESOURCE Operace vazby hledá prostředek, který obsahuje objekt nebo úložiště vázané na. SzStatusText poskytuje zobrazovaný název hledaného prostředku (například "www.microsoft.com").
BINDSTATUS_CONNECTING Operace vazby se připojuje k prostředku, který obsahuje objekt nebo úložiště vázané. SzStatusText poskytuje zobrazovaný název prostředku, ke kterému je připojený (například IP adresa).
BINDSTATUS_SENDINGREQUEST Operace vazby vyžaduje, aby byl objekt nebo úložiště svázané. SzStatusText poskytuje zobrazovaný název objektu (například název souboru).
BINDSTATUS_REDIRECTING Operace vazby byla přesměrována do jiného umístění dat. SzStatusText poskytuje zobrazovaný název nového umístění dat.
BINDSTATUS_USINGCACHEDCOPY Operace vazby načítá požadovaný objekt nebo úložiště z kopie uložené v mezipaměti. SzStatusText má hodnotu NULL.
BINDSTATUS_BEGINDOWNLOADDATA Operace vazby začala přijímat objekt nebo úložiště vázané na. SzStatusText poskytuje zobrazovaný název umístění dat.
BINDSTATUS_DOWNLOADINGDATA Operace vazby nadále přijímá objekt nebo úložiště svázané. SzStatusText poskytuje zobrazovaný název umístění dat.
BINDSTATUS_ENDDOWNLOADDATA Operace vazby dokončila přijetí objektu nebo úložiště vázaného na. SzStatusText poskytuje zobrazovaný název umístění dat.
BINDSTATUS_CLASSIDAVAILABLE Právě se vytvoří instance objektu vázaného na objekt. SzStatusText poskytuje CLSID nového objektu ve formátu řetězce, což klientovi umožňuje v případě potřeby zrušit operaci vazby.

CAsyncMonikerFile::OnStartBinding

Tuto funkci v odvozených třídách přepište, aby se při spouštění vazby prováděly akce.

virtual void OnStartBinding();

Poznámky

Tato funkce je volána zpět pomocí monikeru. Výchozí implementace nic nedělá.

CAsyncMonikerFile::OnStopBinding

Volá se pomocí monikeru na konci operace vazby.

virtual void OnStopBinding(HRESULT hresult, LPCTSTR szError);

Parametry

hresult
HODNOTA HRESULT, která je chybovou nebo varovnou hodnotou.

szErrort
Znakový řetězec popisující chybu.

Poznámky

Přepište tuto funkci, aby prováděla akce, když je přenos zastaven. Ve výchozím nastavení funkce uvolní IBinding.

Popis IBinding rozhraní najdete v sadě Windows SDK.

CAsyncMonikerFile::Open

Voláním této členské funkce otevřete soubor asynchronně.

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
Ukazatel na soubor, který se má otevřít asynchronně. Soubor může být libovolná platná adresa URL nebo název souboru.

Chyba pError
Ukazatel na výjimky souboru. V případě chyby se nastaví na příčinu.

pMoniker
Ukazatel na asynchronní rozhraní IMonikermonikeru , přesný moniker, který je kombinací vlastního monikeru dokumentu, který můžete načíst pomocí IOleClientSite::GetMoniker(OLEWHICHMK_CONTAINER)a moniker vytvořený z názvu cesty. Ovládací prvek může použít tento moniker k vytvoření vazby, ale toto není moniker, který by ovládací prvek měl uložit.

pBindHost
Ukazatel na IBindHost rozhraní, které se použije k vytvoření monikeru z potenciálně relativního názvu cesty. Pokud je hostitel vazby neplatný nebo neposkytuje moniker, volání se nastaví jako výchozí Open(lpszFileName,pError). Popis IBindHost rozhraní najdete v sadě Windows SDK.

pServiceProvider
Ukazatel na IServiceProvider rozhraní. Pokud je poskytovatel služby neplatný nebo se službě nepodaří poskytnout , IBindHostvolání se ve výchozím nastavení nastaví na Open(lpszFileName,pError)hodnotu .

pUnknown
Ukazatel na IUnknown rozhraní. Pokud IServiceProvider se najde, funkce se dotazuje na IBindHost. Pokud je poskytovatel služby neplatný nebo se službě nepodaří poskytnout , IBindHostvolání se ve výchozím nastavení nastaví na Open(lpszFileName,pError)hodnotu .

Návratová hodnota

Nenulové, pokud je soubor úspěšně otevřen; jinak 0.

Poznámky

Toto volání zahájí proces vazby.

Pro parametr lpszURL můžete použít adresu URL nebo název souboru. Příklad:

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

- nebo -

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

Viz také

CMonikerFile – třída
Graf hierarchie
CMonikerFile – třída
CDataPathProperty – třída