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
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::Pause
a 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í IMoniker
monikeru , 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 , IBindHost
volá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 , IBindHost
volá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