Bagikan melalui


CCmdTarget Kelas

Kelas dasar untuk arsitektur peta pesan Pustaka Kelas Microsoft Foundation.

Sintaks

class CCmdTarget : public CObject

Anggota

Konstruktor Publik

Nama Deskripsi
CCmdTarget::CCmdTarget Membuat CCmdTarget objek.

Metode Publik

Nama Deskripsi
CCmdTarget::BeginWaitCursor Menampilkan kursor sebagai kursor jam-jam.
CCmdTarget::DoOleVerb Menyebabkan tindakan yang ditentukan oleh kata kerja OLE dilakukan.
CCmdTarget::EnableAutomation Mengizinkan otomatisasi OLE untuk CCmdTarget objek.
CCmdTarget::EnableConnections Mengaktifkan penembakan peristiwa melalui titik koneksi.
CCmdTarget::EnableTypeLib Mengaktifkan pustaka jenis objek.
CCmdTarget::EndWaitCursor Kembali ke kursor sebelumnya.
CCmdTarget::EnumOleVerbs Menghitung kata kerja OLE objek.
CCmdTarget::FromIDispatch Mengembalikan penunjuk ke objek yang CCmdTarget terkait dengan IDispatch penunjuk.
CCmdTarget::GetDispatchIID Mendapatkan ID antarmuka pengiriman utama.
CCmdTarget::GetIDispatch Mengembalikan penunjuk ke objek yang IDispatch terkait dengan CCmdTarget objek.
CCmdTarget::GetTypeInfoCount Mengambil jumlah antarmuka informasi jenis yang disediakan objek.
CCmdTarget::GetTypeInfoOfGuid Mengambil deskripsi jenis yang sesuai dengan GUID yang ditentukan.
CCmdTarget::GetTypeLib Mendapatkan penunjuk ke pustaka jenis.
CCmdTarget::GetTypeLibCache Mendapatkan cache pustaka jenis.
CCmdTarget::IsInvokeAllowed Mengaktifkan pemanggilan metode otomatisasi.
CCmdTarget::IsResultExpected Mengembalikan nonzero jika fungsi otomatisasi harus mengembalikan nilai.
CCmdTarget::OnCmdMsg Merutekan dan mengirimkan pesan perintah.
CCmdTarget::OnFinalRelease Membersihkan setelah referensi OLE terakhir dirilis.
CCmdTarget::RestoreWaitCursor Memulihkan kursor hourglass.

Keterangan

Peta pesan merutekan perintah atau pesan ke fungsi anggota yang Anda tulis untuk menanganinya. (Perintah adalah pesan dari item menu, tombol perintah, atau kunci akselerator.)

Kelas kerangka kerja utama yang berasal dari CCmdTarget include , , CWinApp, CDocumentCWnd, dan CFrameWndCView. Jika Anda ingin kelas baru menangani pesan, dapatkan kelas dari salah satu kelas turunan ini CCmdTarget. Anda jarang mendapatkan kelas dari CCmdTarget secara langsung.

Untuk gambaran umum target dan OnCmdMsg perutean perintah, lihat Target Perintah, Perutean Perintah, dan Pesan Pemetaan.

CCmdTarget termasuk fungsi anggota yang menangani tampilan kursor hourglass. Tampilkan kursor hourglass saat Anda mengharapkan perintah mengambil interval waktu yang terlihat untuk dijalankan.

Peta pengiriman, mirip dengan peta pesan, digunakan untuk mengekspos fungsionalitas otomatisasi IDispatch OLE. Dengan mengekspos antarmuka ini, aplikasi lain (seperti Visual Basic) dapat memanggil ke aplikasi Anda.

Hierarki Warisan

CObject

CCmdTarget

Persyaratan

Header: afxwin.h

CCmdTarget::BeginWaitCursor

Panggil fungsi ini untuk menampilkan kursor sebagai hourglass ketika Anda mengharapkan perintah untuk mengambil interval waktu yang nyata untuk dijalankan.

void BeginWaitCursor();

Keterangan

Kerangka kerja memanggil fungsi ini untuk menunjukkan kepada pengguna bahwa ia sibuk, seperti ketika CDocument objek dimuat atau disimpan sendiri ke file.

Tindakan BeginWaitCursor tidak selalu efektif di luar satu handler pesan seperti tindakan lain, seperti OnSetCursor penanganan, dapat mengubah kursor.

Panggil EndWaitCursor untuk memulihkan kursor sebelumnya.

Contoh

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

Membuat CCmdTarget objek.

CCmdTarget();

CCmdTarget::DoOleVerb

Menyebabkan tindakan yang ditentukan oleh kata kerja OLE dilakukan.

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

Parameter

iVerb
Pengidentifikasi numerik kata kerja.

lpMsg
Penunjuk ke MSG struktur yang menjelaskan peristiwa (seperti klik ganda) yang memanggil kata kerja.

hWndParent
Handel jendela dokumen yang berisi objek.

lpRect
Arahkan ke RECT struktur yang berisi koordinat, dalam piksel, yang menentukan persegi panjang pembatas objek di hWndParent.

Tampilkan Nilai

TRUE jika berhasil, jika tidak FALSE.

Keterangan

Fungsi anggota ini pada dasarnya adalah implementasi dari IOleObject::DoVerb. Kemungkinan tindakan dijumlahkan oleh CCmdTarget::EnumOleVerbs.

CCmdTarget::EnableAutomation

Panggil fungsi ini untuk mengaktifkan otomatisasi OLE untuk objek.

void EnableAutomation();

Keterangan

Fungsi ini biasanya dipanggil dari konstruktor objek Anda dan hanya boleh dipanggil jika peta pengiriman telah dideklarasikan untuk kelas . Untuk informasi selengkapnya tentang otomatisasi, lihat artikel Klien Automation dan Server Automation.

CCmdTarget::EnableConnections

Mengaktifkan penembakan peristiwa melalui titik koneksi.

void EnableConnections();

Keterangan

Untuk mengaktifkan titik koneksi, panggil fungsi anggota ini di konstruktor kelas turunan Anda.

CCmdTarget::EnableTypeLib

Mengaktifkan pustaka jenis objek.

void EnableTypeLib();

Keterangan

Panggil fungsi anggota ini di konstruktor objek -turunan Anda CCmdTargetjika menyediakan informasi jenis.

CCmdTarget::EndWaitCursor

Panggil fungsi ini setelah Anda memanggil BeginWaitCursor fungsi anggota untuk kembali dari kursor hourglass ke kursor sebelumnya.

void EndWaitCursor();

Keterangan

Kerangka kerja ini juga memanggil fungsi anggota ini setelah disebut kursor hourglass.

Contoh

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

Menghitung kata kerja OLE objek.

BOOL EnumOleVerbs(LPENUMOLEVERB* ppenumOleVerb);

Parameter

ppenumOleVerb
Penunjuk ke penunjuk ke IEnumOLEVERB antarmuka.

Tampilkan Nilai

TRUE jika objek mendukung setidaknya satu kata kerja OLE (dalam hal ini *ppenumOleVerb menunjuk ke IEnumOLEVERB antarmuka enumerator), jika tidak FALSE.

Keterangan

Fungsi anggota ini pada dasarnya adalah implementasi dari IOleObject::EnumVerbs.

CCmdTarget::FromIDispatch

Panggil fungsi ini untuk memetakan IDispatch pointer, yang diterima dari fungsi anggota otomatisasi kelas, ke dalam CCmdTarget objek yang mengimplementasikan antarmuka IDispatch objek.

static CCmdTarget* PASCAL FromIDispatch(LPDISPATCH lpDispatch);

Parameter

lpDispatch
Penunjuk ke IDispatch objek.

Tampilkan Nilai

Penunjuk ke objek yang CCmdTarget terkait dengan lpDispatch. Fungsi ini mengembalikan NULL jika IDispatch objek tidak dikenali sebagai objek Kelas IDispatch Microsoft Foundation.

Keterangan

Hasil dari fungsi ini adalah inversi panggilan ke fungsi GetIDispatchanggota .

CCmdTarget::GetDispatchIID

Mendapatkan ID antarmuka pengiriman utama.

virtual BOOL GetDispatchIID(IID* pIID);

Parameter

pIID
Penunjuk ke ID antarmuka ( GUID).

Tampilkan Nilai

TRUE jika berhasil, jika tidak FALSE. Jika berhasil, *pIID diatur ke ID antarmuka pengiriman utama.

Keterangan

Kelas turunan harus mengambil alih fungsi anggota ini (jika tidak ditimpa, GetDispatchIID mengembalikan FALSE). Lihat COleControl.

CCmdTarget::GetIDispatch

Panggil fungsi anggota ini untuk mengambil IDispatch penunjuk dari metode otomatisasi yang mengembalikan IDispatch penunjuk atau mengambil IDispatch penunjuk menurut referensi.

LPDISPATCH GetIDispatch(BOOL bAddRef);

Parameter

bAddRef
Menentukan apakah akan menaikkan jumlah referensi untuk objek.

Tampilkan Nilai

Penunjuk IDispatch yang terkait dengan objek.

Keterangan

Untuk objek yang memanggil EnableAutomation konstruktor mereka, membuatnya otomatisasi diaktifkan, fungsi ini mengembalikan penunjuk ke implementasi IDispatch Kelas Foundation yang digunakan oleh klien yang berkomunikasi melalui IDispatch antarmuka. Memanggil fungsi ini secara otomatis menambahkan referensi ke penunjuk, sehingga tidak perlu melakukan panggilan ke IUnknown::AddRef.

CCmdTarget::GetTypeInfoCount

Mengambil jumlah antarmuka informasi jenis yang disediakan objek.

virtual UINT GetTypeInfoCount();

Tampilkan Nilai

Jumlah antarmuka informasi jenis.

Keterangan

Fungsi anggota ini pada dasarnya mengimplementasikan IDispatch::GetTypeInfoCount.

Kelas turunan harus mengambil alih fungsi ini untuk mengembalikan jumlah antarmuka informasi jenis yang disediakan (baik 0 atau 1). Jika tidak ditimpa, GetTypeInfoCount mengembalikan 0. Untuk mengambil alih, gunakan IMPLEMENT_OLETYPELIB makro, yang juga mengimplementasikan GetTypeLib dan GetTypeLibCache.

CCmdTarget::GetTypeInfoOfGuid

Mengambil deskripsi jenis yang sesuai dengan GUID yang ditentukan.

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

Parameter

lcid
Pengidentifikasi lokal ( LCID).

guid
GUID deskripsi jenis.

ppTypeInfo
Arahkan ke penunjuk ke ITypeInfo antarmuka.

Tampilkan Nilai

Menunjukkan HRESULT keberhasilan atau kegagalan panggilan. Jika berhasil, *ppTypeInfo arahkan ke antarmuka informasi jenis.

CCmdTarget::GetTypeLib

Mendapatkan penunjuk ke pustaka jenis.

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

Parameter

lcid
Pengidentifikasi lokal (LCID).

ppTypeLib
Penunjuk ke penunjuk ke ITypeLib antarmuka.

Tampilkan Nilai

Menunjukkan HRESULT keberhasilan atau kegagalan panggilan. Jika berhasil, *ppTypeLib arahkan ke antarmuka pustaka jenis.

Keterangan

Kelas turunan harus mengambil alih fungsi anggota ini (jika tidak ditimpa, GetTypeLib mengembalikan TYPE_E_CANTLOADLIBRARY). IMPLEMENT_OLETYPELIB Gunakan makro, yang juga mengimplementasikan GetTypeInfoCount dan GetTypeLibCache.

CCmdTarget::GetTypeLibCache

Mendapatkan cache pustaka jenis.

virtual CTypeLibCache* GetTypeLibCache();

Tampilkan Nilai

Penunjuk ke CTypeLibCache objek.

Keterangan

Kelas turunan harus mengambil alih fungsi anggota ini (jika tidak ditimpa, GetTypeLibCache mengembalikan NULL). IMPLEMENT_OLETYPELIB Gunakan makro, yang juga mengimplementasikan GetTypeInfoCount dan GetTypeLib.

CCmdTarget::IsInvokeAllowed

Fungsi ini dipanggil oleh implementasi IDispatch::Invoke MFC untuk menentukan apakah metode otomatisasi tertentu (diidentifikasi oleh dispid) dapat dipanggil.

virtual BOOL IsInvokeAllowed(DISPID dispid);

Parameter

dispid
ID pengiriman.

Tampilkan Nilai

TRUE jika metode dapat dipanggil, jika tidak FALSE.

Keterangan

Jika IsInvokeAllowed mengembalikan TRUE, Invoke melanjutkan untuk memanggil metode; jika tidak, Invoke akan gagal, mengembalikan E_UNEXPECTED.

Kelas turunan dapat mengambil alih fungsi ini untuk mengembalikan nilai yang sesuai (jika tidak ditimpa, IsInvokeAllowed mengembalikan TRUE). Lihat secara khusus COleControl::IsInvokeAllowed.

CCmdTarget::IsResultExpected

Gunakan IsResultExpected untuk memastikan apakah klien mengharapkan nilai pengembalian dari panggilannya ke fungsi otomatisasi.

BOOL IsResultExpected();

Tampilkan Nilai

Bukan nol jika fungsi otomatisasi harus mengembalikan nilai; jika tidak, 0.

Keterangan

Antarmuka OLE menyediakan informasi ke MFC tentang apakah klien menggunakan atau mengabaikan hasil panggilan fungsi, dan MFC pada gilirannya menggunakan informasi ini untuk menentukan hasil panggilan ke IsResultExpected. Jika produksi nilai pengembalian adalah waktu atau intensif sumber daya, Anda dapat meningkatkan efisiensi dengan memanggil fungsi ini sebelum menghitung nilai yang dikembalikan.

Fungsi ini mengembalikan 0 hanya sekali sehingga Anda akan mendapatkan nilai pengembalian yang valid dari fungsi otomatisasi lain jika Anda memanggilnya dari fungsi otomatisasi yang telah dipanggil klien.

IsResultExpected mengembalikan nilai bukan nol jika dipanggil saat panggilan fungsi otomatisasi tidak sedang berlangsung.

CCmdTarget::OnCmdMsg

Dipanggil oleh kerangka kerja untuk merutekan dan mengirimkan pesan perintah dan untuk menangani pembaruan objek antarmuka pengguna perintah.

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

Parameter

nID
Berisi ID perintah.

nCode
Mengidentifikasi kode pemberitahuan perintah. Lihat Keterangan untuk informasi selengkapnya tentang nilai untuk nCode.

pExtra
Digunakan sesuai dengan nilai nCode. Lihat Keterangan untuk informasi selengkapnya tentang pExtra.

pHandlerInfo
Jika tidak NULL, OnCmdMsg mengisi pTarget anggota pHandlerInfo struktur dan pmf alih-alih mengirimkan perintah. Biasanya, parameter ini harus NULL.

Tampilkan Nilai

Bukan nol jika pesan ditangani; jika tidak, 0.

Keterangan

Ini adalah rutinitas implementasi utama dari arsitektur perintah kerangka kerja.

Pada waktu proses, OnCmdMsg mengirimkan perintah ke objek lain atau menangani perintah itu sendiri dengan memanggil kelas CCmdTarget::OnCmdMsgakar , yang melakukan pencarian peta pesan yang sebenarnya. Untuk deskripsi lengkap perutean perintah default, lihat Topik Penanganan dan Pemetaan Pesan.

Pada kesempatan yang jarang terjadi, Anda mungkin ingin mengambil alih fungsi anggota ini untuk memperluas perutean perintah standar kerangka kerja. Lihat Catatan Teknis 21 untuk detail lanjutan arsitektur perutean perintah.

Jika Anda mengambil OnCmdMsgalih , Anda harus memberikan nilai yang sesuai untuk nCode, kode pemberitahuan perintah, dan pExtra, yang tergantung pada nilai nCode. Tabel berikut mencantumkan nilai terkaitnya:

nCode nilai pExtra nilai
CN_COMMAND CCmdUI*
CN_EVENT AFX_EVENT*
CN_UPDATE_COMMAND_UI CCmdUI*
CN_OLECOMMAND COleCmdUI*
CN_OLE_UNREGISTER NULL

Contoh

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

Dipanggil oleh kerangka kerja ketika referensi OLE terakhir ke atau dari objek dirilis.

virtual void OnFinalRelease();

Keterangan

Ambil alih fungsi ini untuk memberikan penanganan khusus untuk situasi ini. Implementasi default menghapus objek.

CCmdTarget::RestoreWaitCursor

Panggil fungsi ini untuk memulihkan kursor hourglass yang sesuai setelah kursor sistem berubah (misalnya, setelah kotak pesan dibuka lalu ditutup saat berada di tengah operasi panjang).

void RestoreWaitCursor();

Contoh

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

Lihat juga

Sampel MFC ACDUAL
CObject Kelas
Bagan Hierarki
CCmdUI Kelas
CDocument Kelas
CDocTemplate Kelas
CWinApp Kelas
CWnd Kelas
CView Kelas
CFrameWnd Kelas
COleDispatchDriver Kelas