CCmdTarget
Klasa
Klasa podstawowa dla architektury message-map biblioteki klas programu Microsoft Foundation.
Składnia
class CCmdTarget : public CObject
Elementy członkowskie
Konstruktory publiczne
Nazwa/nazwisko | opis |
---|---|
CCmdTarget::CCmdTarget |
CCmdTarget Tworzy obiekt. |
Metody publiczne
Nazwa/nazwisko | opis |
---|---|
CCmdTarget::BeginWaitCursor |
Wyświetla kursor jako kursor klepsydry. |
CCmdTarget::DoOleVerb |
Powoduje wykonanie akcji określonej przez zlecenie OLE. |
CCmdTarget::EnableAutomation |
Umożliwia automatyzację CCmdTarget OLE dla obiektu. |
CCmdTarget::EnableConnections |
Włącza wyzwalanie zdarzeń przez punkty połączenia. |
CCmdTarget::EnableTypeLib |
Włącza bibliotekę typów obiektu. |
CCmdTarget::EndWaitCursor |
Wraca do poprzedniego kursora. |
CCmdTarget::EnumOleVerbs |
Wylicza czasowniki OLE obiektu. |
CCmdTarget::FromIDispatch |
Zwraca wskaźnik do obiektu skojarzonego CCmdTarget ze wskaźnikiem IDispatch . |
CCmdTarget::GetDispatchIID |
Pobiera podstawowy identyfikator interfejsu wysyłania. |
CCmdTarget::GetIDispatch |
Zwraca wskaźnik do obiektu skojarzonego IDispatch z obiektem CCmdTarget . |
CCmdTarget::GetTypeInfoCount |
Pobiera liczbę interfejsów informacyjnych typu zapewnianych przez obiekt. |
CCmdTarget::GetTypeInfoOfGuid |
Pobiera opis typu odpowiadający określonemu identyfikatorowi GUID. |
CCmdTarget::GetTypeLib |
Pobiera wskaźnik do biblioteki typów. |
CCmdTarget::GetTypeLibCache |
Pobiera pamięć podręczną biblioteki typów. |
CCmdTarget::IsInvokeAllowed |
Włącza wywołanie metody automatyzacji. |
CCmdTarget::IsResultExpected |
Zwraca wartość niezerową, jeśli funkcja automatyzacji powinna zwrócić wartość. |
CCmdTarget::OnCmdMsg |
Kieruje i wysyła komunikaty poleceń. |
CCmdTarget::OnFinalRelease |
Czyści się po wydaniu ostatniego odwołania OLE. |
CCmdTarget::RestoreWaitCursor |
Przywraca kursor klepsydry. |
Uwagi
Mapa komunikatów kieruje polecenia lub komunikaty do funkcji składowych, które zapisujesz w celu ich obsługi. (Polecenie to komunikat z elementu menu, przycisku polecenia lub akceleratora).
Kluczowe klasy struktury pochodzące z CCmdTarget
elementów include CView
, CWinApp
, CDocument
, CWnd
i CFrameWnd
. Jeśli zamierzasz, aby nowa klasa obsługiwała komunikaty, należy utworzyć klasę z jednej z tych CCmdTarget
klas pochodnych. Rzadko będziesz pochodzić z klasy bezpośrednio CCmdTarget
.
Aby zapoznać się z omówieniem obiektów docelowych poleceń i OnCmdMsg
routingu, zobacz Elementy docelowe poleceń, Routing poleceń i Komunikaty mapowania.
CCmdTarget
zawiera funkcje składowe obsługujące wyświetlanie kursora klepsydry. Wyświetla kursor klepsydry, gdy oczekujesz, że wykonanie polecenia zajmie zauważalny interwał czasu.
Mapy wysyłania, podobnie jak mapy komunikatów, są używane do uwidaczniania funkcji automatyzacji IDispatch
OLE. Uwidaczniając ten interfejs, inne aplikacje (takie jak Visual Basic) mogą wywoływać aplikację.
Hierarchia dziedziczenia
CCmdTarget
Wymagania
Nagłówek: afxwin.h
CCmdTarget::BeginWaitCursor
Wywołaj tę funkcję, aby wyświetlić kursor jako klepsydry, gdy oczekujesz, że wykonanie polecenia zajmie zauważalny interwał czasu.
void BeginWaitCursor();
Uwagi
Struktura wywołuje tę funkcję, aby pokazać użytkownikowi, że jest zajęty, na przykład gdy CDocument
obiekt ładuje lub zapisuje się w pliku.
Akcje nie zawsze są skuteczne poza jedną procedurą obsługi komunikatów, ponieważ inne akcje BeginWaitCursor
, takie jak OnSetCursor
obsługa, mogą zmienić kursor.
Wywołaj metodę EndWaitCursor
, aby przywrócić poprzedni kursor.
Przykład
// 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
CCmdTarget
Tworzy obiekt.
CCmdTarget();
CCmdTarget::DoOleVerb
Powoduje wykonanie akcji określonej przez zlecenie OLE.
BOOL DoOleVerb(
LONG iVerb,
LPMSG lpMsg,
HWND hWndParent,
LPCRECT lpRect);
Parametry
iVerb
Identyfikator liczbowy czasownika.
lpMsg
Wskaźnik do MSG
struktury opisującej zdarzenie (na przykład dwukrotne kliknięcie), które wywołało czasownik.
hWndParent
Obsługa okna dokumentu zawierającego obiekt.
lpRect
Wskaźnik do RECT
struktury zawierającej współrzędne w pikselach, które definiują prostokąt ograniczenia obiektu w .hWndParent
Wartość zwracana
TRUE
jeśli operacja powiedzie się, w przeciwnym razie FALSE
.
Uwagi
Ta funkcja składowa jest w zasadzie implementacją .IOleObject::DoVerb
Możliwe akcje są wyliczane przez element CCmdTarget::EnumOleVerbs
.
CCmdTarget::EnableAutomation
Wywołaj tę funkcję, aby włączyć automatyzację OLE dla obiektu.
void EnableAutomation();
Uwagi
Ta funkcja jest zwykle wywoływana z konstruktora obiektu i powinna być wywoływana tylko wtedy, gdy mapa wysyłki została zadeklarowana dla klasy. Aby uzyskać więcej informacji na temat automatyzacji, zobacz artykuły Klienty automatyzacji i serwery automatyzacji.
CCmdTarget::EnableConnections
Włącza wyzwalanie zdarzeń przez punkty połączenia.
void EnableConnections();
Uwagi
Aby włączyć punkty połączenia, wywołaj tę funkcję składową w konstruktorze klasy pochodnej.
CCmdTarget::EnableTypeLib
Włącza bibliotekę typów obiektu.
void EnableTypeLib();
Uwagi
Wywołaj tę funkcję składową w konstruktorze obiektu -pochodnego CCmdTarget
, jeśli zawiera informacje o typie.
CCmdTarget::EndWaitCursor
Wywołaj tę funkcję po wywołaniu funkcji składowej BeginWaitCursor
, aby powrócić z kursora klepsydry do poprzedniego kursora.
void EndWaitCursor();
Uwagi
Struktura wywołuje również tę funkcję składową po wywołaniu kursora klepsydry.
Przykład
// 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
Wylicza czasowniki OLE obiektu.
BOOL EnumOleVerbs(LPENUMOLEVERB* ppenumOleVerb);
Parametry
ppenumOleVerb
Wskaźnik do wskaźnika do interfejsu IEnumOLEVERB
.
Wartość zwracana
TRUE
jeśli obiekt obsługuje co najmniej jedno zlecenie OLE (w którym przypadku *ppenumOleVerb
wskazuje IEnumOLEVERB
interfejs modułu wyliczającego), w przeciwnym razie FALSE
.
Uwagi
Ta funkcja składowa jest w zasadzie implementacją .IOleObject::EnumVerbs
CCmdTarget::FromIDispatch
Wywołaj tę funkcję, aby zamapować IDispatch
wskaźnik, odebrany z funkcji składowych automatyzacji klasy, do CCmdTarget
obiektu, który implementuje interfejsy IDispatch
obiektu.
static CCmdTarget* PASCAL FromIDispatch(LPDISPATCH lpDispatch);
Parametry
lpDispatch
Wskaźnik do IDispatch
obiektu.
Wartość zwracana
Wskaźnik do obiektu skojarzonego CCmdTarget
z lpDispatch
. Ta funkcja zwraca, NULL
jeśli IDispatch
obiekt nie jest rozpoznawany jako obiekt klasy IDispatch
programu Microsoft Foundation.
Uwagi
Wynikiem tej funkcji jest odwrotność wywołania funkcji GetIDispatch
składowej .
CCmdTarget::GetDispatchIID
Pobiera podstawowy identyfikator interfejsu wysyłania.
virtual BOOL GetDispatchIID(IID* pIID);
Parametry
pIID
Wskaźnik do identyfikatora interfejsu (identyfikator GUID).
Wartość zwracana
TRUE
jeśli operacja powiedzie się, w przeciwnym razie FALSE
. W przypadku powodzenia *pIID
parametr jest ustawiony na podstawowy identyfikator interfejsu wysyłania.
Uwagi
Klasy pochodne powinny zastąpić tę funkcję składową (jeśli nie zostanie zastąpiona, GetDispatchIID
zwraca wartość FALSE
). Zobacz: COleControl
.
CCmdTarget::GetIDispatch
Wywołaj tę funkcję składową, aby pobrać IDispatch
wskaźnik z metody automatyzacji, która zwraca IDispatch
wskaźnik lub pobiera IDispatch
wskaźnik przez odwołanie.
LPDISPATCH GetIDispatch(BOOL bAddRef);
Parametry
bAddRef
Określa, czy należy zwiększać liczbę odwołań dla obiektu.
Wartość zwracana
Wskaźnik IDispatch
skojarzony z obiektem.
Uwagi
W przypadku obiektów wywołujących EnableAutomation
w konstruktorach, dzięki czemu są włączone automatyzacja, ta funkcja zwraca wskaźnik do implementacji IDispatch
klasy foundation używanej przez klientów komunikujących się za pośrednictwem interfejsu IDispatch
. Wywołanie tej funkcji powoduje automatyczne dodanie odwołania do wskaźnika, więc nie jest konieczne wywołanie metody IUnknown::AddRef
.
CCmdTarget::GetTypeInfoCount
Pobiera liczbę interfejsów informacyjnych typu zapewnianych przez obiekt.
virtual UINT GetTypeInfoCount();
Wartość zwracana
Liczba interfejsów informacyjnych typu.
Uwagi
Ta funkcja składowa w zasadzie implementuje IDispatch::GetTypeInfoCount
element .
Klasy pochodne powinny zastąpić tę funkcję, aby zwrócić liczbę udostępnionych interfejsów informacyjnych typu (0 lub 1). Jeśli nie zostanie zastąpiony, GetTypeInfoCount
zwraca wartość 0. Aby zastąpić, użyj IMPLEMENT_OLETYPELIB
makra, które również implementuje GetTypeLib
i GetTypeLibCache
.
CCmdTarget::GetTypeInfoOfGuid
Pobiera opis typu odpowiadający określonemu identyfikatorowi GUID.
HRESULT GetTypeInfoOfGuid(
LCID lcid,
const GUID& guid,
LPTYPEINFO* ppTypeInfo);
Parametry
lcid
Identyfikator ustawień regionalnych ( LCID
).
guid
Identyfikator GUID opisu typu.
ppTypeInfo
Wskaźnik do wskaźnika do interfejsu ITypeInfo
.
Wartość zwracana
Element HRESULT
wskazujący powodzenie lub niepowodzenie wywołania. W przypadku powodzenia *ppTypeInfo
wskazuje interfejs informacyjny typu.
CCmdTarget::GetTypeLib
Pobiera wskaźnik do biblioteki typów.
virtual HRESULT GetTypeLib(
LCID lcid,
LPTYPELIB* ppTypeLib);
Parametry
lcid
Identyfikator ustawień regionalnych (LCID).
ppTypeLib
Wskaźnik do wskaźnika do interfejsu ITypeLib
.
Wartość zwracana
Element HRESULT
wskazujący powodzenie lub niepowodzenie wywołania. W przypadku powodzenia *ppTypeLib
wskazuje interfejs biblioteki typów.
Uwagi
Klasy pochodne powinny zastąpić tę funkcję składową (jeśli nie zostanie zastąpiona, GetTypeLib
zwraca wartość TYPE_E_CANTLOADLIBRARY
). Użyj makra IMPLEMENT_OLETYPELIB
, które również implementuje GetTypeInfoCount
i GetTypeLibCache
.
CCmdTarget::GetTypeLibCache
Pobiera pamięć podręczną biblioteki typów.
virtual CTypeLibCache* GetTypeLibCache();
Wartość zwracana
Wskaźnik do CTypeLibCache
obiektu.
Uwagi
Klasy pochodne powinny zastąpić tę funkcję składową (jeśli nie zostanie zastąpiona, GetTypeLibCache
zwraca wartość NULL
). Użyj makra IMPLEMENT_OLETYPELIB
, które również implementuje GetTypeInfoCount
i GetTypeLib
.
CCmdTarget::IsInvokeAllowed
Ta funkcja jest wywoływana przez implementację MFC w IDispatch::Invoke
celu określenia, czy można wywołać daną metodę automatyzacji (zidentyfikowaną przez dispid
metodę ).
virtual BOOL IsInvokeAllowed(DISPID dispid);
Parametry
dispid
Identyfikator wysyłki.
Wartość zwracana
TRUE
jeśli można wywołać metodę, w przeciwnym razie FALSE
.
Uwagi
Jeśli funkcja zwraca wartość , Invoke
przechodzi do wywołania metody . W IsInvokeAllowed
przeciwnym razie Invoke
metoda zakończy się niepowodzeniem, zwracając E_UNEXPECTED
polecenie .TRUE
Klasy pochodne mogą zastąpić tę funkcję, aby zwrócić odpowiednie wartości (jeśli nie są zastępowane, IsInvokeAllowed
zwraca wartość TRUE
). Zobacz w szczególności COleControl::IsInvokeAllowed
.
CCmdTarget::IsResultExpected
Użyj IsResultExpected
polecenia , aby ustalić, czy klient oczekuje wartości zwracanej od wywołania funkcji automatyzacji.
BOOL IsResultExpected();
Wartość zwracana
Niezerowe, jeśli funkcja automatyzacji powinna zwrócić wartość; w przeciwnym razie 0.
Uwagi
Interfejs OLE dostarcza informacje do MFC o tym, czy klient używa, czy ignoruje wynik wywołania funkcji, a MFC z kolei używa tych informacji do określenia wyniku wywołania metody IsResultExpected
. Jeśli produkcja wartości zwracanej jest czasochłonna lub intensywnie obciążająca zasoby, możesz zwiększyć wydajność, wywołując tę funkcję przed obliczenie wartości zwracanej.
Ta funkcja zwraca wartość 0 tylko raz, aby uzyskać prawidłowe wartości zwracane z innych funkcji automatyzacji, jeśli wywołasz je z funkcji automatyzacji, która została wywołana przez klienta.
IsResultExpected
Zwraca wartość niezerową, jeśli jest wywoływana, gdy wywołanie funkcji automatyzacji nie jest w toku.
CCmdTarget::OnCmdMsg
Wywoływana przez platformę do kierowania i wysyłania komunikatów poleceń oraz obsługi aktualizacji obiektów interfejsu użytkownika poleceń.
virtual BOOL OnCmdMsg(
UINT nID,
int nCode,
void* pExtra,
AFX_CMDHANDLERINFO* pHandlerInfo);
Parametry
nID
Zawiera identyfikator polecenia.
nCode
Identyfikuje kod powiadomienia polecenia. Zobacz Uwagi , aby uzyskać więcej informacji na temat wartości dla elementu nCode
.
pExtra
Używany zgodnie z wartością nCode
. Zobacz uwagi , aby uzyskać więcej informacji o pExtra
.
pHandlerInfo
Jeśli nie NULL
, OnCmdMsg
wypełnia pTarget
strukturę i pmf
pHandlerInfo
zamiast wysyłać polecenie . Zazwyczaj ten parametr powinien mieć wartość NULL
.
Wartość zwracana
Nonzero, jeśli komunikat jest obsługiwany; w przeciwnym razie 0.
Uwagi
Jest to główna rutyna implementacji architektury poleceń platformy.
W czasie OnCmdMsg
wykonywania wysyła polecenie do innych obiektów lub obsługuje samo polecenie, wywołując klasę CCmdTarget::OnCmdMsg
główną , która wykonuje rzeczywiste wyszukiwanie mapy komunikatów. Pełny opis domyślnego routingu poleceń można znaleźć w temacie Obsługa komunikatów i Tematy mapowania.
W rzadkich przypadkach można zastąpić tę funkcję składową w celu rozszerzenia standardowego routingu poleceń platformy. Zapoznaj się z dokumentacją techniczną 21 , aby uzyskać szczegółowe informacje na temat architektury routingu poleceń.
Jeśli zastąpisz OnCmdMsg
wartość , musisz podać odpowiednią wartość dla nCode
, kod powiadomienia polecenia i pExtra
, który zależy od wartości nCode
. W poniższej tabeli wymieniono odpowiednie wartości:
nCode wartość |
pExtra wartość |
---|---|
CN_COMMAND |
CCmdUI * |
CN_EVENT |
AFX_EVENT * |
CN_UPDATE_COMMAND_UI |
CCmdUI * |
CN_OLECOMMAND |
COleCmdUI * |
CN_OLE_UNREGISTER |
NULL |
Przykład
// 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
Wywoływana przez strukturę po wydaniu ostatniego odwołania OLE do lub z obiektu.
virtual void OnFinalRelease();
Uwagi
Zastąpi tę funkcję, aby zapewnić specjalną obsługę tej sytuacji. Domyślna implementacja usuwa obiekt.
CCmdTarget::RestoreWaitCursor
Wywołaj tę funkcję, aby przywrócić odpowiedni kursor klepsydry po zmianie kursora systemowego (na przykład po otwarciu pola komunikatu, a następnie zamknięciu w trakcie długiej operacji).
void RestoreWaitCursor();
Przykład
// 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
}
Zobacz też
Przykład MFC ACDUAL
CObject
Klasa
Wykres hierarchii
CCmdUI
Klasa
CDocument
Klasa
CDocTemplate
Klasa
CWinApp
Klasa
CWnd
Klasa
CView
Klasa
CFrameWnd
Klasa
COleDispatchDriver
Klasa