Aracılığıyla paylaş


CWaitCursor Sınıfı

Uzun bir işlem yaparken genellikle kum saati olarak görüntülenen bekleme imlecini göstermek için tek satırlık bir yol sağlar.

Sözdizimi

class CWaitCursor

Üyeler

Ortak Oluşturucular

Ad Tanım
CWaitCursor::CWaitCursor Bir CWaitCursor nesne oluşturur ve bekleme imlecini görüntüler.

Genel Yöntemler

Ad Tanım
CWaitCursor::Restore Değişiklik yapıldıktan sonra bekleme imlecini geri yükler.

Açıklamalar

CWaitCursor temel sınıfına sahip değildir.

İyi Windows programlama uygulamaları, fark edilebilir bir süre süren bir işlem gerçekleştirdiğinizde bir bekleme imleci görüntülemenizi gerektirir.

Bekleme imlecini görüntülemek için, uzun işlemi gerçekleştiren koddan önce bir CWaitCursor değişken tanımlamanız gerekir. Nesnenin oluşturucusunun otomatik olarak bekleme imlecinin görüntülenmesine neden olur.

Nesne kapsamın dışına çıktığında (nesnenin bildirildiği CWaitCursor bloğun sonunda), yok edicisi imleci önceki imlece ayarlar. Başka bir deyişle, nesne gerekli temizlemeyi otomatik olarak gerçekleştirir.

Dekont

Oluşturucularının ve yıkıcılarının çalışma şekli nedeniyle nesneler CWaitCursor her zaman yerel değişkenler olarak bildirilir; bunlar hiçbir zaman genel değişken olarak bildirilmez ve ile newayrılmaz.

İleti kutusunu veya iletişim kutusunu görüntüleme gibi imlecin değiştirilmesine neden olabilecek bir işlem gerçekleştirirseniz, bekleme imlecini geri yüklemek için Üyeyi geri yükle işlevini çağırın. Şu anda bir bekleme imleci görüntülendiğinde bile çağrılmasının Restore bir sakıncası yok.

Bekleme imlecini görüntülemenin bir diğer yolu da CCmdTarget::BeginWaitCursor, CCmdTarget::EndWaitCursor ve belki de CCmdTarget::RestoreWaitCursor birleşimini kullanmaktır. Ancak, CWaitCursor uzun işlemi tamamladığınızda imleci önceki imlece ayarlamanız gerekmeyen için kullanmak daha kolaydır.

Dekont

MFC, CWinApp::D oWaitCursor sanal işlevini kullanarak imleci ayarlar ve geri yükler. Özel davranış sağlamak için bu işlevi geçersiz kılabilirsiniz.

Devralma Hiyerarşisi

CWaitCursor

Gereksinimler

Üst bilgi: afxwin.h

Örnek

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

Bekleme imlecini görüntülemek için, uzun işlemi gerçekleştiren koddan önce bir CWaitCursor nesne bildirmeniz gerekir.

CWaitCursor();

Açıklamalar

Oluşturucu otomatik olarak bekleme imlecinin görüntülenmesine neden olur.

Nesne kapsamın dışına çıktığında (nesnenin bildirildiği CWaitCursor bloğun sonunda), yok edicisi imleci önceki imlece ayarlar. Başka bir deyişle, nesne gerekli temizlemeyi otomatik olarak gerçekleştirir.

İşlevinizin yalnızca bir bölümünde bekleme imlecini etkin hale getirmek için, bloğun sonunda yıkıcının çağrılmamasından (işlevin sonundan önce olabilir) yararlanabilirsiniz. Bu teknik aşağıdaki ikinci örnekte gösterilmiştir.

Dekont

Oluşturucularının ve yıkıcılarının çalışma şekli nedeniyle nesneler CWaitCursor her zaman yerel değişkenler olarak bildirilir; hiçbir zaman genel değişken olarak bildirilmez ve ile newayrılmaz.

Örnek

// 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

Bekleme imlecini geri yüklemek için, ileti kutusu veya iletişim kutusu görüntüleme gibi bir işlem gerçekleştirdikten sonra bu işlevi çağırın; bu da bekleme imlecini başka bir imleçle değiştirebilir.

void Restore();

Açıklamalar

Bekleme imleci şu anda görüntülendiğinde bile çağrılmasının Restore bir sakıncası yok.

Nesnenin bildirildiği CWaitCursor işlev dışında bir işlevdeyken bekleme imlecini geri yüklemeniz gerekiyorsa, CCmdTarget::RestoreWaitCursor'ı çağırabilirsiniz.

Örnek

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

Ayrıca bkz.

Hiyerarşi Grafiği
CCmdTarget::BeginWaitCursor
CCmdTarget::EndWaitCursor
CCmdTarget::RestoreWaitCursor
CWinApp::D oWaitCursor
Visual C++ kullanarak MFC'de bir pencerenin fare işaretçisini değiştirme