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 IBindStatusCallback element . |
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
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 IBindStatusCallback
element .
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 IBindStatusCallback
funkcję .
Uwagi
CAsyncMonikerFile
wymaga obiektu COM, który implementuje IBindStatusCallback
element . 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::Abort
IBinding::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 IBinding
element .
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 IMoniker
moniker , 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 IBindHost
elementu . 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