Kelas CWaitCursor
Menyediakan cara satu baris untuk menampilkan kursor tunggu, yang biasanya ditampilkan sebagai jam lapis, saat Anda melakukan operasi yang panjang.
Sintaks
class CWaitCursor
Anggota
Konstruktor Publik
Nama | Deskripsi |
---|---|
CWaitCursor::CWaitCursor | Membuat CWaitCursor objek dan menampilkan kursor tunggu. |
Metode Publik
Nama | Deskripsi |
---|---|
CWaitCursor::Restore | Memulihkan kursor tunggu setelah diubah. |
Keterangan
CWaitCursor
tidak memiliki kelas dasar.
Praktik pemrograman Windows yang baik mengharuskan Anda menampilkan kursor tunggu setiap kali Anda melakukan operasi yang membutuhkan waktu yang nyata.
Untuk menampilkan kursor tunggu, cukup tentukan CWaitCursor
variabel sebelum kode yang melakukan operasi panjang. Konstruktor objek secara otomatis menyebabkan kursor tunggu ditampilkan.
Ketika objek keluar dari cakupan (di akhir blok tempat objek dideklarasikan CWaitCursor
), destruktornya mengatur kursor ke kursor sebelumnya. Dengan kata lain, objek melakukan pembersihan yang diperlukan secara otomatis.
Catatan
Karena cara kerja konstruktor dan destruktor mereka, CWaitCursor
objek selalu dinyatakan sebagai variabel lokal — mereka tidak pernah dinyatakan sebagai variabel global atau dialokasikan dengan new
.
Jika Anda melakukan operasi yang dapat menyebabkan kursor diubah, seperti menampilkan kotak pesan atau kotak dialog, panggil fungsi Pulihkan anggota untuk memulihkan kursor tunggu. Tidak apa-apa untuk memanggil Restore
bahkan ketika kursor tunggu saat ini ditampilkan.
Cara lain untuk menampilkan kursor tunggu adalah dengan menggunakan kombinasi CCmdTarget::BeginWaitCursor, CCmdTarget::EndWaitCursor, dan mungkin CCmdTarget::RestoreWaitCursor. Namun, CWaitCursor
lebih mudah digunakan karena Anda tidak perlu mengatur kursor ke kursor sebelumnya ketika Anda selesai dengan operasi yang panjang.
Catatan
MFC mengatur dan memulihkan kursor menggunakan fungsi virtual CWinApp::D oWaitCursor . Anda dapat mengambil alih fungsi ini untuk memberikan perilaku kustom.
Hierarki Warisan
CWaitCursor
Persyaratan
Header: afxwin.h
Contoh
BOOL SomeLengthyProcess()
{
CWaitCursor wait;
//Do the lengthy processing.
Sleep(1000);
AfxMessageBox(_T("Some result")); //This changes the cursor.
wait.Restore(); //Restore the Wait cursor.
//Continue Processing.
Sleep(1000);
//The destructor changes the cursor back to Regular cursor.
return TRUE;
}
CWaitCursor::CWaitCursor
Untuk menampilkan kursor tunggu, cukup deklarasikan CWaitCursor
objek sebelum kode yang melakukan operasi panjang.
CWaitCursor();
Keterangan
Konstruktor secara otomatis menyebabkan kursor tunggu ditampilkan.
Ketika objek keluar dari cakupan (di akhir blok tempat objek dideklarasikan CWaitCursor
), destruktornya mengatur kursor ke kursor sebelumnya. Dengan kata lain, objek melakukan pembersihan yang diperlukan secara otomatis.
Anda dapat memanfaatkan fakta bahwa destruktor dipanggil di akhir blok (yang mungkin sebelum akhir fungsi) untuk membuat kursor tunggu hanya aktif di bagian fungsi Anda. Teknik ini ditunjukkan pada contoh kedua di bawah ini.
Catatan
Karena bagaimana konstruktor dan destruktor mereka bekerja, CWaitCursor
objek selalu dinyatakan sebagai variabel lokal — mereka tidak pernah dinyatakan sebagai variabel global, juga tidak dialokasikan dengan new
.
Contoh
// The following example illustrates the most common case
// of displaying the wait cursor during some lengthy
// processing.
void LengthyFunction()
{
// perhaps you display a dialog box before displaying a
// wait cursor
CWaitCursor wait; // display wait cursor
// do some lengthy processing
Sleep(1000);
} // destructor automatically removes the wait cursor
// This example shows using a CWaitCursor object inside a block
// so the wait cursor is displayed only while the program is
// performing a lengthy operation.
void ConditionalFunction()
{
if (SomeCondition)
{
CWaitCursor wait; // display wait cursor in this block only
// do some lengthy processing
Sleep(1000);
} // at this point, the destructor removes the wait cursor
else
{
// no wait cursor--only quick processing
}
}
CWaitCursor::Restore
Untuk memulihkan kursor tunggu, panggil fungsi ini setelah melakukan operasi, seperti menampilkan kotak pesan atau kotak dialog, yang mungkin mengubah kursor tunggu ke kursor lain.
void Restore();
Keterangan
Tidak apa-apa untuk memanggil Restore
bahkan ketika kursor tunggu saat ini ditampilkan.
Jika Anda perlu memulihkan kursor tunggu saat berada dalam fungsi selain yang objeknya dideklarasikan CWaitCursor
, Anda dapat memanggil CCmdTarget::RestoreWaitCursor.
Contoh
// This example illustrates performing an operation
// which changes the wait cursor. You should call
// CWaitCursor::Restore to restore the wait
// cursor after an operation which changes the cursor.
void AnotherLengthyFunction()
{
CWaitCursor wait; // display wait cursor
// do some lengthy processing
Sleep(1000);
// The dialog box will normally change the cursor to
// the standard arrow cursor.
CFileDialog dlg(TRUE);
dlg.DoModal();
// It is necessary to call Restore here in order
// to change the cursor back to the wait cursor.
wait.Restore();
// do some more lengthy processing
Sleep(1000);
// destructor automatically removes the wait cursor
}
// If the wait cursor is changed by a function called by
// the function which created the wait cursor, you
// can call CCmdTarget::RestoreWaitCursor to restore
// the wait cursor.
void CalledFunction()
{
CFileDialog dlg(TRUE);
dlg.DoModal();
// Since CWinApp is derived from CCmdTarget, we can use a
// pointer to our application object to make the call to
// CCmdTarget::RestoreWaitCursor.
AfxGetApp()->RestoreWaitCursor();
// Yet more lengthy processing...
Sleep(1000);
}
Lihat juga
Bagan Hierarki
CCmdTarget::BeginWaitCursor
CCmdTarget::EndWaitCursor
CCmdTarget::RestoreWaitCursor
CWinApp::D oWaitCursor
Mengubah penunjuk mouse untuk jendela di MFC dengan menggunakan Visual C++