-
Notifications
You must be signed in to change notification settings - Fork 0
/
DlgProxy.cpp
86 lines (66 loc) · 2.27 KB
/
DlgProxy.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
// DlgProxy.cpp : 实现文件
//
#include "stdafx.h"
#include "AutoVote.h"
#include "DlgProxy.h"
#include "AutoVoteDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// CAutoVoteDlgAutoProxy
IMPLEMENT_DYNCREATE(CAutoVoteDlgAutoProxy, CCmdTarget)
CAutoVoteDlgAutoProxy::CAutoVoteDlgAutoProxy()
{
EnableAutomation();
// 为使应用程序在自动化对象处于活动状态时一直保持
// 运行,构造函数调用 AfxOleLockApp。
AfxOleLockApp();
// 通过应用程序的主窗口指针
// 来访问对话框。设置代理的内部指针
// 指向对话框,并设置对话框的后向指针指向
// 该代理。
ASSERT_VALID(AfxGetApp()->m_pMainWnd);
if (AfxGetApp()->m_pMainWnd)
{
ASSERT_KINDOF(CAutoVoteDlg, AfxGetApp()->m_pMainWnd);
if (AfxGetApp()->m_pMainWnd->IsKindOf(RUNTIME_CLASS(CAutoVoteDlg)))
{
m_pDialog = reinterpret_cast<CAutoVoteDlg*>(AfxGetApp()->m_pMainWnd);
m_pDialog->m_pAutoProxy = this;
}
}
}
CAutoVoteDlgAutoProxy::~CAutoVoteDlgAutoProxy()
{
// 为了在用 OLE 自动化创建所有对象后终止应用程序,
// 析构函数调用 AfxOleUnlockApp。
// 除了做其他事情外,这还将销毁主对话框
if (m_pDialog != NULL)
m_pDialog->m_pAutoProxy = NULL;
AfxOleUnlockApp();
}
void CAutoVoteDlgAutoProxy::OnFinalRelease()
{
// 释放了对自动化对象的最后一个引用后,将调用
// OnFinalRelease。基类将自动
// 删除该对象。在调用该基类之前,请添加您的
// 对象所需的附加清理代码。
CCmdTarget::OnFinalRelease();
}
BEGIN_MESSAGE_MAP(CAutoVoteDlgAutoProxy, CCmdTarget)
END_MESSAGE_MAP()
BEGIN_DISPATCH_MAP(CAutoVoteDlgAutoProxy, CCmdTarget)
END_DISPATCH_MAP()
// 注意: 我们添加了对 IID_IAutoVote 的支持
// 以支持来自 VBA 的类型安全绑定。此 IID 必须同附加到 .IDL 文件中的
// 调度接口的 GUID 匹配。
// {5D3F01FF-9BF7-48C4-840B-2260F277BFBB}
static const IID IID_IAutoVote =
{ 0x5D3F01FF, 0x9BF7, 0x48C4, { 0x84, 0xB, 0x22, 0x60, 0xF2, 0x77, 0xBF, 0xBB } };
BEGIN_INTERFACE_MAP(CAutoVoteDlgAutoProxy, CCmdTarget)
INTERFACE_PART(CAutoVoteDlgAutoProxy, IID_IAutoVote, Dispatch)
END_INTERFACE_MAP()
// IMPLEMENT_OLECREATE2 宏在此项目的 StdAfx.h 中定义
// {BD59EC3D-5BC4-447C-B257-8A852DF15DCC}
IMPLEMENT_OLECREATE2(CAutoVoteDlgAutoProxy, "AutoVote.Application", 0xbd59ec3d, 0x5bc4, 0x447c, 0xb2, 0x57, 0x8a, 0x85, 0x2d, 0xf1, 0x5d, 0xcc)
// CAutoVoteDlgAutoProxy 消息处理程序