// [!output DIALOG_AUTO_PROXY_IMPL] : 実装ファイル // #include "stdafx.h" #include "[!output APP_HEADER]" #include "[!output DIALOG_AUTO_PROXY_HEADER]" #include "[!output DIALOG_HEADER]" #ifdef _DEBUG #define new DEBUG_NEW #endif // [!output DIALOG_AUTO_PROXY_CLASS] IMPLEMENT_DYNCREATE([!output DIALOG_AUTO_PROXY_CLASS], [!output DIALOG_AUTO_PROXY_BASE_CLASS]) [!output DIALOG_AUTO_PROXY_CLASS]::[!output DIALOG_AUTO_PROXY_CLASS]() { EnableAutomation(); // オートメーション オブジェクトがアクティブである限り、アプリケーションを // 実行状態にしてください、コンストラクタは AfxOleLockApp を呼び出します。 AfxOleLockApp(); // アプリケーションのメイン ウィンドウ ポインタをとおしてダイアログ // へアクセスします。プロキシの内部ポインタからダイアログへのポイ // ンタを設定し、ダイアログの戻りポインタをこのプロキシへ設定しま // す。 ASSERT_VALID(AfxGetApp()->m_pMainWnd); if (AfxGetApp()->m_pMainWnd) { ASSERT_KINDOF([!output DIALOG_CLASS], AfxGetApp()->m_pMainWnd); if (AfxGetApp()->m_pMainWnd->IsKindOf(RUNTIME_CLASS([!output DIALOG_CLASS]))) { m_pDialog = reinterpret_cast<[!output DIALOG_CLASS]*>(AfxGetApp()->m_pMainWnd); m_pDialog->m_pAutoProxy = this; } } } [!output DIALOG_AUTO_PROXY_CLASS]::~[!output DIALOG_AUTO_PROXY_CLASS]() { // すべてのオブジェクトがオートメーションで作成された場合にアプリケーション // を終了するために、デストラクタが AfxOleUnlockApp を呼び出します。 // 他の処理の間に、メイン ダイアログを破壊します。 if (m_pDialog != NULL) m_pDialog->m_pAutoProxy = NULL; AfxOleUnlockApp(); } void [!output DIALOG_AUTO_PROXY_CLASS]::OnFinalRelease() { // オートメーション オブジェクトに対する最後の参照が解放される時に // OnFinalRelease が呼び出されます。基本クラスは自動的にオブジェク // トを削除します。基本クラスを呼び出す前に、オブジェクトで必要な特 // 別な後処理を追加してください。 [!output DIALOG_AUTO_PROXY_BASE_CLASS]::OnFinalRelease(); } BEGIN_MESSAGE_MAP([!output DIALOG_AUTO_PROXY_CLASS], [!output DIALOG_AUTO_PROXY_BASE_CLASS]) END_MESSAGE_MAP() BEGIN_DISPATCH_MAP([!output DIALOG_AUTO_PROXY_CLASS], [!output DIALOG_AUTO_PROXY_BASE_CLASS]) END_DISPATCH_MAP() // メモ: VBA からタイプ セーフなバインドをサポートするために、IID_I[!output SAFE_PROJECT_IDENTIFIER_NAME] のサポートを追加します。 // この IID は、.IDL ファイルのディスパッチ インターフェイスへアタッチされる // GUID と一致しなければなりません。 // {[!output DISPIID_REGISTRY_FORMAT]} static const IID IID_I[!output SAFE_PROJECT_IDENTIFIER_NAME] = [!output DISPIID_STATIC_CONST_GUID_FORMAT]; BEGIN_INTERFACE_MAP([!output DIALOG_AUTO_PROXY_CLASS], [!output DIALOG_AUTO_PROXY_BASE_CLASS]) INTERFACE_PART([!output DIALOG_AUTO_PROXY_CLASS], IID_I[!output SAFE_PROJECT_IDENTIFIER_NAME], Dispatch) END_INTERFACE_MAP() // IMPLEMENT_OLECREATE2 マクロが、このプロジェクトの StdAfx.h で定義されます。 // {[!output APP_CLSID_REGISTRY_FORMAT]} IMPLEMENT_OLECREATE2([!output DIALOG_AUTO_PROXY_CLASS], "[!output SAFE_PROJECT_IDENTIFIER_NAME].Application", [!output APP_CLSID_IMPLEMENT_OLECREATE_FORMAT]) // [!output DIALOG_AUTO_PROXY_CLASS] メッセージ ハンドラ