Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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