CCmdTarget-Klasse

Die Basisklasse für die Nachrichtenzuordnungsarchitektur der Microsoft Foundation Class Library.

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 durch ein OLE-Verb angegebene Aktion ausgeführt wird.
CCmdTarget::EnableAutomation Ermöglicht die OLE-Automatisierung für das CCmdTarget Objekt.
CCmdTarget::EnableConnections Ermöglicht das Auslösen von Ereignissen über Verbindungspunkte.
CCmdTarget::EnableTypeLib Aktiviert die Typbibliothek eines Objekts.
CCmdTarget::EndWaitCursor Kehrt zum vorherigen Cursor zurück.
CCmdTarget::EnumOleVerbs Listet die OLE-Verben eines Objekts auf.
CCmdTarget::FromIDispatch Gibt einen Zeiger auf das Objekt zurück, das CCmdTarget dem IDispatch Zeiger zugeordnet ist.
CCmdTarget::GetDispatchIID Ruft die primäre Dispatch-Schnittstellen-ID ab.
CCmdTarget::GetIDispatch Gibt einen Zeiger auf das Objekt zurück, das IDispatch dem CCmdTarget Objekt zugeordnet ist.
CCmdTarget::GetTypeInfoCount Ruft die Anzahl der Typinformationsschnittstellen ab, die ein Objekt bereitstellt.
CCmdTarget::GetTypeInfoOfGuid Ruft die Typbeschreibung 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 nonzero zurück, wenn eine Automatisierungsfunktion einen Wert zurückgeben soll.
CCmdTarget::OnCmdMsg Leitet Befehlsmeldungen weiter und verteilt sie.
CCmdTarget::OnFinalRelease Bereinigt nach der Veröffentlichung des letzten OLE-Verweises.
CCmdTarget::RestoreWaitCursor Stellt den Sanduhrcursor wieder her.

Hinweise

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

Schlüsselframeworkklassen, die von CCmdTarget include CView, CWinApp, , CDocument, CWnd, und CFrameWnd. Wenn Sie beabsichtigen, dass eine neue Klasse Nachrichten verarbeitet, leiten Sie die Klasse von einer dieser CCmdTargetabgeleiteten Klassen ab. Sie leiten einen Kurs selten direkt ab CCmdTarget .

Eine Übersicht über Befehlsziele und OnCmdMsg Routing finden Sie unter "Befehlsziele", "Befehlsrouting" und "Zuordnen von Nachrichten".

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 benötigt.

Verteilerzuordnungen, ähnlich wie Nachrichtenzuordnungen, werden verwendet, um OLE-Automatisierungsfunktionen IDispatch verfügbar zu machen. Durch die Bereitstellung dieser Schnittstelle können andere Anwendungen (z. B. Visual Basic) Ihre Anwendung aufrufen.

Vererbungshierarchie

CObject

CCmdTarget

Anforderungen

Headerafxwin.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 benötigt.

void BeginWaitCursor();

Hinweise

Das Framework ruft diese Funktion auf, um dem Benutzer anzuzeigen, dass es ausgelastet ist, z. B. wenn ein CDocument Objekt geladen oder in einer Datei gespeichert wird.

Die Aktionen, die BeginWaitCursor außerhalb eines einzelnen Nachrichtenhandlers nicht immer wirksam sind, als andere Aktionen, z OnSetCursor . B. die Behandlung, könnten den Cursor ändern.

Aufrufen EndWaitCursor zum Wiederherstellen des vorherigen Cursors.

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 durch ein OLE-Verb angegebene Aktion ausgeführt wird.

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

Parameter

iVerb
Numerischer Bezeichner des Verbs.

lpMsg
Zeigen Sie auf die Struktur, die MSG das Ereignis beschreibt (z. B. einen Doppelklick), der das Verb aufgerufen hat.

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

lpRect
Zeigen Sie auf die Struktur, die RECT die Koordinaten in Pixeln enthält, die das umgebende Rechteck eines Objekts 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 aufgezä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 Verteilerzuordnung für die Klasse deklariert wurde. Weitere Informationen zur Automatisierung finden Sie in den Artikeln Automatisierungsclients und Automatisierungsserver.

CCmdTarget::EnableConnections

Ermöglicht das Auslösen von Ereignissen über Verbindungspunkte.

void EnableConnections();

Hinweise

Rufen Sie diese Memberfunktion im Konstruktor der abgeleiteten Klasse auf, um Verbindungspunkte zu aktivieren.

CCmdTarget::EnableTypeLib

Aktiviert die Typbibliothek eines Objekts.

void EnableTypeLib();

Hinweise

Rufen Sie diese Memberfunktion im Konstruktor des CCmdTargetabgeleiteten Objekts auf, wenn sie Typinformationen bereitstellt.

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

Listet die OLE-Verben eines Objekts auf.

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 diesem Fall *ppenumOleVerb verweist auf eine IEnumOLEVERB Enumerationsschnittstelle), andernfalls FALSE.

Hinweise

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

CCmdTarget::FromIDispatch

Rufen Sie diese Funktion auf, um einen IDispatch Zeiger zuzuordnen, der von Automatisierungselementfunktionen einer Klasse empfangen wird, in das CCmdTarget Objekt, das die Schnittstellen des IDispatch Objekts implementiert.

static CCmdTarget* PASCAL FromIDispatch(LPDISPATCH lpDispatch);

Parameter

lpDispatch
Ein Zeiger auf ein IDispatch -Objekt.

Rückgabewert

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

Hinweise

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

CCmdTarget::GetDispatchIID

Ruft die primäre Dispatch-Schnittstellen-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 dies erfolgreich ist, *pIID wird sie auf die ID der primären Verteilerschnittstelle festgelegt.

Hinweise

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

CCmdTarget::GetIDispatch

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

LPDISPATCH GetIDispatch(BOOL bAddRef);

Parameter

bAddRef
Gibt an, ob die Referenzanzahl für das Objekt erhöht werden soll.

Rückgabewert

Der IDispatch dem Objekt zugeordnete Zeiger.

Hinweise

Bei Objekten, die in ihren Konstruktoren aufrufen EnableAutomation , wodurch sie automatisierungsfähig werden, gibt diese Funktion einen Zeiger auf die Foundation Class-Implementierung zurück, die IDispatch von Clients verwendet wird, die über die IDispatch Schnittstelle kommunizieren. Durch aufrufen dieser Funktion wird automatisch ein Verweis auf den Zeiger hinzugefügt, daher ist es nicht erforderlich, einen Aufruf zu IUnknown::AddReftätigen.

CCmdTarget::GetTypeInfoCount

Ruft die Anzahl der Typinformationsschnittstellen ab, die ein Objekt bereitstellt.

virtual UINT GetTypeInfoCount();

Rückgabewert

Die Anzahl der Typinformationsschnittstellen.

Hinweise

Diese Memberfunktion implementiert IDispatch::GetTypeInfoCountim Wesentlichen .

Abgeleitete Klassen sollten diese Funktion überschreiben, um die Anzahl der bereitgestellten Typinformationsschnittstellen (entweder 0 oder 1) zurückzugeben. Wenn sie nicht außer Kraft gesetzt wird, GetTypeInfoCount wird 0 zurückgegeben. Verwenden Sie zum Überschreiben das IMPLEMENT_OLETYPELIB Makro, das ebenfalls implementiert und implementiert GetTypeLib wird GetTypeLibCache.

CCmdTarget::GetTypeInfoOfGuid

Ruft die Typbeschreibung ab, die der angegebenen GUID entspricht.

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

Parameter

lcid
Ein Gebietsschemabezeichner ( LCID).

guid
Die GUID der Typbeschreibung.

ppTypeInfo
Zeigen Sie auf einen Zeiger auf die ITypeInfo Schnittstelle.

Rückgabewert

Ein HRESULT Hinweis auf den Erfolg oder Fehler des Anrufs. Zeigt bei erfolgreicher Ausführung *ppTypeInfo auf die Typinformationsschnittstelle.

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 Hinweis auf den Erfolg oder Fehler des Anrufs. Zeigt bei erfolgreicher Ausführung *ppTypeLib auf die Typbibliotheksschnittstelle.

Hinweise

Abgeleitete Klassen sollten diese Memberfunktion überschreiben (wenn sie nicht überschrieben werden, GetTypeLib gibt zurück TYPE_E_CANTLOADLIBRARY). Verwenden Sie das IMPLEMENT_OLETYPELIB Makro, das auch implementiert GetTypeInfoCount und implementiert wird 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 werden, GetTypeLibCache gibt zurück NULL). Verwenden Sie das IMPLEMENT_OLETYPELIB Makro, das auch implementiert GetTypeInfoCount und implementiert wird GetTypeLib.

CCmdTarget::IsInvokeAllowed

Diese Funktion wird von der Implementierung von IDispatch::Invoke MFC aufgerufen, um festzustellen, ob eine bestimmte Automatisierungsmethode (identifiziert durch dispid) aufgerufen werden kann.

virtual BOOL IsInvokeAllowed(DISPID dispid);

Parameter

dispid
Eine Verteiler-ID.

Rückgabewert

TRUE wenn die Methode aufgerufen werden kann, andernfalls FALSE.

Hinweise

Wenn IsInvokeAllowed zurückgegeben TRUEwird, Invoke wird die Methode aufgerufen. Andernfalls Invoke schlägt die Rückgabe fehl E_UNEXPECTED.

Abgeleitete Klassen können diese Funktion außer Kraft setzen, um geeignete Werte zurückzugeben (wenn sie nicht überschrieben werden, IsInvokeAllowed gibt diese Funktion zurück TRUE). Siehe insbesondere COleControl::IsInvokeAllowed.

CCmdTarget::IsResultExpected

Hier erfahren Sie IsResultExpected , ob ein Client einen Rückgabewert von seinem Aufruf an eine Automatisierungsfunktion erwartet.

BOOL IsResultExpected();

Rückgabewert

Nonzero, 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 wiederum diese Informationen, um das Ergebnis eines Aufrufs zu IsResultExpectedbestimmen. Wenn die Produktion eines Rückgabewerts zeit- oder ressourcenintensiv ist, können Sie die Effizienz erhöhen, indem Sie diese Funktion aufrufen, bevor Sie den Rückgabewert berechnen.

Diese Funktion gibt 0 nur einmal zurück, sodass Sie gültige Rückgabewerte aus anderen Automatisierungsfunktionen erhalten, wenn Sie sie von der Automatisierungsfunktion aufrufen, die der Client aufgerufen hat.

IsResultExpected gibt einen Wert ungleich Null zurück, wenn ein Aufruf einer Automatisierungsfunktion nicht ausgeführt wird.

CCmdTarget::OnCmdMsg

Wird vom Framework aufgerufen, um Befehlsmeldungen weiterzuleiten und zu verteilen und die Aktualisierung von Befehlsbenutzeroberflä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 finden Sie in den Hinweisen für nCode.

pExtra
Wird gemäß dem Wert von nCode. Weitere Informationen zu pExtra.

pHandlerInfo
Andernfalls NULLOnCmdMsg füllt er die pTarget Struktur und pmf die Member der pHandlerInfo Struktur aus, anstatt den Befehl zu verteilen. In der Regel sollte dieser Parameter sein NULL.

Rückgabewert

Nonzero, wenn die Nachricht behandelt wird; andernfalls 0.

Hinweise

Dies ist die Standard Implementierungsroutine der Framework-Befehlsarchitektur.

Zur Laufzeit OnCmdMsg wird ein Befehl an andere Objekte verteilt oder der Befehl selbst behandelt, indem die Stammklasse CCmdTarget::OnCmdMsgaufgerufen wird, die die eigentliche Nachrichtenzuordnungssuche durchführt. Eine vollständige Beschreibung des Standardbefehlsrouting finden Sie unter "Nachrichtenbehandlung" und "Zuordnungsthemen".

In seltenen Fällen sollten Sie diese Memberfunktion außer Kraft setzen, um das Standardmäßige Befehlsrouting des Frameworks zu erweitern. Weitere Informationen zur Befehlsroutingarchitektur finden Sie in technischem Hinweis 21 .

Wenn Sie außer Kraft setzen OnCmdMsg, müssen Sie den entsprechenden Wert für nCode, den Befehlsbenachrichtigungscode und pExtra, die vom Wert von 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 vom Objekt freigegeben wird.

virtual void OnFinalRelease();

Hinweise

Überschreiben Sie diese Funktion, um eine spezielle Behandlung für diese Situation bereitzustellen. 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 während eines langen Vorgangs geschlossen wurde).

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
}

Siehe auch

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