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 Sanduhr Cursor an.
CCmdTarget::D ooleverb 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 Aktiviert das Auslösen von Ereignissen über Verbindungspunkte.
CCmdTarget:: enabletypelib Aktiviert die Typbibliothek eines Objekts.
CCmdTarget:: endwaitcursor Kehrt zum vorherigen Cursor zurück.
CCmdTarget:: enumoleversb Listet die OLE-Verben eines Objekts auf.
CCmdTarget:: fromidispatch Gibt einen Zeiger auf das-Objekt zurück, CCmdTarget das dem Zeiger zugeordnet ist IDispatch .
CCmdTarget:: getdispatchiid Ruft die ID der primären Dispatchschnittstelle ab.
CCmdTarget:: getidispatch Gibt einen Zeiger auf das-Objekt zurück, IDispatch das dem-Objekt zugeordnet ist CCmdTarget .
CCmdTarget:: gettypeingefocount Ruft die Anzahl der Schnittstellen für Typinformationen ab, die ein Objekt bereitstellt.
CCmdTarget:: gettypeingefoof-ID Ruft die Typenbeschreibung ab, die der angegebenen GUID entspricht.
CCmdTarget:: gettypelib Ruft einen Zeiger auf eine Typbibliothek ab.
CCmdTarget:: gettypelibcache Ruft den Typbibliotheks Cache ab.
CCmdTarget:: isinvokeallowed Aktiviert den Aufruf der Automatisierungs Methode.
CCmdTarget:: isresultexpfiziert Gibt einen Wert ungleich 0 zurück, wenn eine Automatisierungsfunktion einen Wert zurückgeben soll.
CCmdTarget:: OnCmdMsg Leitet befehlsnachrichten weiter und sendet Sie.
CCmdTarget:: OnFinalRelease Bereinigt, nachdem der letzte OLE-Verweis freigegeben wurde.
CCmdTarget:: restorewaitcursor Stellt den Sanduhr Cursor wieder her.

Bemerkungen

Eine Meldungs Zuordnung leitet Befehle oder Meldungen an die Element Funktionen weiter, die Sie schreiben, um Sie zu behandeln. (Ein Befehl ist eine Meldung von einem Menü Element, einer Befehls Schaltfläche oder einer Zugriffstaste.)

Zu den von abgeleiteten Schlüssel Framework-Klassen CCmdTarget gehören CView, CWinApp, CDocument, CWndund CFrameWnd. Wenn Sie beabsichtigen, eine neue Klasse für die Verarbeitung von Nachrichten zu verarbeiten, leiten Sie die Klasse von einer dieser CCmdTarget abgeleiteten Klassen ab. Sie werden nur selten eine Klasse von CCmdTarget direkt ableiten.

Eine Übersicht über die Befehls Ziele und das OnCmdMsg Routing finden Sie unter Befehls Ziele, Befehls Routingund Zuordnungsnachrichten.

CCmdTarget schließt Member-Funktionen ein, die die Anzeige eines Sanduhr Cursors verarbeiten. Zeigen Sie den Sanduhr Cursor an, wenn Sie erwarten, dass ein Befehl ein merkbares Zeitintervall für die Ausführung benötigt.

Dispatchzuordnungen, ähnlich wie Nachrichten Zuordnungen, werden verwendet, um OLE-Automatisierungsfunktionen verfügbar zu machen IDispatch . Wenn Sie diese Schnittstelle verfügbar machen, können andere Anwendungen (z. b. Visual Basic) Ihre Anwendung aufzurufen.

Vererbungshierarchie

CObject

CCmdTarget

Anforderungen

Header: afxwin.h

CCmdTarget:: beginwaitcursor

Mit dieser Funktion können Sie den Cursor als Sanduhr anzeigen, wenn Sie erwarten, dass ein Befehl ein merkbares Zeitintervall für die Ausführung benötigt.

void BeginWaitCursor();

Bemerkungen

Das Framework ruft diese Funktion auf, um den Benutzer anzuzeigen, dass er ausgelastet ist, z. b. Wenn ein- CDocument Objekt in eine Datei geladen oder in eine Datei gespeichert wird.

Die Aktionen von BeginWaitCursor sind außerhalb eines einzelnen Nachrichten Handlers nicht immer wirksam, weil andere Aktionen, wie z OnSetCursor . b. die Behandlung, den Cursor ändern könnten.

Ruft 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::D ooleverb

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
Ein Zeiger auf die msg -Struktur, die das Ereignis beschreibt (z. b. ein Doppelklick), das das Verb aufgerufen hat.

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

lprect
Ein Zeiger auf die Rect -Struktur, die die Koordinaten (in Pixel) enthält, die das umschließende Rechteck eines Objekts in hwndParent definieren.

Rückgabewert

TRUE, wenn erfolgreich, andernfalls false.

Bemerkungen

Bei dieser Member-Funktion handelt es sich im Grunde um eine Implementierung von IOleObject::D overb. Die möglichen Aktionen werden von CCmdTarget:: enumoleversbaufgezählt.

CCmdTarget:: enableautomation

Diese Funktion wird aufgerufen, um die OLE-Automatisierung für ein Objekt zu aktivieren.

void EnableAutomation();

Bemerkungen

Diese Funktion wird in der Regel vom Konstruktor des Objekts aufgerufen und sollte nur aufgerufen werden, wenn eine dispatchmap für die Klasse deklariert wurde. Weitere Informationen zur Automatisierung finden Sie in den Artikeln Automation Clients and Automation Servers.

CCmdTarget:: enableconnections

Aktiviert das Auslösen von Ereignissen über Verbindungspunkte.

void EnableConnections();

Bemerkungen

Um Verbindungspunkte zu aktivieren, müssen Sie diese Member-Funktion im Konstruktor ihrer abgeleiteten Klasse abrufen.

CCmdTarget:: enabletypelib

Aktiviert die Typbibliothek eines Objekts.

void EnableTypeLib();

Bemerkungen

Nennen Sie diese Member-Funktion im Konstruktor Ihres von CCmdTarget abgeleiteten Objekts, wenn Sie Typinformationen bereitstellt.

CCmdTarget:: endwaitcursor

Aufrufen Sie diese Funktion, nachdem Sie die BeginWaitCursor Member-Funktion aufgerufen haben, um vom Sanduhr Cursor zum vorherigen Cursor zurückzukehren.

void EndWaitCursor();

Bemerkungen

Das Framework ruft diese Member-Funktion auch auf, nachdem Sie den Sanduhr Cursor 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:: enumoleversb

Listet die OLE-Verben eines Objekts auf.

BOOL EnumOleVerbs(LPENUMOLEVERB* ppenumOleVerb);

Parameter

OLEVERB
Ein Zeiger auf einen Zeiger auf eine IEnumOLEVERB -Schnittstelle.

Rückgabewert

TRUE, wenn das Objekt mindestens ein OLE-Verb unterstützt (in diesem Fall zeigt " * ppumoleverb " auf eine IEnumOLEVERB Enumeratorschnittstelle), andernfalls "false".

Bemerkungen

Bei dieser Member-Funktion handelt es sich im Grunde um eine Implementierung von IOleObject:: EnumVerbs.

CCmdTarget:: fromidispatch

Diese Funktion wird aufgerufen, um einen IDispatch Zeiger, der von Automatisierungs Element Funktionen einer Klasse empfangen wurde, in das-Objekt zuzuordnen, CCmdTarget 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-Objekt, das CCmdTarget mit lpdispatch verknüpft ist. Diese Funktion gibt NULL zurück, wenn das IDispatch Objekt nicht als Microsoft Foundation Class- IDispatch Objekt erkannt wird.

Bemerkungen

Das Ergebnis dieser Funktion ist die Umkehrung eines Aufrufes der Member-Funktion GetIDispatch .

CCmdTarget:: getdispatchiid

Ruft die ID der primären Dispatchschnittstelle ab.

virtual BOOL GetDispatchIID(IID* pIID);

Parameter

piid
Ein Zeiger auf eine Schnittstellen-ID (a [GUID] (/Windows/Win32/API/guiddef/NS-guiddef-GUID.

Rückgabewert

TRUE, wenn erfolgreich, andernfalls false. Bei erfolgreicher Ausführung * wird piid auf die primäre Dispatch-Schnittstellen-ID festgelegt.

Bemerkungen

Abgeleitete Klassen sollten diese Element Funktion überschreiben (wenn Sie nicht überschrieben wird, GetDispatchIID gibt false zurück). Siehe COleControl.

CCmdTarget:: getidispatch

Rufen Sie diese Member-Funktion auf, um den IDispatch Zeiger aus einer Automatisierungs Methode abzurufen, die entweder einen Zeiger zurückgibt IDispatch oder einen IDispatch Zeiger als Verweis annimmt.

LPDISPATCH GetIDispatch(BOOL bAddRef);

Parameter

badressf
Gibt an, ob der Verweis Zähler für das Objekt Inkrement erhöht werden soll.

Rückgabewert

Der IDispatch Zeiger, der dem Objekt zugeordnet ist.

Bemerkungen

EnableAutomationDiese Funktion gibt einen Zeiger auf die Foundation-Klassen Implementierung von zurück, die IDispatch von Clients verwendet wird, die über die-Schnittstelle kommunizieren, wenn Sie in ihren Konstruktoren aufzurufen, sodass Sie für die Automatisierung aktiviert werden IDispatch . Wenn Sie diese Funktion aufrufen, wird automatisch ein Verweis auf den-Zeiger hinzugefügt, daher ist es nicht erforderlich, IUnknown:: adressfaufzurufen.

CCmdTarget:: gettypeingefocount

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

virtual UINT GetTypeInfoCount();

Rückgabewert

Die Anzahl der Schnittstellen für die Typinformationen.

Bemerkungen

Diese Member-Funktion implementiert im Grunde IDispatch:: gettypeingefocount.

Abgeleitete Klassen sollten diese Funktion überschreiben, um die angegebene Anzahl von Schnittstellen für Typinformationen zurückzugeben (entweder 0 oder 1). Wenn Sie nicht überschrieben wird, wird GetTypeInfoCount 0 zurückgegeben. Verwenden Sie zum Überschreiben das IMPLEMENT_OLETYPELIB -Makro, das ebenfalls GetTypeLib und implementiert GetTypeLibCache .

CCmdTarget:: gettypeingefoof-ID

Ruft die Typenbeschreibung ab, die der angegebenen GUID entspricht.

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

Parameter

lcid
Ein Gebiets Schema Bezeichner ( LCID ).

guid
Die [GUID] (/Windows/Win32/API/guiddef/NS-guiddef-GUID der Typbeschreibung.

pptypeingangs Info
Zeiger auf einen Zeiger auf die- ITypeInfo Schnittstelle.

Rückgabewert

Ein HRESULT, das den Erfolg oder Misserfolg des Aufrufes angibt. Bei erfolgreicher Ausführung * zeigt pptypeinfo auf die Schnittstelle für die Typinformation.

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, das den Erfolg oder Misserfolg des Aufrufes angibt. Bei erfolgreicher Ausführung * zeigt pptypelib auf die Schnittstelle der Typbibliothek.

Bemerkungen

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

CCmdTarget:: gettypelibcache

Ruft den Typbibliotheks Cache ab.

virtual CTypeLibCache* GetTypeLibCache();

Rückgabewert

Ein Zeiger auf ein CTypeLibCache-Objekt.

Bemerkungen

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

CCmdTarget:: isinvokeallowed

Diese Funktion wird von der MFC-Implementierung von aufgerufen IDispatch::Invoke , um zu bestimmen, ob eine angegebene Automatisierungs Methode (durch DISPID gekennzeichnet) aufgerufen werden kann.

virtual BOOL IsInvokeAllowed(DISPID dispid);

Parameter

DISPID
Eine Dispatch-ID.

Rückgabewert

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

Bemerkungen

Wenn IsInvokeAllowed true zurückgibt, Invoke wird mit der-Methode aufgerufen Invoke . andernfalls schlägt fehl, und es wird E_UNEXPECTED zurückgegeben.

Abgeleitete Klassen können diese Funktion überschreiben, um geeignete Werte zurückzugeben (wenn Sie nicht überschrieben werden, IsInvokeAllowed gibt true zurück). Siehe insbesondere COleControl:: isinvokeallowed.

CCmdTarget:: isresultexpfiziert

Verwenden IsResultExpected Sie, um zu überprüfen, ob ein Client einen Rückgabewert des Aufrufes einer Automatisierungsfunktion erwartet.

BOOL IsResultExpected();

Rückgabewert

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

Bemerkungen

Die OLE-Schnittstelle liefert Informationen an MFC, ob der Client das Ergebnis eines Funktions Aufrufes verwendet oder ignoriert, und MFC verwendet diese Informationen wiederum, um das Ergebnis eines Aufrufes zu bestimmen IsResultExpected . Wenn die Produktion eines Rückgabewerts Zeit-oder ressourcenintensiv ist, können Sie die Effizienz steigern, indem Sie diese Funktion vor dem Berechnen des Rückgabewerts aufrufen.

Diese Funktion gibt 0 (null) nur einmal zurück, sodass Sie gültige Rückgabewerte von anderen Automatisierungsfunktionen erhalten, wenn Sie Sie von der vom Client aufgerufenen Automatisierungsfunktion aufrufen.

IsResultExpected Gibt einen Wert ungleich 0 (null) zurück, wenn er aufgerufen wird, wenn kein Automatisierungs Funktionsaufruf ausgeführt wird.

CCmdTarget:: OnCmdMsg

Wird vom Framework aufgerufen, um Befehls Meldungen weiterzuleiten und zu verteilen und um das Update von Benutzeroberflächen Objekten der Befehle zu verarbeiten.

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

Parameter

nID
Enthält die Befehls-ID.

nCode
Identifiziert den Befehls Benachrichtigungs Code. Weitere Informationen zu den Werten für nCode finden Sie unter " Hinweise ".

pextra
Wird gemäß dem Wert von nCode verwendet. Weitere Informationen zu pextra finden Sie unter " Hinweise ".

phandlerinfo
Wenn not NULL ist, OnCmdMsg füllt die pTARGET -und PMF -Member der phandlerinfo -Struktur auf, anstatt den Befehl zu verteilen. In der Regel sollte dieser Parameter NULL sein.

Rückgabewert

Ungleich 0 (null), wenn die Meldung verarbeitet wird. andernfalls 0.

Bemerkungen

Dies ist die wichtigste Implementierungs Routine der Framework-Befehls Architektur.

Zur Laufzeit OnCmdMsg sendet einen Befehl an andere Objekte oder verarbeitet den Befehl selbst durch Aufrufen der Stamm Klasse CCmdTarget::OnCmdMsg , die die tatsächliche Nachrichten-Zuordnungs Suche durchführt. Eine umfassende Beschreibung des Standard Befehls Routings finden Sie unter Themen zur Nachrichten Behandlung und-Zuordnung.

In seltenen Fällen können Sie diese Element Funktion überschreiben, um das Standard Befehls Routing des Frameworks zu erweitern. Ausführliche Informationen zur Befehls Routing Architektur finden Sie in der technischen Notiz 21 .

Wenn Sie OnCmdMsg überschreiben, müssen Sie den entsprechenden Wert für nCode, den Befehls Benachrichtigungs Code und pextra angeben, die vom Wert von nCode abhängig sind. In der folgenden Tabelle sind die entsprechenden Werte aufgeführt:

ncodewert pextra -Wert
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 von Framework aufgerufen, wenn der letzte OLE-Verweis zum oder aus dem-Objekt freigegeben wird.

virtual void OnFinalRelease();

Bemerkungen

Überschreiben Sie diese Funktion, um für diese Situation eine spezielle Behandlung bereitzustellen. Die Standard Implementierung löscht das-Objekt.

CCmdTarget:: restorewaitcursor

Mit dieser Funktion können Sie den entsprechenden Sanduhr Cursor nach dem Ändern des System Cursors wiederherstellen (z. b. Nachdem ein Meldungs Feld während eines langen Vorgangs geöffnet und dann 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
Hierarchie Diagramm
CCmdUI-Klasse
CDocument-Klasse
CDocTemplate-Klasse
CWinApp-Klasse
CWnd-Klasse
CView-Klasse
CFrameWnd-Klasse
COleDispatchDriver-Klasse