Megosztás:


CCmdTarget osztály

A Microsoft Foundation Osztálytár üzenettérkép architektúrájának alaposztálya.

Szemantika

class CCmdTarget : public CObject

Tagok

Nyilvános konstruktorok

Név Leírás
CCmdTarget::CCmdTarget Egy CCmdTarget objektumot hoz létre.

Nyilvános metódusok

Név Leírás
CCmdTarget::BeginWaitCursor A kurzort homokóra-kurzorként jeleníti meg.
CCmdTarget::DoOleVerb Egy OLE-ige által megadott műveletet hajt végre.
CCmdTarget::EnableAutomation Lehetővé teszi az OLE automatizálását az CCmdTarget objektum számára.
CCmdTarget::EnableConnections Lehetővé teszi az eseményindítót a csatlakozási pontokon.
CCmdTarget::EnableTypeLib Engedélyezi egy objektum típustárát.
CCmdTarget::EndWaitCursor Vissza az előző kurzorhoz.
CCmdTarget::EnumOleVerbs Egy objektum OLE-igéinek számbavétele.
CCmdTarget::FromIDispatch A mutatóhoz társított objektumra CCmdTarget mutató mutatót IDispatch ad vissza.
CCmdTarget::GetDispatchIID Lekéri az elsődleges kézbesítő felület azonosítóját.
CCmdTarget::GetIDispatch Az objektumhoz társított IDispatch objektumra mutató mutatót CCmdTarget ad vissza.
CCmdTarget::GetTypeInfoCount Lekéri az objektumok által biztosított típusinformációs felületek számát.
CCmdTarget::GetTypeInfoOfGuid Lekéri a megadott GUID-nak megfelelő típusleírást.
CCmdTarget::GetTypeLib Mutatót kap egy típustárhoz.
CCmdTarget::GetTypeLibCache Lekéri a típustár gyorsítótárát.
CCmdTarget::IsInvokeAllowed Automatizálási metódus meghívását teszi lehetővé.
CCmdTarget::IsResultExpected Nonzero értéket ad vissza, ha egy automatizálási függvénynek értéket kell visszaadnia.
CCmdTarget::OnCmdMsg Parancsüzenetek átirányítása és küldése.
CCmdTarget::OnFinalRelease Az utolsó OLE-referencia kiadása után törlődik.
CCmdTarget::RestoreWaitCursor Visszaállítja a homokóra-kurzort.

Megjegyzések

Az üzenettérkép parancsokat vagy üzeneteket irányít az ön által írt tagfüggvényekhez a kezelésükhöz. (A parancs egy menüelemből, parancsgombból vagy gyorsítókulcsból származó üzenet.)

A következőkből CCmdTarget származtatott fő keretrendszerosztályok: , CViewCWinApp, CDocument, CWndés CFrameWnd. Ha egy új osztályt szeretne az üzenetek kezelésére, az osztályt ezen CCmdTarget-származtatott osztályok egyikéből származtathatja. Ritkán származtat közvetlenül egy osztályt CCmdTarget .

A parancscélok és OnCmdMsg az útválasztás áttekintéséhez tekintse meg a parancspéldányokat, a parancs-útválasztást és a leképezési üzeneteket.

CCmdTarget olyan tagfüggvényeket tartalmaz, amelyek egy homokórás kurzor megjelenítését kezelik. Akkor jelenítse meg a homokórás kurzort, ha azt várja, hogy egy parancs végrehajtása észrevehető időintervallumot vesz igénybe.

Az üzenettérképekhez hasonló kézbesítési térképek az OLE automatizálási IDispatch funkcióinak elérhetővé tétele érdekében használhatók. A felület felfedésével más alkalmazások (például a Visual Basic) is meghívhatják az alkalmazást.

Öröklési hierarchia

CObject

CCmdTarget

Követelmények

fejléc:afxwin.h

CCmdTarget::BeginWaitCursor

Hívja meg ezt a függvényt, hogy a kurzort homokóraként jelenítse meg, amikor egy parancs végrehajtása észrevehető időintervallumot vesz igénybe.

void BeginWaitCursor();

Megjegyzések

A keretrendszer meghívja ezt a függvényt, hogy megmutassa a felhasználónak, hogy foglalt, például amikor egy CDocument objektum betöltődik vagy egy fájlba menti magát.

A műveletek BeginWaitCursor nem mindig hatékonyak egyetlen üzenetkezelőn kívül, mivel más műveletek, például OnSetCursor a kezelés megváltoztathatják a kurzort.

Hívás EndWaitCursor az előző kurzor visszaállításához.

példa

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

Egy CCmdTarget objektumot hoz létre.

CCmdTarget();

CCmdTarget::DoOleVerb

Egy OLE-ige által megadott műveletet hajt végre.

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

Paraméterek

iVerb
Az ige numerikus azonosítója.

lpMsg
Mutasson az MSG igét meghívó eseményt leíró struktúrára (például dupla kattintással).

hWndParent
Az objektumot tartalmazó dokumentumablak kezelése.

lpRect
Mutasson az RECT objektum határoló téglalapját meghatározó koordinátákat tartalmazó struktúrára képpontban hWndParent.

Visszaadott érték

TRUE ha sikeres, ellenkező esetben FALSE.

Megjegyzések

Ez a tagfüggvény alapvetően a .IOleObject::DoVerb A lehetséges műveleteket a rendszer a következő szerint sorolja CCmdTarget::EnumOleVerbsfel: .

CCmdTarget::EnableAutomation

Hívja meg ezt a függvényt, hogy engedélyezze az OLE-automatizálást egy objektumhoz.

void EnableAutomation();

Megjegyzések

Ezt a függvényt általában az objektum konstruktorától hívják, és csak akkor kell meghívni, ha az osztályhoz diszpécsertérképet deklaráltak. Az automatizálással kapcsolatos további információkért tekintse meg az Automation-ügyfelek és az Automation-kiszolgálók című témakört.

CCmdTarget::EnableConnections

Lehetővé teszi az eseményindítót a csatlakozási pontokon.

void EnableConnections();

Megjegyzések

A csatlakozási pontok engedélyezéséhez hívja meg ezt a tagfüggvényt a származtatott osztály konstruktorában.

CCmdTarget::EnableTypeLib

Engedélyezi egy objektum típustárát.

void EnableTypeLib();

Megjegyzések

Hívja meg ezt a tagfüggvényt a -derived objektum konstruktorában CCmdTarget, ha típusinformációkat ad meg.

CCmdTarget::EndWaitCursor

Hívja meg ezt a függvényt, miután meghívta a BeginWaitCursor tagfüggvényt, hogy térjen vissza a homokóra-kurzorról az előző kurzorra.

void EndWaitCursor();

Megjegyzések

A keretrendszer ezt a tagfüggvényt is meghívja, miután meghívta a homokóra-kurzort.

példa

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

Egy objektum OLE-igéinek számbavétele.

BOOL EnumOleVerbs(LPENUMOLEVERB* ppenumOleVerb);

Paraméterek

ppenumOleVerb
Mutató egy illesztőre IEnumOLEVERB mutató mutatóra.

Visszaadott érték

TRUEha az objektum legalább egy OLE-igét támogat (ebben az esetben egy *ppenumOleVerb számbavételi felületre mutat), ellenkező esetben.IEnumOLEVERBFALSE

Megjegyzések

Ez a tagfüggvény alapvetően a .IOleObject::EnumVerbs

CCmdTarget::FromIDispatch

Ezt a függvényt úgy hívhatja meg, hogy egy IDispatch osztály automation tagfüggvényeitől kapott mutatót rendel az objektum interfészeit CCmdTarget megvalósító objektumhozIDispatch.

static CCmdTarget* PASCAL FromIDispatch(LPDISPATCH lpDispatch);

Paraméterek

lpDispatch
Egy objektumra mutató IDispatch mutató.

Visszaadott érték

Mutató a CCmdTarget társított objektumra lpDispatch. Ez a függvény akkor ad NULL vissza, ha az IDispatch objektum nem ismerhető fel Microsoft Foundation-osztályobjektumként IDispatch .

Megjegyzések

Ennek a függvénynek az eredménye a tagfüggvény GetIDispatchhívásának inverze.

CCmdTarget::GetDispatchIID

Lekéri az elsődleges kézbesítő felület azonosítóját.

virtual BOOL GetDispatchIID(IID* pIID);

Paraméterek

pIID
Egy illesztőazonosítóra mutató mutató ( GUID).

Visszaadott érték

TRUE ha sikeres, ellenkező esetben FALSE. Ha sikeres, *pIID a rendszer az elsődleges küldőfelület azonosítóját állítja be.

Megjegyzések

A származtatott osztályoknak felül kell bírálnia ezt a tagfüggvényt (ha nincs felülbírálva, GetDispatchIID akkor visszaadja FALSE). Lásd a(z) COleControl.

CCmdTarget::GetIDispatch

Hívja meg ezt a tagfüggvényt, hogy lekérje a IDispatch mutatót egy olyan automatizálási metódusból, amely vagy egy mutatót IDispatch ad vissza, vagy hivatkozással viszi el a mutatót IDispatch .

LPDISPATCH GetIDispatch(BOOL bAddRef);

Paraméterek

bAddRef
Megadja, hogy növelni szeretné-e az objektum referenciaszámát.

Visszaadott érték

Az IDispatch objektumhoz társított mutató.

Megjegyzések

A konstruktorokban hívható EnableAutomation , automatizálást engedélyező objektumok esetében ez a függvény egy mutatót ad vissza az alaposztály implementációjára IDispatch , amelyet a IDispatch felületen keresztül kommunikáló ügyfelek használnak. A függvény meghívása automatikusan hozzáad egy hivatkozást az egérmutatóhoz, ezért nem szükséges hívást kezdeményezni IUnknown::AddRef.

CCmdTarget::GetTypeInfoCount

Lekéri az objektumok által biztosított típusinformációs felületek számát.

virtual UINT GetTypeInfoCount();

Visszaadott érték

A típusinformációs felületek száma.

Megjegyzések

Ez a tagfüggvény alapvetően implementálja a IDispatch::GetTypeInfoCount.

A származtatott osztályoknak felül kell bírálnia ezt a függvényt, hogy visszaadják a megadott típusinformációs felületek számát (0 vagy 1). Ha nincs felülírva, GetTypeInfoCount akkor 0 értéket ad vissza. A felülbíráláshoz használja a IMPLEMENT_OLETYPELIB makrót, amely implementálja GetTypeLib és GetTypeLibCache.

CCmdTarget::GetTypeInfoOfGuid

Lekéri a megadott GUID-nak megfelelő típusleírást.

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

Paraméterek

lcid
Területi azonosító (LCID).

guid
A típusleírás GUID azonosítója .

ppTypeInfo
Mutasson a felületre mutató mutatóra ITypeInfo .

Visszaadott érték

A HRESULT hívás sikerességét vagy sikertelenségét jelzi. Ha sikeres, *ppTypeInfo a típusinformációs felületre mutat.

CCmdTarget::GetTypeLib

Mutatót kap egy típustárhoz.

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

Paraméterek

lcid
Területi azonosító (LCID).

ppTypeLib
Mutató a felületre mutató mutatóra ITypeLib .

Visszaadott érték

A HRESULT hívás sikerességét vagy sikertelenségét jelzi. Ha sikeres, *ppTypeLib a típustár felületére mutat.

Megjegyzések

A származtatott osztályoknak felül kell bírálnia ezt a tagfüggvényt (ha nincs felülbírálva, GetTypeLib akkor visszaadja TYPE_E_CANTLOADLIBRARY). Használja a IMPLEMENT_OLETYPELIB makrót, amely implementálja GetTypeInfoCount és GetTypeLibCache.

CCmdTarget::GetTypeLibCache

Lekéri a típustár gyorsítótárát.

virtual CTypeLibCache* GetTypeLibCache();

Visszaadott érték

Egy objektumra mutató CTypeLibCache mutató.

Megjegyzések

A származtatott osztályoknak felül kell bírálnia ezt a tagfüggvényt (ha nincs felülbírálva, GetTypeLibCache akkor visszaadja NULL). Használja a IMPLEMENT_OLETYPELIB makrót, amely implementálja GetTypeInfoCount és GetTypeLib.

CCmdTarget::IsInvokeAllowed

Ezt a függvényt az MFC implementációja IDispatch::Invoke hívja meg annak megállapításához, hogy egy adott (által dispidazonosított) automatizálási módszer meghívható-e.

virtual BOOL IsInvokeAllowed(DISPID dispid);

Paraméterek

dispid
Feladóazonosító.

Visszaadott érték

TRUE ha a metódus meghívható, ellenkező esetben FALSE.

Megjegyzések

Ha IsInvokeAllowed visszaadja TRUE, Invoke a metódus meghívása folytatódik, Invoke ellenkező esetben sikertelen lesz, és a visszaadott E_UNEXPECTEDmetódust adja vissza.

A származtatott osztályok felülbírálhatják ezt a függvényt, hogy megfelelő értékeket adjanak vissza (ha nincs felülbírálva, IsInvokeAllowed akkor visszaadja TRUE). Lásd különösen COleControl::IsInvokeAllowed.

CCmdTarget::IsResultExpected

Annak megállapítására használható IsResultExpected , hogy egy ügyfél visszatérési értéket vár-e az automation függvényhez való hívástól.

BOOL IsResultExpected();

Visszaadott érték

Nonzero, ha egy automatizálási függvénynek értéket kell visszaadnia; egyéb esetben 0.

Megjegyzések

Az OLE interfész információt nyújt az MFC-nek arról, hogy az ügyfél függvényhívás eredményét használja-e vagy figyelmen kívül hagyja, az MFC pedig ezeket az információkat használja a hívás eredményének meghatározásához IsResultExpected. Ha a visszatérési érték előállítása idő- vagy erőforrásigényes, a függvény meghívásával növelheti a hatékonyságot a visszatérési érték kiszámítása előtt.

Ez a függvény csak egyszer ad vissza 0 értéket, így érvényes visszatérési értékeket kap más automatizálási függvényektől, ha meghívja őket az ügyfél által hívott automatizálási függvényből.

IsResultExpected Nemero értéket ad vissza, ha az automation függvény hívása nincs folyamatban.

CCmdTarget::OnCmdMsg

A keretrendszer meghívta a parancsüzenetek átirányítására és küldésére, valamint a parancs felhasználói felületi objektumainak frissítésének kezelésére.

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

Paraméterek

nID
A parancsazonosítót tartalmazza.

nCode
Azonosítja a parancs értesítési kódját. A megjegyzésekben további információt talál a következő értékekkel nCodekapcsolatban: .

pExtra
Az érték nCodeszerint használva. További információt a megjegyzésekben talál pExtra.

pHandlerInfo
Ha nemNULL, OnCmdMsg akkor a parancs elküldése helyett kitölti a pTargetpmf struktúra tagjait és pHandlerInfo a szerkezet tagjait. Ennek a paraméternek általában a következőnek kell lennie NULL: .

Visszaadott érték

Nonzero, ha az üzenetet kezelik; egyéb esetben 0.

Megjegyzések

Ez a keretrendszer parancsarchitektúrájának fő implementációs rutinja.

Futtatáskor egy parancsot küld más objektumoknak, OnCmdMsg vagy magát a parancsot úgy kezeli, hogy meghívja a gyökérosztályt CCmdTarget::OnCmdMsg, amely elvégzi a tényleges üzenettérkép-keresést. Az alapértelmezett parancs-útválasztás teljes leírását az Üzenetkezelési és -leképezési témakörökben talál.

Ritkán érdemes felülbírálni ezt a tagfüggvényt, hogy kibővítse a keretrendszer szabványos parancs-útválasztását. A parancs-útválasztási architektúra részletes részleteiért tekintse meg a Technical Note 21-et .

Felülbírálás OnCmdMsgesetén meg kell adnia a megfelelő értéket nCode, a parancsértesítési kódot, és pExtraaz értéktől nCodefüggően. Az alábbi táblázat a hozzájuk tartozó értékeket sorolja fel:

nCode érték pExtra érték
CN_COMMAND CCmdUI*
CN_EVENT AFX_EVENT*
CN_UPDATE_COMMAND_UI CCmdUI*
CN_OLECOMMAND COleCmdUI*
CN_OLE_UNREGISTER NULL

példa

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

A keretrendszer meghívja, amikor az objektumra vagy az objektumról az utolsó OLE-hivatkozás ki van adva.

virtual void OnFinalRelease();

Megjegyzések

Felülbírálja ezt a függvényt, hogy különleges kezelést biztosítson ehhez a helyzethez. Az alapértelmezett implementáció törli az objektumot.

CCmdTarget::RestoreWaitCursor

Hívja meg ezt a függvényt, hogy visszaállítsa a megfelelő homokóra-kurzort a rendszerkurzor módosítása után (például miután egy üzenetmező megnyílt, majd bezárult egy hosszú művelet közepén).

void RestoreWaitCursor();

példa

// 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
}

Lásd még

MFC-minta ACDUAL
CObject osztály
hierarchiadiagram
CCmdUI osztály
CDocument osztály
CDocTemplate osztály
CWinApp osztály
CWnd osztály
CView osztály
CFrameWnd osztály
COleDispatchDriver osztály