// [!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]() { // 모든 개체가 OLE 자동화로 만들어졌을 때 응용 프로그램을 종료하기 위해 // 소멸자가 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() // 참고: IID_I[!output SAFE_PROJECT_IDENTIFIER_NAME]에 대한 지원을 추가하여 // VBA에서 형식 안전 바인딩을 지원합니다. // 이 IID는 .IDL 파일의 dispinterface에 첨부된 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] 메시지 처리기