
// DlgProxy.cpp : 实现文件
//

#include "stdafx.h"
#include "Verbpo.h"
#include "DlgProxy.h"
#include "VerbpoDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif


// CVerbpoDlgAutoProxy

IMPLEMENT_DYNCREATE(CVerbpoDlgAutoProxy, CCmdTarget)

CVerbpoDlgAutoProxy::CVerbpoDlgAutoProxy()
{
	EnableAutomation();
	
	// 为使应用程序在自动化对象处于活动状态时一直保持 
	//	运行，构造函数调用 AfxOleLockApp。
	AfxOleLockApp();

	// 通过应用程序的主窗口指针
	//  来访问对话框。  设置代理的内部指针
	//  指向对话框，并设置对话框的后向指针指向
	//  该代理。
	ASSERT_VALID(AfxGetApp()->m_pMainWnd);
	if (AfxGetApp()->m_pMainWnd)
	{
		ASSERT_KINDOF(CVerbpoDlg, AfxGetApp()->m_pMainWnd);
		if (AfxGetApp()->m_pMainWnd->IsKindOf(RUNTIME_CLASS(CVerbpoDlg)))
		{
			m_pDialog = reinterpret_cast<CVerbpoDlg*>(AfxGetApp()->m_pMainWnd);
			m_pDialog->m_pAutoProxy = this;
		}
	}
}

CVerbpoDlgAutoProxy::~CVerbpoDlgAutoProxy()
{
	// 为了在用 OLE 自动化创建所有对象后终止应用程序，
	//	析构函数调用 AfxOleUnlockApp。
	//  除了做其他事情外，这还将销毁主对话框
	if (m_pDialog != NULL)
		m_pDialog->m_pAutoProxy = NULL;
	AfxOleUnlockApp();
}

void CVerbpoDlgAutoProxy::OnFinalRelease()
{
	// 释放了对自动化对象的最后一个引用后，将调用
	// OnFinalRelease。  基类将自动
	// 删除该对象。  在调用该基类之前，请添加您的
	// 对象所需的附加清理代码。

	CCmdTarget::OnFinalRelease();
}

BEGIN_MESSAGE_MAP(CVerbpoDlgAutoProxy, CCmdTarget)
END_MESSAGE_MAP()

BEGIN_DISPATCH_MAP(CVerbpoDlgAutoProxy, CCmdTarget)
END_DISPATCH_MAP()

// 注意: 我们添加了对 IID_IVerbpo 的支持
//  以支持来自 VBA 的类型安全绑定。  此 IID 必须同附加到 .IDL 文件中的
//  调度接口的 GUID 匹配。

// {54C3F44F-496A-4655-970E-81CF0F5C07BB}
static const IID IID_IVerbpo =
{ 0x54C3F44F, 0x496A, 0x4655, { 0x97, 0xE, 0x81, 0xCF, 0xF, 0x5C, 0x7, 0xBB } };

BEGIN_INTERFACE_MAP(CVerbpoDlgAutoProxy, CCmdTarget)
	INTERFACE_PART(CVerbpoDlgAutoProxy, IID_IVerbpo, Dispatch)
END_INTERFACE_MAP()

// IMPLEMENT_OLECREATE2 宏在此项目的 StdAfx.h 中定义
// {10DD4EF9-B65F-4A2E-9236-4834DE2BCEBE}
IMPLEMENT_OLECREATE2(CVerbpoDlgAutoProxy, "Verbpo.Application", 0x10dd4ef9, 0xb65f, 0x4a2e, 0x92, 0x36, 0x48, 0x34, 0xde, 0x2b, 0xce, 0xbe)


// CVerbpoDlgAutoProxy 消息处理程序
