Bagikan melalui


Kelas CAsyncMonikerFile

Menyediakan fungsionalitas untuk penggunaan moniker asinkron dalam kontrol ActiveX (sebelumnya kontrol OLE).

Sintaks

class CAsyncMonikerFile : public CMonikerFile

Anggota

Konstruktor Publik

Nama Deskripsi
CAsyncMonikerFile::CAsyncMonikerFile Membuat CAsyncMonikerFile objek.

Metode Publik

Nama Deskripsi
CAsyncMonikerFile::Close Menutup dan merilis semua sumber daya.
CAsyncMonikerFile::GetBinding Mengambil pointer ke pengikatan transfer asinkron.
CAsyncMonikerFile::GetFormatEtc Mengambil format data dalam aliran.
CAsyncMonikerFile::Open Membuka file secara asinkron.

Metode yang Dilindungi

Nama Deskripsi
CAsyncMonikerFile::CreateBindStatusCallback Membuat objek COM yang mengimplementasikan IBindStatusCallback.
CAsyncMonikerFile::GetBindInfo Dipanggil oleh pustaka sistem OLE untuk meminta informasi tentang jenis ikatan yang akan dibuat.
CAsyncMonikerFile::GetPriority Dipanggil oleh pustaka sistem OLE untuk mendapatkan prioritas pengikatan.
CAsyncMonikerFile::OnDataAvailable Dipanggil untuk menyediakan data saat tersedia untuk klien selama operasi pengikatan asinkron.
CAsyncMonikerFile::OnLowResource Dipanggil ketika sumber daya rendah.
CAsyncMonikerFile::OnProgress Dipanggil untuk menunjukkan kemajuan pada proses pengunduhan data.
CAsyncMonikerFile::OnStartBinding Dipanggil saat pengikatan dimulai.
CAsyncMonikerFile::OnStopBinding Dipanggil ketika transfer asinkron dihentikan.

Keterangan

Berasal dari CMonikerFile, yang pada gilirannya berasal dari COleStreamFile, CAsyncMonikerFile menggunakan antarmuka IMoniker untuk mengakses aliran data apa pun secara asinkron, termasuk memuat file secara asinkron dari URL. File dapat menjadi properti jalur data kontrol ActiveX.

Moniker asinkron digunakan terutama dalam aplikasi berkemampuan Internet dan kontrol ActiveX untuk menyediakan antarmuka pengguna yang responsif selama transfer file. Contoh utama dari ini adalah penggunaan CDataPathProperty untuk menyediakan properti asinkron untuk kontrol ActiveX. Objek CDataPathProperty akan berulang kali mendapatkan panggilan balik untuk menunjukkan ketersediaan data baru selama proses pertukaran properti yang panjang.

Untuk informasi selengkapnya tentang cara menggunakan moniker asinkron dan kontrol ActiveX di aplikasi Internet, lihat artikel berikut ini:

Hierarki Warisan

CObject

CFile

COleStreamFile

CMonikerFile

CAsyncMonikerFile

Persyaratan

Header: afxole.h

CAsyncMonikerFile::CAsyncMonikerFile

Membuat CAsyncMonikerFile objek.

CAsyncMonikerFile();

Keterangan

Ini tidak membuat IBindHost antarmuka. IBindHost hanya digunakan jika Anda menyediakannya dalam Open fungsi anggota.

Untuk deskripsi IBindHost antarmuka, lihat Windows SDK.

CAsyncMonikerFile::Close

Panggil fungsi ini untuk menutup dan merilis semua sumber daya.

virtual void Close();

Keterangan

Dapat dipanggil pada file yang belum dibuka atau sudah ditutup.

CAsyncMonikerFile::CreateBindStatusCallback

Membuat objek COM yang mengimplementasikan IBindStatusCallback.

virtual IUnknown* CreateBindStatusCallback(IUnknown* pUnkControlling);

Parameter

pUnkControlling
Penunjuk ke pengontrol yang tidak diketahui (luar IUnknown) atau NULL jika agregasi tidak digunakan.

Tampilkan Nilai

Jika pUnkControlling bukan NULL, fungsi mengembalikan penunjuk ke bagian dalam IUnknown pada objek COM baru yang mendukung IBindStatusCallback. Jika pUnkControlling NULL, fungsi mengembalikan penunjuk ke pada objek COM baru yang IUnknown mendukung IBindStatusCallback.

Keterangan

CAsyncMonikerFile memerlukan objek COM yang mengimplementasikan IBindStatusCallback. MFC mengimplementasikan objek seperti itu, dan dapat diagregasi. Anda dapat mengambil alih CreateBindStatusCallback untuk mengembalikan objek COM Anda sendiri. Objek COM Anda dapat mengagregasi implementasi MFC dengan memanggil CreateBindStatusCallback dengan pengontrol yang tidak diketahui dari objek COM Anda. Objek COM yang diterapkan menggunakan CCmdTarget dukungan COM dapat mengambil pengontrol yang tidak diketahui menggunakan CCmdTarget::GetControllingUnknown.

Secara bergantian, objek COM Anda dapat mendelegasikan ke implementasi MFC dengan memanggil CreateBindStatusCallback( NULL ).

CAsyncMonikerFile::Buka panggilan CreateBindStatusCallback.

Untuk informasi selengkapnya tentang moniker asinkron dan pengikatan asinkron, lihat antarmuka IBindStatusCallback dan Cara Kerja Pengikatan dan Penyimpanan Asinkron. Untuk diskusi agregasi, lihat Agregasi. Ketiga topik ada di Windows SDK.

CAsyncMonikerFile::GetBindInfo

Dipanggil dari klien moniker asinkron untuk memberi tahu moniker asinkron bagaimana ia ingin mengikat.

virtual DWORD GetBindInfo() const;

Tampilkan Nilai

Mengambil pengaturan untuk IBindStatusCallBack. Untuk deskripsi IBindStatusCallback antarmuka, lihat Windows SDK.

Keterangan

Implementasi default mengatur pengikatan menjadi asinkron, untuk menggunakan media penyimpanan (aliran), dan untuk menggunakan model pendorongan data. Ambil alih fungsi ini jika Anda ingin mengubah perilaku pengikatan.

Salah satu alasan untuk melakukan ini adalah untuk mengikat menggunakan model penarikan data alih-alih model pendorongan data. Dalam model penarikan data, klien mendorong operasi pengikatan, dan moniker hanya menyediakan data kepada klien saat dibaca. Dalam model pendorongan data, moniker mendorong operasi pengikatan asinkron dan terus memberi tahu klien setiap kali data baru tersedia.

CAsyncMonikerFile::GetBinding

Panggil fungsi ini untuk mengambil penunjuk ke pengikatan transfer asinkron.

IBinding* GetBinding() const;

Tampilkan Nilai

Pointer ke IBinding antarmuka yang disediakan saat transfer asinkron dimulai. Mengembalikan NULL jika karena alasan apa pun transfer tidak dapat dilakukan secara asinkron.

Keterangan

Ini memungkinkan Anda mengontrol proses transfer data melalui IBinding antarmuka, misalnya, dengan IBinding::Abort, IBinding::Pause, dan IBinding::Resume.

Untuk deskripsi IBinding antarmuka, lihat Windows SDK.

CAsyncMonikerFile::GetFormatEtc

Panggil fungsi ini untuk mengambil format data dalam aliran.

FORMATETC* GetFormatEtc() const;

Tampilkan Nilai

Penunjuk ke struktur Windows FORMATETC untuk aliran yang saat ini dibuka. Mengembalikan NULL jika moniker belum terikat, jika tidak asinkron, atau jika operasi asinkron belum dimulai.

CAsyncMonikerFile::GetPriority

Dipanggil dari klien moniker asinkron saat proses pengikatan mulai menerima prioritas yang diberikan ke utas untuk operasi pengikatan.

virtual LONG GetPriority() const;

Tampilkan Nilai

Prioritas di mana transfer asinkron akan berlangsung. Salah satu bendera prioritas utas standar: THREAD_PRIORITY_ABOVE_NORMAL, THREAD_PRIORITY_BELOW_NORMAL, THREAD_PRIORITY_HIGHEST, THREAD_PRIORITY_IDLE, THREAD_PRIORITY_LOWEST, THREAD_PRIORITY_NORMAL, dan THREAD_PRIORITY_TIME_CRITICAL. Lihat fungsi Windows SetThreadPriority untuk deskripsi nilai-nilai ini.

Keterangan

GetPriority tidak boleh dipanggil secara langsung. THREAD_PRIORITY_NORMAL dikembalikan oleh implementasi default.

CAsyncMonikerFile::OnDataAvailable

Moniker asinkron memanggil OnDataAvailable untuk memberikan data kepada klien saat tersedia, selama operasi pengikatan asinkron.

virtual void OnDataAvailable(DWORD dwSize, DWORD bscfFlag);

Parameter

dwSize
Jumlah kumulatif (dalam byte) data yang tersedia sejak awal pengikatan. Bisa nol, menunjukkan bahwa jumlah data tidak relevan dengan operasi, atau tidak ada jumlah tertentu yang tersedia.

bscfFlag
Nilai enumerasi BSCF. Bisa berupa satu atau beberapa nilai berikut:

  • BSCF_FIRSTDATANOTIFICATION Mengidentifikasi panggilan pertama ke OnDataAvailable untuk operasi pengikatan tertentu.

  • BSCF_INTERMEDIATEDATANOTIFICATION Mengidentifikasi panggilan perantara untuk OnDataAvailable operasi pengikatan.

  • BSCF_LASTDATANOTIFICATION Mengidentifikasi panggilan terakhir ke OnDataAvailable untuk operasi pengikatan.

Keterangan

Implementasi default fungsi ini tidak melakukan apa pun. Lihat contoh berikut untuk implementasi sampel.

Contoh

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

Dipanggil oleh moniker ketika sumber daya rendah.

virtual void OnLowResource();

Keterangan

Implementasi default memanggil GetBinding( )-> Abort( ).

CAsyncMonikerFile::OnProgress

Dipanggil oleh moniker berulang kali untuk menunjukkan kemajuan saat ini dari operasi pengikatan ini, biasanya pada interval yang wajar selama operasi yang panjang.

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

Parameter

ulProgress
Menunjukkan kemajuan operasi pengikatan saat ini relatif terhadap maksimum yang diharapkan yang ditunjukkan dalam ulProgressMax.

ulProgressMax
Menunjukkan nilai maksimum yang diharapkan dari ulProgress selama durasi panggilan ke OnProgress untuk operasi ini.

ulStatusCode
Memberikan informasi tambahan mengenai kemajuan operasi pengikatan. Nilai yang valid diambil dari BINDSTATUS enumerasi. Lihat Komentar untuk nilai yang mungkin.

szStatusText
Informasi tentang kemajuan saat ini, tergantung pada nilai ulStatusCode. Lihat Komentar untuk nilai yang mungkin.

Keterangan

Nilai yang mungkin untuk ulStatusCode (dan szStatusText untuk setiap nilai) adalah:

Nilai Deskripsi
BINDSTATUS_FINDINGRESOURCE Operasi pengikatan menemukan sumber daya yang menyimpan objek atau penyimpanan yang terikat. szStatusText menyediakan nama tampilan sumber daya yang sedang dicari (misalnya, "www.microsoft.com").
BINDSTATUS_CONNECTING Operasi pengikatan terhubung ke sumber daya yang menyimpan objek atau penyimpanan yang terikat. szStatusText menyediakan nama tampilan sumber daya yang tersambung (misalnya, alamat IP).
BINDSTATUS_SENDINGREQUEST Operasi pengikatan meminta objek atau penyimpanan yang terikat. szStatusText menyediakan nama tampilan objek (misalnya, nama file).
BINDSTATUS_REDIRECTING Operasi pengikatan telah dialihkan ke lokasi data yang berbeda. szStatusText menyediakan nama tampilan lokasi data baru.
BINDSTATUS_USINGCACHEDCOPY Operasi pengikatan mengambil objek atau penyimpanan yang diminta dari salinan yang di-cache. szStatusText adalah NULL.
BINDSTATUS_BEGINDOWNLOADDATA Operasi pengikatan telah mulai menerima objek atau penyimpanan yang terikat. szStatusText menyediakan nama tampilan lokasi data.
BINDSTATUS_DOWNLOADINGDATA Operasi pengikatan terus menerima objek atau penyimpanan yang terikat. szStatusText menyediakan nama tampilan lokasi data.
BINDSTATUS_ENDDOWNLOADDATA Operasi pengikatan telah selesai menerima objek atau penyimpanan yang terikat. szStatusText menyediakan nama tampilan lokasi data.
BINDSTATUS_CLASSIDAVAILABLE Instans objek yang terikat baru akan dibuat. SzStatusText menyediakan CLSID objek baru dalam format string, memungkinkan klien kesempatan untuk membatalkan operasi pengikatan, jika diinginkan.

CAsyncMonikerFile::OnStartBinding

Ambil alih fungsi ini di kelas turunan Anda untuk melakukan tindakan saat pengikatan dimulai.

virtual void OnStartBinding();

Keterangan

Fungsi ini dipanggil kembali oleh moniker. Implementasi default tidak melakukan apa pun.

CAsyncMonikerFile::OnStopBinding

Dipanggil oleh moniker di akhir operasi pengikatan.

virtual void OnStopBinding(HRESULT hresult, LPCTSTR szError);

Parameter

hresult
HRESULT yang merupakan nilai kesalahan atau peringatan.

szErrort
String karakter yang menjelaskan kesalahan.

Keterangan

Ambil alih fungsi ini untuk melakukan tindakan ketika transfer dihentikan. Secara default, fungsi merilis IBinding.

Untuk deskripsi IBinding antarmuka, lihat Windows SDK.

CAsyncMonikerFile::Open

Panggil fungsi anggota ini untuk membuka file secara asinkron.

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

Parameter

lpszURL
Penunjuk ke file yang akan dibuka secara asinkron. File dapat berupa URL atau nama file yang valid.

pError
Penunjuk ke pengecualian file. Jika terjadi kesalahan, kesalahan akan diatur ke penyebabnya.

pMoniker
Penunjuk ke antarmuka IMonikermoniker asinkron , moniker yang tepat yang merupakan kombinasi dari moniker dokumen itu sendiri, yang dapat Anda ambil dengan IOleClientSite::GetMoniker(OLEWHICHMK_CONTAINER), dan moniker yang dibuat dari nama jalur. Kontrol dapat menggunakan moniker ini untuk mengikat, tetapi ini bukan moniker yang harus disimpan kontrol.

pBindHost
Penunjuk ke IBindHost antarmuka yang akan digunakan untuk membuat moniker dari nama jalur yang berpotensi relatif. Jika host ikat tidak valid atau tidak menyediakan moniker, panggilan default ke Open(lpszFileName,pError). Untuk deskripsi IBindHost antarmuka, lihat Windows SDK.

pServiceProvider
Penunjuk ke IServiceProvider antarmuka. Jika penyedia layanan tidak valid atau gagal menyediakan layanan untuk IBindHost, panggilan default ke Open(lpszFileName,pError).

pUnknown
Penunjuk ke IUnknown antarmuka. Jika IServiceProvider ditemukan, kueri fungsi untuk IBindHost. Jika penyedia layanan tidak valid atau gagal menyediakan layanan untuk IBindHost, panggilan default ke Open(lpszFileName,pError).

Tampilkan Nilai

Bukan nol jika file berhasil dibuka; jika tidak, 0.

Keterangan

Panggilan ini memulai proses pengikatan.

Anda dapat menggunakan URL atau nama file untuk parameter lpszURL . Contohnya:

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

- atau -

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

Lihat juga

Kelas CMonikerFile
Bagan Hierarki
Kelas CMonikerFile
Kelas CDataPathProperty