Share via


CWaitCursor-klasse

Opmerking

De Microsoft Foundation Classes-bibliotheek (MFC) wordt nog steeds ondersteund. We voegen echter geen functies meer toe of werken de documentatie bij.

Biedt een éénregelige manier om een wachtcursor weer te geven, die meestal wordt weergegeven als zandloper, terwijl u een lange bewerking uitvoert.

Syntaxis

class CWaitCursor

Leden

Openbare constructors

Naam Description
CWaitCursor::CWaitCursor Hiermee wordt een CWaitCursor object gemaakt en wordt de wachtcursor weergegeven.

Openbare methoden

Naam Description
CWaitCursor::Restore Hiermee herstelt u de wachtcursor nadat deze is gewijzigd.

Opmerkingen

CWaitCursor heeft geen basisklasse.

Voor goede Windows-programmeerprocedures moet u een wachtcursor weergeven wanneer u een bewerking uitvoert die een merkbare hoeveelheid tijd in beslag neemt.

Als u een wachtcursor wilt weergeven, definieert u een CWaitCursor variabele vóór de code die de langdurige bewerking uitvoert. De constructor van het object zorgt ervoor dat de wachtcursor automatisch wordt weergegeven.

Wanneer het object buiten het bereik gaat (aan het einde van het blok waarin het CWaitCursor object wordt gedeclareerd), wordt de cursor ingesteld op de vorige cursor. Met andere woorden, het object voert de benodigde opschoonbewerking automatisch uit.

Opmerking

Vanwege de manier waarop hun constructors en destructors werken, CWaitCursor worden objecten altijd gedeclareerd als lokale variabelen. Ze worden nooit gedeclareerd als globale variabelen en worden ze ook niet toegewezen.new

Als u een bewerking uitvoert waardoor de cursor kan worden gewijzigd, zoals het weergeven van een berichtvak of dialoogvenster, roept u de functie Lid herstellen aan om de wachtcursor te herstellen. Het is geen probleem om aan te roepen Restore , zelfs wanneer er momenteel een wachtcursor wordt weergegeven.

Een andere manier om een wachtcursor weer te geven, is door de combinatie van CCmdTarget::BeginWaitCursor, CCmdTarget::EndWaitCursor en misschien CCmdTarget::RestoreWaitCursor te gebruiken. Het CWaitCursor is echter gemakkelijker te gebruiken omdat u de cursor niet hoeft in te stellen op de vorige cursor wanneer u klaar bent met de lange bewerking.

Opmerking

MFC stelt de cursor in en herstelt deze met behulp van de virtuele functie CWinApp::D oWaitCursor . U kunt deze functie overschrijven om aangepast gedrag te bieden.

Overnamehiërarchie

CWaitCursor

Requirements

Koptekst: afxwin.h

Example

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

Als u een wachtcursor wilt weergeven, declareert u een CWaitCursor object vóór de code die de langdurige bewerking uitvoert.

CWaitCursor();

Opmerkingen

De constructor zorgt ervoor dat de wachtcursor automatisch wordt weergegeven.

Wanneer het object buiten het bereik gaat (aan het einde van het blok waarin het CWaitCursor object wordt gedeclareerd), wordt de cursor ingesteld op de vorige cursor. Met andere woorden, het object voert de benodigde opschoonbewerking automatisch uit.

U kunt profiteren van het feit dat de destructor wordt aangeroepen aan het einde van het blok (dat zich mogelijk vóór het einde van de functie bevindt) om de wachtcursor alleen in een deel van uw functie actief te maken. Deze techniek wordt weergegeven in het tweede voorbeeld hieronder.

Opmerking

Vanwege de manier waarop hun constructors en destructors werken, CWaitCursor worden objecten altijd gedeclareerd als lokale variabelen: ze worden nooit gedeclareerd als globale variabelen en worden ze ook niet toegewezen aan new.

Example

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

Als u de wachtcursor wilt herstellen, roept u deze functie aan nadat u een bewerking hebt uitgevoerd, zoals het weergeven van een berichtvak of dialoogvenster, waardoor de wachtcursor mogelijk wordt gewijzigd in een andere cursor.

void Restore();

Opmerkingen

Het is ok om aan te roepen Restore , zelfs wanneer de wachtcursor momenteel wordt weergegeven.

Als u de wachtcursor wilt herstellen in een andere functie dan de functie waarin het CWaitCursor object is gedeclareerd, kunt u CCmdTarget::RestoreWaitCursor aanroepen.

Example

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

Zie ook

Hiërarchiegrafiek
CCmdTarget::BeginWaitCursor
CCmdTarget::EndWaitCursor
CCmdTarget::RestoreWaitCursor
CWinApp::D oWaitCursor
De muis aanwijzer voor een venster in MFC wijzigen met behulp van Visual C++