CAxDialogImpl 類別
這個類別會實作裝載 ActiveX 控制件的對話框(強制回應或無模式)。
重要
這個類別及其成員不能用於在 Windows 執行階段 中執行的應用程式。
語法
template <class T, class TBase = CWindow>
class ATL_NO_VTABLE CAxDialogImpl : public CDialogImplBaseT<TBase>
參數
T
您的類別衍生自 CAxDialogImpl
。
TBase
的 CDialogImplBaseT
基底窗口類別。
成員
公用方法
名稱 | 描述 |
---|---|
CAxDialogImpl::AdviseSinkMap | 呼叫這個方法,以建議或取消取消物件接收對應事件對應中的所有專案。 |
CAxDialogImpl::Create | 呼叫此方法以建立無模式對話框。 |
CAxDialogImpl::D estroyWindow | 呼叫此方法以終結無模式對話方塊。 |
CAxDialogImpl::D oModal | 呼叫此方法以建立強制響應對話方塊。 |
CAxDialogImpl::EndDialog | 呼叫此方法以終結強制響應對話方塊。 |
CAxDialogImpl::GetDialogProc | 呼叫此方法以取得回呼函式的 DialogProc 指標。 |
CAxDialogImpl::GetIDD | 呼叫此方法以取得對話框範本資源標識碼 |
CAxDialogImpl::IsDialogMessage | 呼叫這個方法,以判斷訊息是否適用於此對話方塊,如果是,請處理訊息。 |
受保護的資料成員
名稱 | 描述 |
---|---|
CAxDialogImpl::m_bModal | 只有偵錯組建中存在的變數,如果對話框為強制回應,則會設定為 true。 |
備註
CAxDialogImpl
可讓您建立強制回應或無模式對話框。 CAxDialogImpl
提供對話框程式,它會使用預設訊息對應將訊息導向適當的處理程式。
CAxDialogImpl
衍生自 CDialogImplBaseT
,而後者又衍生自 TBase (預設 CWindow
為 ) 和 CMessageMap
。
您的類別必須定義 IDD 成員,以指定對話框範本資源識別碼。 例如,使用 [新增類別 ] 對話框新增 ATL Dialog 物件時,會自動將下列這一行新增至您的類別:
enum { IDD = IDD_MYDLG };
其中 MyDialog
是 ATL對話框精靈中輸入的簡短名稱 。
如需詳細資訊,請參閱 實作對話方塊 。
請注意,使用 CAxDialogImpl
所建立模式對話方塊上的 ActiveX 控制件不支援快捷鍵。 若要在以 CAxDialogImpl
建立的對話框上支援快捷鍵,請建立無模式對話框,並使用您自己的訊息迴圈,在從佇列取得訊息以處理快速鍵之後,使用 CAxDialogImpl::IsDialogMessage 。
如需 的詳細資訊 CAxDialogImpl
,請參閱 ATL 控件內含專案常見問題。
繼承階層架構
TBase
CWindowImplRoot
CDialogImplBaseT
CAxDialogImpl
需求
標頭: atlwin.h
CAxDialogImpl::AdviseSinkMap
呼叫這個方法,以建議或取消取消物件接收對應事件對應中的所有專案。
HRESULT AdviseSinkMap(bool bAdvise);
參數
bAdvise
如果要建議所有接收專案,請將 設定為 true;false 表示所有接收專案皆為未加入。
傳回值
傳回成功時S_OK,或在失敗時傳回錯誤 HRESULT。
CAxDialogImpl::Create
呼叫此方法以建立無模式對話框。
HWND Create(HWND hWndParent, LPARAM dwInitParam = NULL);
HWND Create(HWND hWndParent, RECT&, LPARAM dwInitParam = NULL);
參數
hWndParent
[in]擁有者視窗的句柄。
dwInitParam
[in]指定要傳遞至WM_INITDIALOG訊息之 lParam 參數中的對話框的值。
RECT&
不使用這個參數。 此參數會由 CComControl
傳入。
傳回值
新建立對話框的句柄。
備註
這個對話框會自動附加至 CAxDialogImpl
物件。 若要建立強制回應對話框,請呼叫 DoModal。
只提供第二個覆寫,因此對話框可以搭配 CComControl 使用。
CAxDialogImpl::D estroyWindow
呼叫此方法以終結無模式對話方塊。
BOOL DestroyWindow();
傳回值
如果視窗成功終結,則為TRUE;否則為 FALSE。
備註
請勿呼叫 DestroyWindow
來終結強制響應對話方塊。 請改為呼叫 EndDialog 。
CAxDialogImpl::D oModal
呼叫此方法以建立強制響應對話方塊。
INT_PTR DoModal(
HWND hWndParent = ::GetActiveWindow(),
LPARAM dwInitParam = NULL);
參數
hWndParent
[in]擁有者視窗的句柄。 預設值是 GetActiveWindow Win32 函式的傳回值。
dwInitParam
[in]指定要傳遞至WM_INITDIALOG訊息之 lParam 參數中的對話框的值。
傳回值
如果成功,則為呼叫 EndDialog 中指定的 nRetCode 參數值,否則為 -1。
備註
這個對話框會自動附加至 CAxDialogImpl
物件。
若要建立無模式對話框,請呼叫 [建立]。
CAxDialogImpl::EndDialog
呼叫此方法以終結強制響應對話方塊。
BOOL EndDialog(int nRetCode);
參數
nRetCode
[in]DoModal 要傳回的值。
傳回值
如果對話框已終結,則為TRUE;否則為 FALSE。
備註
EndDialog
必須透過對話框程式呼叫。 終結對話框之後,Windows 會使用 nRetCode 的值做為 的傳回值DoModal
,以建立對話方塊。
注意
請勿呼叫 EndDialog
來終結無模式對話方塊。 請改為呼叫 DestroyWindow 。
CAxDialogImpl::GetDialogProc
呼叫此方法以取得回呼函式的 DialogProc
指標。
virtual DLGPROC GetDialogProc();
傳回值
傳回回回調函式的 DialogProc
指標。
備註
函 DialogProc
式是應用程式定義的回呼函式。
CAxDialogImpl::GetIDD
呼叫此方法以取得對話框範本資源標識碼。
int GetIDD();
傳回值
傳回對話框範本資源標識碼。
CAxDialogImpl::IsDialogMessage
呼叫這個方法,以判斷訊息是否適用於此對話方塊,如果是,請處理訊息。
BOOL IsDialogMessage(LPMSG pMsg);
參數
pMsg
MSG 結構的指標,其中包含要檢查的訊息。
傳回值
如果訊息已處理,則傳回 TRUE,否則傳回 FALSE。
備註
這個方法的目的是要從訊息迴圈內呼叫。
CAxDialogImpl::m_bModal
只有偵錯組建中存在的變數,如果對話框為強制回應,則會設定為 true。
bool m_bModal;