Megosztás a következőn keresztül:


CWaitCursor osztály

Megjegyzés:

A Microsoft Foundation Classes (MFC) könyvtár továbbra is támogatott. A továbbiakban azonban nem adunk hozzá funkciókat, és nem frissítjük a dokumentációt.

Egysoros módot biztosít a várakozási kurzor megjelenítésére, amely általában homokóraként jelenik meg, miközben hosszadalmas műveletet hajt végre.

Szemantika

class CWaitCursor

Tagok

Nyilvános konstruktorok

Név Description
CWaitCursor::CWaitCursor Objektumot CWaitCursor hoz létre, és megjeleníti a várakozási kurzort.

Nyilvános módszerek

Név Description
CWaitCursor::Visszaállítás A módosítás után visszaállítja a várakozási kurzort.

Megjegyzések

CWaitCursor nem rendelkezik alaposztálysal.

A Windows megfelelő programozási eljárásai megkövetelik a várakozási kurzor megjelenítését, amikor olyan műveletet hajt végre, amely jelentős időt vesz igénybe.

A várakozási kurzor megjelenítéséhez definiáljon egy változót CWaitCursor a hosszadalmas műveletet végrehajtó kód előtt. Az objektum konstruktora automatikusan megjeleníti a várakozási kurzort.

Amikor az objektum kikerül a hatókörből (annak a blokknak a végén, amelyben az CWaitCursor objektum deklarálva van), a destruktor az előző kurzorra állítja a kurzort. Más szóval az objektum automatikusan elvégzi a szükséges tisztítást.

Megjegyzés:

A konstruktorok és a destruktorok működése CWaitCursor miatt az objektumok mindig helyi változókként vannak deklarálva – soha nem deklarálják őket globális változóként, és nem is osztják ki newőket.

Ha olyan műveletet hajt végre, amely a kurzor módosítását okozhatja(például üzenetmező vagy párbeszédpanel megjelenítése), hívja meg a Tag visszaállítása függvényt a várakozási kurzor visszaállításához. A hívás Restore akkor is rendben van, ha éppen megjelenik egy várakozási kurzor.

A várakozási kurzor megjelenítésének másik módja a CCmdTarget::BeginWaitCursor, CCmdTarget::EndWaitCursor és talán a CCmdTarget::RestoreWaitCursor kombináció használata. A használat azonban egyszerűbb, CWaitCursor mert nem kell a kurzort az előző kurzorra állítania, amikor végzett a hosszú művelettel.

Megjegyzés:

Az MFC beállítja és visszaállítja a kurzort a CWinApp::D oWaitCursor virtuális függvény használatával. Ezt a függvényt felülbírálhatja, hogy egyéni viselkedést biztosítson.

Öröklési hierarchia

CWaitCursor

Requirements

fejléc: 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

A várakozási kurzor megjelenítéséhez csak deklaráljon egy CWaitCursor objektumot a hosszadalmas műveletet végrehajtó kód előtt.

CWaitCursor();

Megjegyzések

A konstruktor automatikusan megjeleníti a várakozási kurzort.

Amikor az objektum kikerül a hatókörből (annak a blokknak a végén, amelyben az CWaitCursor objektum deklarálva van), a destruktor az előző kurzorra állítja a kurzort. Más szóval az objektum automatikusan elvégzi a szükséges tisztítást.

Kihasználhatja azt a tényt, hogy a destruktor a blokk végén van meghívva (amely a függvény vége előtt lehet), hogy a várakozási kurzor csak a függvény egy részén legyen aktív. Ez a technika az alábbi második példában látható.

Megjegyzés:

A konstruktorok és a destruktorok működése CWaitCursor miatt az objektumok mindig helyi változókként vannak deklarálva – soha nem deklarálják őket globális változókként, és nem is osztják ki newőket.

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::Visszaállítás

A várakozási kurzor visszaállításához hívja meg ezt a függvényt egy művelet végrehajtása után, például megjeleníthet egy üzenetmezőt vagy párbeszédpanelt, amely egy másik kurzorra módosíthatja a várakozási kurzort.

void Restore();

Megjegyzések

A hívás Restore akkor is rendben van, ha a várakozási kurzor éppen megjelenik.

Ha a várakozási kurzort az objektum deklarálási funkcióján kívüli függvényben kell visszaállítania, meghívhatja a CWaitCursorCCmdTarget::RestoreWaitCursor parancsot.

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

Lásd még

hierarchiadiagram
CCmdTarget::BeginWaitCursor
CCmdTarget::EndWaitCursor
CCmdTarget::RestoreWaitCursor
CWinApp::D oWaitCursor
Ablak egérmutatójának módosítása az MFC-ben a Visual C++ használatával