Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Mengelola konkurensi yang diperlukan oleh interaksi aplikasi OLE.
Sintaks
class COleMessageFilter : public CCmdTarget
Anggota
Konstruktor Publik
| Nama | Deskripsi |
|---|---|
| COleMessageFilter::COleMessageFilter | Membuat COleMessageFilter objek. |
Metode Publik
| Nama | Deskripsi |
|---|---|
| COleMessageFilter::BeginBusyState | Menempatkan aplikasi dalam status sibuk. |
| COleMessageFilter::EnableBusyDialog | Mengaktifkan dan menonaktifkan kotak dialog yang muncul saat aplikasi yang disebut sibuk. |
| COleMessageFilter::EnableNotRespondingDialog | Mengaktifkan dan menonaktifkan kotak dialog yang muncul saat aplikasi yang disebut tidak merespons. |
| COleMessageFilter::EndBusyState | Mengakhiri status sibuk aplikasi. |
| COleMessageFilter::OnMessagePending | Dipanggil oleh kerangka kerja untuk memproses pesan saat panggilan OLE sedang berlangsung. |
| COleMessageFilter::Register | Mendaftarkan filter pesan dengan DLL sistem OLE. |
| COleMessageFilter::Cabut | Mencabut pendaftaran filter pesan dengan DLL sistem OLE. |
| COleMessageFilter::SetBusyReply | Menentukan balasan aplikasi yang sibuk ke panggilan OLE. |
| COleMessageFilter::SetMessagePendingDelay | Menentukan berapa lama aplikasi menunggu respons terhadap panggilan OLE. |
| COleMessageFilter::SetRetryReply | Menentukan balasan aplikasi panggilan ke aplikasi yang sibuk. |
Keterangan
Kelas COleMessageFilter ini berguna dalam aplikasi server pengeditan visual dan kontainer, serta aplikasi otomatisasi OLE. Untuk aplikasi server yang sedang dipanggil, kelas ini dapat digunakan untuk membuat aplikasi "sibuk" sehingga panggilan masuk dari aplikasi kontainer lain dibatalkan atau dicoba kembali nanti. Kelas ini juga dapat digunakan untuk menentukan tindakan yang akan diambil oleh aplikasi panggilan ketika aplikasi yang disebut sibuk.
Penggunaan umum adalah untuk aplikasi server untuk memanggil BeginBusyState dan EndBusyState ketika akan berbahaya bagi dokumen atau objek lain yang dapat diakses OLE untuk dihancurkan. Panggilan ini dilakukan di CWinApp::OnIdle selama pembaruan antarmuka pengguna.
Secara default, COleMessageFilter objek dialokasikan saat aplikasi diinisialisasi. Ini dapat diambil dengan AfxOleGetMessageFilter.
Ini adalah kelas lanjutan; Anda jarang perlu bekerja dengannya secara langsung.
Untuk informasi selengkapnya, lihat artikel Server: Menerapkan Server.
Hierarki Warisan
COleMessageFilter
Persyaratan
Header: afxole.h
COleMessageFilter::BeginBusyState
Panggil fungsi ini untuk memulai status sibuk.
virtual void BeginBusyState();
Keterangan
Ini bekerja bersama dengan EndBusyState untuk mengontrol status sibuk aplikasi. Fungsi SetBusyReply menentukan balasan aplikasi untuk memanggil aplikasi saat sibuk.
Dan BeginBusyState EndBusyState memanggil kenaikan dan penurunan, masing-masing, penghitung yang menentukan apakah aplikasi sibuk. Misalnya, dua panggilan ke BeginBusyState dan satu panggilan ke EndBusyState masih mengakibatkan status sibuk. Untuk membatalkan status sibuk, perlu untuk memanggil EndBusyState frekuensi BeginBusyState yang sama telah dipanggil.
Secara default, kerangka kerja memasuki status sibuk selama pemrosesan diam, yang dilakukan oleh CWinApp::OnIdle. Saat aplikasi menangani pemberitahuan ON_COMMANDUPDATEUI, panggilan masuk ditangani nanti, setelah pemrosesan diam selesai.
COleMessageFilter::COleMessageFilter
COleMessageFilter Membuat objek.
COleMessageFilter();
COleMessageFilter::EnableBusyDialog
Mengaktifkan dan menonaktifkan kotak dialog sibuk, yang ditampilkan saat penundaan pesan tertunda kedaluwarsa (lihat SetRetryReply) selama panggilan OLE.
void EnableBusyDialog(BOOL bEnableBusy = TRUE);
Parameter
bEnableBusy
Menentukan apakah kotak dialog "sibuk" diaktifkan atau dinonaktifkan.
COleMessageFilter::EnableNotRespondingDialog
Mengaktifkan dan menonaktifkan kotak dialog "tidak merespons", yang ditampilkan jika papan ketik atau pesan mouse tertunda selama panggilan OLE dan waktu panggilan habis.
void EnableNotRespondingDialog(BOOL bEnableNotResponding = TRUE);
Parameter
bEnableNotResponding
Menentukan apakah kotak dialog "tidak merespons" diaktifkan atau dinonaktifkan.
COleMessageFilter::EndBusyState
Panggil fungsi ini untuk mengakhiri status sibuk.
virtual void EndBusyState();
Keterangan
Ini bekerja bersama dengan BeginBusyState untuk mengontrol status sibuk aplikasi. Fungsi SetBusyReply menentukan balasan aplikasi untuk memanggil aplikasi saat sibuk.
Dan BeginBusyState EndBusyState memanggil kenaikan dan penurunan, masing-masing, penghitung yang menentukan apakah aplikasi sibuk. Misalnya, dua panggilan ke BeginBusyState dan satu panggilan ke EndBusyState masih mengakibatkan status sibuk. Untuk membatalkan status sibuk, perlu untuk memanggil EndBusyState frekuensi BeginBusyState yang sama telah dipanggil.
Secara default, kerangka kerja memasuki status sibuk selama pemrosesan diam, yang dilakukan oleh CWinApp::OnIdle. Saat aplikasi menangani pemberitahuan ON_UPDATE_COMMAND_UI, panggilan masuk ditangani setelah pemrosesan diam selesai.
COleMessageFilter::OnMessagePending
Dipanggil oleh kerangka kerja untuk memproses pesan saat panggilan OLE sedang berlangsung.
virtual BOOL OnMessagePending(const MSG* pMsg);
Parameter
pMsg
Penunjuk ke pesan yang tertunda.
Tampilkan Nilai
Nonzero pada kesuksesan; jika tidak, 0.
Keterangan
Saat aplikasi panggilan menunggu panggilan selesai, kerangka kerja memanggil OnMessagePending dengan penunjuk ke pesan yang tertunda. Secara default, kerangka kerja mengirimkan pesan WM_PAINT, sehingga pembaruan jendela dapat terjadi selama panggilan yang memakan waktu lama.
Anda harus mendaftarkan filter pesan Anda melalui panggilan ke Daftar sebelum dapat menjadi aktif.
COleMessageFilter::Register
Mendaftarkan filter pesan dengan DLL sistem OLE.
BOOL Register();
Tampilkan Nilai
Nonzero pada kesuksesan; jika tidak, 0.
Keterangan
Filter pesan tidak berpengaruh kecuali terdaftar di DLL sistem. Biasanya kode inisialisasi aplikasi Anda mendaftarkan filter pesan aplikasi. Filter pesan lain yang didaftarkan oleh aplikasi Anda harus dicabut sebelum program dihentikan dengan panggilan ke Cabut.
Filter pesan default kerangka kerja secara otomatis didaftarkan selama inisialisasi dan dicabut saat penghentian.
COleMessageFilter::Cabut
Mencabut pendaftaran sebelumnya yang dilakukan oleh panggilan ke Daftar.
void Revoke();
Keterangan
Filter pesan harus dicabut sebelum program berakhir.
Filter pesan default, yang dibuat dan didaftarkan secara otomatis oleh kerangka kerja, juga dicabut secara otomatis.
COleMessageFilter::SetBusyReply
Fungsi ini mengatur "balasan sibuk" aplikasi.
void SetBusyReply(SERVERCALL nBusyReply);
Parameter
nBusyReply
Nilai dari SERVERCALL enumerasi, yang didefinisikan dalam COMPOBJ.H. Ini dapat memiliki salah satu nilai berikut:
SERVERCALL_ISHANDLED Aplikasi dapat menerima panggilan tetapi mungkin gagal dalam memproses panggilan tertentu.
SERVERCALL_REJECTED Aplikasi mungkin tidak akan pernah dapat memproses panggilan.
SERVERCALL_RETRYLATER Aplikasi sementara dalam keadaan di mana aplikasi tidak dapat memproses panggilan.
Keterangan
Fungsi BeginBusyState dan EndBusyState mengontrol status sibuk aplikasi.
Ketika aplikasi telah dibuat sibuk dengan panggilan ke BeginBusyState, aplikasi merespons panggilan dari DLL sistem OLE dengan nilai yang ditentukan oleh pengaturan terakhir .SetBusyReply Aplikasi panggilan menggunakan balasan sibuk ini untuk menentukan tindakan apa yang harus diambil.
Secara default, balasan sibuk SERVERCALL_RETRYLATER. Balasan ini menyebabkan aplikasi panggilan mencoba kembali panggilan sesegera mungkin.
COleMessageFilter::SetMessagePendingDelay
Menentukan berapa lama aplikasi panggilan menunggu respons dari aplikasi yang disebut sebelum mengambil tindakan lebih lanjut.
void SetMessagePendingDelay(DWORD nTimeout = 5000);
Parameter
nTimeout
Jumlah milidetik untuk penundaan pesan yang tertunda.
Keterangan
Fungsi ini berfungsi dalam konser dengan SetRetryReply.
COleMessageFilter::SetRetryReply
Menentukan tindakan aplikasi panggilan saat menerima respons sibuk dari aplikasi yang disebut.
void SetRetryReply(DWORD nRetryReply = 0);
Parameter
nRetryReply
Jumlah milidetik antara percobaan ulang.
Keterangan
Ketika aplikasi yang dipanggil menunjukkan bahwa aplikasi sibuk, aplikasi panggilan dapat memutuskan untuk menunggu sampai server tidak lagi sibuk, untuk segera mencoba kembali, atau mencoba kembali setelah interval yang ditentukan. Ini juga dapat memutuskan untuk membatalkan panggilan sama sekali.
Respons penelepon dikontrol oleh fungsi SetRetryReply dan SetMessagePendingDelay. SetRetryReply menentukan berapa lama aplikasi panggilan harus menunggu antara percobaan kembali untuk panggilan tertentu. SetMessagePendingDelay menentukan berapa lama aplikasi panggilan menunggu respons dari server sebelum mengambil tindakan lebih lanjut.
Biasanya default dapat diterima dan tidak perlu diubah. Kerangka kerja mencoba kembali panggilan setiap milidetik nRetryReply sampai panggilan dilalui atau penundaan pesan yang tertunda telah kedaluwarsa. Nilai 0 untuk nRetryReply menentukan coba lagi segera, dan - 1 menentukan pembatalan panggilan.
Ketika penundaan pesan tertunda telah kedaluwarsa, "kotak dialog sibuk" OLE (lihat COleBusyDialog) ditampilkan sehingga pengguna dapat memilih untuk membatalkan atau mencoba kembali panggilan. Panggil EnableBusyDialog untuk mengaktifkan atau menonaktifkan kotak dialog ini.
Ketika keyboard atau pesan mouse tertunda selama panggilan dan panggilan telah kehabisan waktu (melebihi penundaan pesan yang tertunda), kotak dialog "tidak merespons" ditampilkan. Panggil EnableNotRespondingDialog untuk mengaktifkan atau menonaktifkan kotak dialog ini. Biasanya keadaan urusan ini menunjukkan bahwa ada sesuatu yang salah dan pengguna semakin tidak sabar.
Ketika dialog dinonaktifkan, "balasan coba lagi" saat ini selalu digunakan untuk panggilan ke aplikasi yang sibuk.