Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
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++