CCmdTarget-Klasse

Die Basisklasse für die Microsoft Foundation Class-Bibliothek Message Map-Architektur.

Syntax

class CCmdTarget : public CObject

Member

Öffentliche Konstruktoren

name BESCHREIBUNG
CCmdTarget::CCmdTarget Erstellt ein CCmdTarget-Objekt.

Öffentliche Methoden

name BESCHREIBUNG
CCmdTarget::BeginWaitCursor Zeigt den Cursor als Sanduhrcursor an.
CCmdTarget::DoOleVerb Bewirkt, dass eine von einem OLE-Verb angegebene Aktion ausgeführt wird.
CCmdTarget::EnableAutomation Ermöglicht ole-Automatisierung für das CCmdTarget -Objekt.
CCmdTarget::EnableConnections Aktiviert das Ereignis, das über Verbindungspunkte aus wird.
CCmdTarget::EnableTypeLib Aktiviert die Typbibliothek eines Objekts.
CCmdTarget::EndWaitCursor Kehrt zum vorherigen Cursor zurück.
CCmdTarget::EnumOleVerbs Enumeriert die OLE-Verben eines Objekts.
CCmdTarget::FromIDispatch Gibt einen Zeiger auf das -Objekt zurück CCmdTarget , das dem Zeiger IDispatch zugeordnet ist.
CCmdTarget::GetDispatchIID Ruft die primäre Dispatchschnittstellen-ID ab.
CCmdTarget::GetIDispatch Gibt einen Zeiger auf das -Objekt zurück IDispatch , das dem -Objekt zugeordnet CCmdTarget ist.
CCmdTarget::GetTypeInfoCount Ruft die Anzahl der Schnittstellen für Typinformationen ab, die ein -Objekt bietet.
CCmdTarget::GetTypeInfoOfGuid Ruft die Typenbeschreibung ab, die der angegebenen GUID entspricht.
CCmdTarget::GetTypeLib Ruft einen Zeiger auf eine Typbibliothek ab.
CCmdTarget::GetTypeLibCache Ruft den Typbibliothekscache ab.
CCmdTarget::IsInvokeAllowed Aktiviert den Aufruf der Automatisierungsmethode.
CCmdTarget::IsResultExpected Gibt einen Wert ungleich 0 (null) zurück, wenn eine Automatisierungsfunktion einen Wert zurückgeben soll.
CCmdTarget::OnCmdMsg Leitet Befehlsmeldungen weiter und leitet sie weiter.
CCmdTarget::OnFinalRelease Bereinigt, nachdem der letzte OLE-Verweis freigegeben wurde.
CCmdTarget::RestoreWaitCursor Stellt den Sanduhrcursor wieder auf.

Hinweise

Eine Meldungszuordnung leitet Befehle oder Nachrichten an die Memberfunktionen weiter, die Sie schreiben, um sie zu behandeln. (Ein Befehl ist eine Meldung aus einem Menüelement, einer Befehlsschaltfläche oder einer Zugriffstaste.)

Zu den von abgeleiteten Schlüsselframeworkklassen CCmdTarget zählen CView, CWinAppCDocument, CWnd, und CFrameWnd. Wenn Sie beabsichtigen, dass eine neue Klasse Nachrichten behandelt, leiten Sie die Klasse von einer dieser von CCmdTargetabgeleiteten Klassen ab. Sie leiten eine Klasse selten direkt von CCmdTarget ab.

Eine Übersicht über Befehlsziele und Routing OnCmdMsg finden Sie unter Befehlsziele, Befehlsrouting und Zuordnungsmeldungen.

CCmdTarget enthält Memberfunktionen, die die Anzeige eines Sanduhrcursors behandeln. Zeigen Sie den Sanduhrcursor an, wenn Sie erwarten, dass ein Befehl ein spürbares Zeitintervall für die Ausführung inNehmbar nimmt.

Dispatchzuordnungen werden ähnlich wie Meldungszuordnungen verwendet, um OLE-Automatisierungsfunktionen IDispatch verfügbar zu machen. Durch das Verfügbarstellen dieser Schnittstelle können andere Anwendungen (z. B. Visual Basic) ihre Anwendung aufrufen.

Vererbungshierarchie

Cobject

CCmdTarget

Anforderungen

Header:afxwin.h

CCmdTarget::BeginWaitCursor

Rufen Sie diese Funktion auf, um den Cursor als Sanduhr anzuzeigen, wenn Sie erwarten, dass ein Befehl ein spürbares Zeitintervall für die Ausführung inNehmbar nimmt.

void BeginWaitCursor();

Hinweise

Das Framework ruft diese Funktion auf, um dem Benutzer zu zeigen, dass es ausgelastet ist, CDocument z. B. wenn ein -Objekt sich selbst in einer Datei lädt oder speichert.

Die Aktionen von BeginWaitCursor sind außerhalb eines einzelnen Meldungshandlers nicht immer effektiv, da andere Aktionen, OnSetCursor z. B. die Behandlung, den Cursor ändern könnten.

Rufen Sie EndWaitCursor auf, um den vorherigen Cursor wiederherzustellen.

Beispiel

// The following example illustrates the most common case
// of displaying the hourglass cursor during some lengthy
// processing of a command handler implemented in some
// CCmdTarget-derived class, such as a document or view.
void CMyView::OnBeginSleepEnd()
{
   BeginWaitCursor(); // display the hourglass cursor
   // do some lengthy processing
   Sleep(3000);
   EndWaitCursor(); // remove the hourglass cursor
}

// The next example illustrates RestoreWaitCursor.
void CMyView::OnBeginDlgRestore()
{
   BeginWaitCursor(); // display the hourglass cursor
   // do some lengthy processing
   // The dialog box will normally change the cursor to
   // the standard arrow cursor, and leave the cursor in
   // as the standard arrow cursor when the dialog box is
   // closed.
   CFileDialog dlg(TRUE);
   dlg.DoModal();

   // It is necessary to call RestoreWaitCursor here in order
   // to change the cursor back to the hourglass cursor.
   RestoreWaitCursor();
   // do some more lengthy processing
   Sleep(3000);
   EndWaitCursor(); // remove the hourglass cursor
}

// In the above example, the dialog was clearly invoked between
// the pair of calls to BeginWaitCursor and EndWaitCursor.
// Sometimes it may not be clear whether the dialog is invoked
// in between a pair of calls to BeginWaitCursor and EndWaitCursor.
// It is permissible to call RestoreWaitCursor, even if
// BeginWaitCursor was not previously called.  This case is
// illustrated below, where CMyView::AnotherFunction does not
// need to know whether it was called in the context of an
// hourglass cursor.
void CMyView::OnDlgRestore()
{
   // some processing ...
   CFileDialog dlg(TRUE);
   dlg.DoModal();
   RestoreWaitCursor();

   // some more processing ...
}

// If the dialog is invoked from a member function of
// some non-CCmdTarget, then you can call CWinApp::DoWaitCursor
// with a 0 parameter value to restore the hourglass cursor.
void CMyObject::OnDlgDoWait()
{
   CFileDialog dlg(TRUE);
   dlg.DoModal();
   AfxGetApp()->DoWaitCursor(0); // same as CCmdTarget::RestoreWaitCursor
}

CCmdTarget::CCmdTarget

Erstellt ein CCmdTarget-Objekt.

CCmdTarget();

CCmdTarget::DoOleVerb

Bewirkt, dass eine von einem OLE-Verb angegebene Aktion ausgeführt wird.

BOOL DoOleVerb(
    LONG iVerb,
    LPMSG lpMsg,
    HWND hWndParent,
    LPCRECT lpRect);

Parameter

iVerb
Numerischer Bezeichner des Verbs.

lpMsg
Zeiger auf die -Struktur MSG , die das Ereignis (z. B. einen Doppelklick) beschreibt, das das Verb aufgerufen hat.

hWndParent
Das Handle des Dokumentfensters, das das Objekt enthält.

lpRect
Zeiger auf die -Struktur RECT , die die Koordinaten in Pixel enthält, die das umgebundene Rechteck eines Objekts in definieren hWndParent.

Rückgabewert

TRUE, wenn dies erfolgreich ist, andernfalls FALSE.

Hinweise

Diese Memberfunktion ist im Grunde eine Implementierung von IOleObject::DoVerb. Die möglichen Aktionen werden von aufzählt CCmdTarget::EnumOleVerbs.

CCmdTarget::EnableAutomation

Rufen Sie diese Funktion auf, um die OLE-Automatisierung für ein Objekt zu aktivieren.

void EnableAutomation();

Hinweise

Diese Funktion wird in der Regel vom Konstruktor Ihres -Objekts aufgerufen und sollte nur aufgerufen werden, wenn eine Dispatchzuordnung für die Klasse deklariert wurde. Weitere Informationen zur Automatisierung finden Sie in den Artikeln Automatisierungsclients und Automatisierungsserver.

CCmdTarget::EnableConnections

Aktiviert das Ereignis, das über Verbindungspunkte aus wird.

void EnableConnections();

Hinweise

Um Verbindungspunkte zu aktivieren, rufen Sie diese Memberfunktion im Konstruktor der abgeleiteten Klasse auf.

CCmdTarget::EnableTypeLib

Aktiviert die Typbibliothek eines Objekts.

void EnableTypeLib();

Hinweise

Rufen Sie diese Memberfunktion im Konstruktor Ihres von abgeleiteten CCmdTargetObjekts auf, wenn sie Typinformationen enthält.

CCmdTarget::EndWaitCursor

Rufen Sie diese Funktion auf, nachdem Sie die BeginWaitCursor Memberfunktion aufgerufen haben, um vom Sanduhrcursor zum vorherigen Cursor zurückzukehren.

void EndWaitCursor();

Hinweise

Das Framework ruft diese Memberfunktion auch auf, nachdem es den Sanduhrcursor aufgerufen hat.

Beispiel

// The following example illustrates the most common case
// of displaying the hourglass cursor during some lengthy
// processing of a command handler implemented in some
// CCmdTarget-derived class, such as a document or view.
void CMyView::OnBeginSleepEnd()
{
   BeginWaitCursor(); // display the hourglass cursor
   // do some lengthy processing
   Sleep(3000);
   EndWaitCursor(); // remove the hourglass cursor
}

// The next example illustrates RestoreWaitCursor.
void CMyView::OnBeginDlgRestore()
{
   BeginWaitCursor(); // display the hourglass cursor
   // do some lengthy processing
   // The dialog box will normally change the cursor to
   // the standard arrow cursor, and leave the cursor in
   // as the standard arrow cursor when the dialog box is
   // closed.
   CFileDialog dlg(TRUE);
   dlg.DoModal();

   // It is necessary to call RestoreWaitCursor here in order
   // to change the cursor back to the hourglass cursor.
   RestoreWaitCursor();
   // do some more lengthy processing
   Sleep(3000);
   EndWaitCursor(); // remove the hourglass cursor
}

// In the above example, the dialog was clearly invoked between
// the pair of calls to BeginWaitCursor and EndWaitCursor.
// Sometimes it may not be clear whether the dialog is invoked
// in between a pair of calls to BeginWaitCursor and EndWaitCursor.
// It is permissible to call RestoreWaitCursor, even if
// BeginWaitCursor was not previously called.  This case is
// illustrated below, where CMyView::AnotherFunction does not
// need to know whether it was called in the context of an
// hourglass cursor.
void CMyView::OnDlgRestore()
{
   // some processing ...
   CFileDialog dlg(TRUE);
   dlg.DoModal();
   RestoreWaitCursor();

   // some more processing ...
}

// If the dialog is invoked from a member function of
// some non-CCmdTarget, then you can call CWinApp::DoWaitCursor
// with a 0 parameter value to restore the hourglass cursor.
void CMyObject::OnDlgDoWait()
{
   CFileDialog dlg(TRUE);
   dlg.DoModal();
   AfxGetApp()->DoWaitCursor(0); // same as CCmdTarget::RestoreWaitCursor
}

CCmdTarget::EnumOleVerbs

Enumeriert die OLE-Verben eines Objekts.

BOOL EnumOleVerbs(LPENUMOLEVERB* ppenumOleVerb);

Parameter

ppenumOleVerb
Ein Zeiger auf einen Zeiger auf eine IEnumOLEVERB Schnittstelle.

Rückgabewert

TRUE , wenn das -Objekt mindestens ein OLE-Verb unterstützt (in *ppenumOleVerb diesem Fall verweist auf eine IEnumOLEVERB Enumeratorschnittstelle), andernfalls FALSE.

Hinweise

Diese Memberfunktion ist im Grunde eine Implementierung von IOleObject::EnumVerbs.

CCmdTarget::FromIDispatch

Rufen Sie diese Funktion auf IDispatch , um einen Zeiger, der von Automatisierungs-Memberfunktionen einer Klasse empfangen wurde, dem Objekt zu zuordnen, CCmdTarget das die Schnittstellen des Objekts implementiert IDispatch .

static CCmdTarget* PASCAL FromIDispatch(LPDISPATCH lpDispatch);

Parameter

lpDispatch
Ein Zeiger auf ein IDispatch -Objekt.

Rückgabewert

Ein Zeiger auf das -Objekt CCmdTarget , das zugeordnet ist lpDispatch. Diese Funktion gibt zurück NULL , wenn IDispatch das Objekt nicht als Microsoft Foundation Class-Objekt erkannt IDispatch wird.

Hinweise

Das Ergebnis dieser Funktion ist die Umkehrung eines Aufrufs der Memberfunktion GetIDispatch.

CCmdTarget::GetDispatchIID

Ruft die primäre Dispatchschnittstellen-ID ab.

virtual BOOL GetDispatchIID(IID* pIID);

Parameter

pIID
Ein Zeiger auf eine Schnittstellen-ID ( eine GUID).

Rückgabewert

TRUE, wenn dies erfolgreich ist, andernfalls FALSE. Wenn erfolgreich, wird *pIID auf die primäre Dispatchschnittstellen-ID festgelegt.

Hinweise

Abgeleitete Klassen sollten diese Memberfunktion überschreiben (wenn sie nicht überschrieben wird, GetDispatchIID gibt zurück FALSE). Siehe COleControl.

CCmdTarget::GetIDispatch

Rufen Sie diese Memberfunktion auf, um den IDispatch Zeiger aus einer IDispatchIDispatch Automatisierungsmethode abzurufen, die entweder einen Zeiger zurückgibt oder einen Zeiger als Verweis verwendet.

LPDISPATCH GetIDispatch(BOOL bAddRef);

Parameter

bAddRef
Gibt an, ob der Verweiszähler für das -Objekt erhöht werden soll.

Rückgabewert

Der IDispatch zeiger, der dem -Objekt zugeordnet ist.

Hinweise

Für Objekte, die EnableAutomation in ihren Konstruktoren aufrufen und die Automatisierung aktivieren, gibt diese Funktion einen Zeiger auf die Foundation Class-Implementierung IDispatchIDispatch von zurück, die von Clients verwendet wird, die über die -Schnittstelle kommunizieren. Durch aufrufen dieser Funktion wird automatisch ein Verweis auf den Zeiger hinzufügt, sodass kein Aufruf von erforderlich ist IUnknown::AddRef.

CCmdTarget::GetTypeInfoCount

Ruft die Anzahl der Schnittstellen für Typinformationen ab, die ein -Objekt bietet.

virtual UINT GetTypeInfoCount();

Rückgabewert

Die Anzahl der Schnittstellen für Typinformationen.

Hinweise

Diese Memberfunktion implementiert im Grunde IDispatch::GetTypeInfoCount.

Abgeleitete Klassen sollten diese Funktion überschreiben, um die Anzahl der bereitgestellten Typinformationsschnittstellen (entweder 0 oder 1) zurück zu geben. Wenn dies nicht überschrieben wird, wird GetTypeInfoCount 0 zurückgegeben. Verwenden Sie zum Überschreiben das - IMPLEMENT_OLETYPELIB Makro, das auch und implementiert GetTypeLibGetTypeLibCache.

CCmdTarget::GetTypeInfoOfGuid

Ruft die Typenbeschreibung ab, die der angegebenen GUID entspricht.

HRESULT GetTypeInfoOfGuid(
    LCID lcid,
    const GUID& guid,
    LPTYPEINFO* ppTypeInfo);

Parameter

lcid
Ein Locale Identifier ( LCID).

guid
Die GUID der Typbeschreibung.

ppTypeInfo
Zeiger auf einen Zeiger auf die ITypeInfo Schnittstelle.

Rückgabewert

Ein , HRESULT der den Erfolg oder Fehler des Aufrufs angibt. Wenn dies erfolgreich ist, *ppTypeInfo verweist auf die Schnittstelle für Typinformationen.

CCmdTarget::GetTypeLib

Ruft einen Zeiger auf eine Typbibliothek ab.

virtual HRESULT GetTypeLib(
    LCID lcid,
    LPTYPELIB* ppTypeLib);

Parameter

lcid
Ein Gebietsschemabezeichner (LCID).

ppTypeLib
Ein Zeiger auf einen Zeiger auf die ITypeLib Schnittstelle.

Rückgabewert

Ein , HRESULT der den Erfolg oder Fehler des Aufrufs angibt. Wenn dies erfolgreich ist, *ppTypeLib verweist auf die Typbibliotheksschnittstelle.

Hinweise

Abgeleitete Klassen sollten diese Memberfunktion überschreiben (wenn sie nicht überschrieben wird, GetTypeLib gibt zurück TYPE_E_CANTLOADLIBRARY). Verwenden Sie das IMPLEMENT_OLETYPELIB -Makro, das auch und GetTypeInfoCount implementiert GetTypeLibCache.

CCmdTarget::GetTypeLibCache

Ruft den Typbibliothekscache ab.

virtual CTypeLibCache* GetTypeLibCache();

Rückgabewert

Ein Zeiger auf ein CTypeLibCache-Objekt.

Hinweise

Abgeleitete Klassen sollten diese Memberfunktion überschreiben (wenn sie nicht überschrieben wird, GetTypeLibCache gibt zurück NULL). Verwenden Sie das IMPLEMENT_OLETYPELIB -Makro, das auch und GetTypeInfoCount implementiert GetTypeLib.

CCmdTarget::IsInvokeAllowed

Diese Funktion wird von der MFC-Implementierung IDispatch::Invoke von aufgerufen, um zu bestimmen, ob eine bestimmte Automatisierungsmethode ( dispididentifiziert durch ) aufgerufen werden kann.

virtual BOOL IsInvokeAllowed(DISPID dispid);

Parameter

dispid
Eine Dispatch-ID.

Rückgabewert

TRUE , wenn die Methode aufgerufen werden kann, andernfalls FALSE.

Hinweise

Wenn IsInvokeAllowed zurückgibt TRUE, Invoke wird mit dem Aufruf der -Methode fort fortgesetzt. Andernfalls Invoke wird ein Fehler E_UNEXPECTEDzurückgegeben.

Abgeleitete Klassen können diese Funktion überschreiben, um entsprechende Werte zurückgibt (wenn sie nicht überschrieben werden, IsInvokeAllowed wird zurückgegeben TRUE). Siehe insbesondere COleControl::IsInvokeAllowed.

CCmdTarget::IsResultExpected

Verwenden Sie IsResultExpected , um festzustellen, ob ein Client einen Rückgabewert vom Aufruf einer Automatisierungsfunktion erwartet.

BOOL IsResultExpected();

Rückgabewert

Ungleich 0 (null), wenn eine Automatisierungsfunktion einen Wert zurückgeben soll; andernfalls 0.

Hinweise

Die OLE-Schnittstelle stellt MFC Informationen darüber bereit, ob der Client das Ergebnis eines Funktionsaufrufs verwendet oder ignoriert, und MFC verwendet diese Informationen wiederum, um das Ergebnis eines Aufrufs von zu bestimmen IsResultExpected. Wenn die Produktion eines Rückgabewerts zeit- oder ressourcenintensiv ist, können Sie die Effizienz steigern, indem Sie diese Funktion aufrufen, bevor Sie den Rückgabewert berechnen.

Diese Funktion gibt nur einmal 0 zurück, sodass Sie gültige Rückgabewerte von anderen Automatisierungsfunktionen erhalten, wenn Sie sie über die vom Client aufgerufene Automatisierungsfunktion aufrufen.

IsResultExpected gibt einen Wert ungleich 0 (null) zurück, wenn aufgerufen wird, wenn kein Automatisierungsfunktionsaufruf in Bearbeitung ist.

CCmdTarget::OnCmdMsg

Wird vom Framework aufgerufen, um Befehlsmeldungen weiter zu routen und zu senden und die Aktualisierung von Befehls-Benutzeroberflächenobjekten zu verarbeiten.

virtual BOOL OnCmdMsg(
    UINT nID,
    int nCode,
    void* pExtra,
    AFX_CMDHANDLERINFO* pHandlerInfo);

Parameter

nID
Enthält die Befehls-ID.

nCode
Identifiziert den Befehlsbenachrichtigungscode. Weitere Informationen zu Werten für finden Sie unter Hinweise nCode.

pExtra
Wird entsprechend dem Wert von verwendet nCode. Weitere Informationen zu finden Sie unter pExtraHinweise.

pHandlerInfo
Wenn nicht NULL, OnCmdMsg füllt die Member und pTargetpmf der -Struktur pHandlerInfo aus, anstatt den Befehl zu versenden. In der Regel sollte dieser Parameter sein NULL.

Rückgabewert

Ungleich 0 (null), wenn die Nachricht behandelt wird. andernfalls 0.

Hinweise

Dies ist die Hauptimplementierungsroutine der Frameworkbefehlsarchitektur.

Zur Laufzeit wird ein Befehl an CCmdTarget::OnCmdMsgandere Objekte gesendet oder der Befehl selbst durch Aufrufen der Stammklasse behandelt, OnCmdMsg die die eigentliche Meldungszuordnungssuche übernimmt. Eine vollständige Beschreibung des Standardbefehlsroutings finden Sie unter Themen zur Behandlung und Zuordnung von Nachrichten.

In seltenen Fällen sollten Sie diese Memberfunktion überschreiben, um das Standardbefehlsrouting des Frameworks zu erweitern. Weitere Informationen zur Architektur für das Befehlsrouting finden Sie im technischen Hinweis 21.

Wenn Sie überschreiben OnCmdMsg, müssen Sie den entsprechenden nCodeWert für , den Befehlsbenachrichtigungscode und eingeben, pExtrader vom Wert von abhängt nCode. In der folgenden Tabelle sind die entsprechenden Werte aufgeführt:

Wert vom Typ nCode Wert vom Typ pExtra
CN_COMMAND CCmdUI*
CN_EVENT AFX_EVENT*
CN_UPDATE_COMMAND_UI CCmdUI*
CN_OLECOMMAND COleCmdUI*
CN_OLE_UNREGISTER NULL

Beispiel

// This example illustrates extending the framework's standard command
// route from the view to objects managed by the view.  This example
// is from an object-oriented drawing application, similar to the
// DRAWCLI sample application, which draws and edits "shapes".
BOOL CMyView::OnCmdMsg(UINT nID,
                       int nCode,
                       void *pExtra,
                       AFX_CMDHANDLERINFO *pHandlerInfo)
{
   // Extend the framework's command route from the view to
   // the application-specific CMyShape that is currently selected
   // in the view. m_pActiveShape is NULL if no shape object
   // is currently selected in the view.
   if ((m_pActiveShape != NULL) &&
       m_pActiveShape->OnCmdMsg(nID, nCode, pExtra, pHandlerInfo))
      return TRUE;

   // If the object(s) in the extended command route don't handle
   // the command, then let the base class OnCmdMsg handle it.
   return CView::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo);
}
// The command handler for ID_SHAPE_COLOR (menu command to change
// the color of the currently selected shape) was added to the message
// map of CMyShape (note, not CMyView) using the Properties window.
// The menu item will be automatically enabled or disabled, depending
// on whether a CMyShape is currently selected in the view, that is,
// depending on whether CMyView::m_pActiveView is NULL.  It is not
// necessary to implement an ON_UPDATE_COMMAND_UI handler to enable
// or disable the menu item.
BEGIN_MESSAGE_MAP(CMyShape, CCmdTarget)
ON_COMMAND(ID_SHAPE_COLOR, &CMyShape::OnShapeColor)
END_MESSAGE_MAP()

CCmdTarget::OnFinalRelease

Wird vom Framework aufgerufen, wenn der letzte OLE-Verweis auf oder aus dem -Objekt freigegeben wird.

virtual void OnFinalRelease();

Hinweise

Überschreiben Sie diese Funktion, um eine spezielle Behandlung für diese Situation zu ermöglichen. Die Standardimplementierung löscht das -Objekt.

CCmdTarget::RestoreWaitCursor

Rufen Sie diese Funktion auf, um den entsprechenden Sanduhrcursor wiederherzustellen, nachdem sich der Systemcursor geändert hat (z. B. nachdem ein Meldungsfeld geöffnet und dann geschlossen wurde, während er sich in der Mitte eines längeren Vorgangs befindet).

void RestoreWaitCursor();

Beispiel

// The following example illustrates the most common case
// of displaying the hourglass cursor during some lengthy
// processing of a command handler implemented in some
// CCmdTarget-derived class, such as a document or view.
void CMyView::OnBeginSleepEnd()
{
   BeginWaitCursor(); // display the hourglass cursor
   // do some lengthy processing
   Sleep(3000);
   EndWaitCursor(); // remove the hourglass cursor
}

// The next example illustrates RestoreWaitCursor.
void CMyView::OnBeginDlgRestore()
{
   BeginWaitCursor(); // display the hourglass cursor
   // do some lengthy processing
   // The dialog box will normally change the cursor to
   // the standard arrow cursor, and leave the cursor in
   // as the standard arrow cursor when the dialog box is
   // closed.
   CFileDialog dlg(TRUE);
   dlg.DoModal();

   // It is necessary to call RestoreWaitCursor here in order
   // to change the cursor back to the hourglass cursor.
   RestoreWaitCursor();
   // do some more lengthy processing
   Sleep(3000);
   EndWaitCursor(); // remove the hourglass cursor
}

// In the above example, the dialog was clearly invoked between
// the pair of calls to BeginWaitCursor and EndWaitCursor.
// Sometimes it may not be clear whether the dialog is invoked
// in between a pair of calls to BeginWaitCursor and EndWaitCursor.
// It is permissible to call RestoreWaitCursor, even if
// BeginWaitCursor was not previously called.  This case is
// illustrated below, where CMyView::AnotherFunction does not
// need to know whether it was called in the context of an
// hourglass cursor.
void CMyView::OnDlgRestore()
{
   // some processing ...
   CFileDialog dlg(TRUE);
   dlg.DoModal();
   RestoreWaitCursor();

   // some more processing ...
}

// If the dialog is invoked from a member function of
// some non-CCmdTarget, then you can call CWinApp::DoWaitCursor
// with a 0 parameter value to restore the hourglass cursor.
void CMyObject::OnDlgDoWait()
{
   CFileDialog dlg(TRUE);
   dlg.DoModal();
   AfxGetApp()->DoWaitCursor(0); // same as CCmdTarget::RestoreWaitCursor
}

Weitere Informationen

MFC-Beispiel ACDUAL
CObject Klasse
Hierarchiediagramm
CCmdUI Klasse
CDocument Klasse
CDocTemplate Klasse
CWinApp Klasse
CWnd Klasse
CView Klasse
CFrameWnd Klasse
COleDispatchDriver Klasse