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
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 IMoniker
moniker 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