📄 account.cpp
字号:
// Account.cpp : 实现文件
//
#include "stdafx.h"
#include "MFCSample.h"
#include "Account.h"
// CAccount
IMPLEMENT_DYNCREATE(CAccount, CCmdTarget)
CAccount::CAccount()
: m_balance(0)
{
EnableAutomation();
// 为了使应用程序在 OLE 自动化对象处于活动状态时保持
// 运行,构造函数调用 AfxOleLockApp。
AfxOleLockApp();
}
CAccount::~CAccount()
{
// 为了在用 OLE 自动化创建所有对象后终止应用程序,
// 析构函数调用 AfxOleUnlockApp。
AfxOleUnlockApp();
}
void CAccount::OnFinalRelease()
{
// 当释放自动化对象的最后一个引用
//时调用 OnFinalRelease。基类将自动
//删除该对象。请在调用基类之前添加
//对象所需的其他清理。
CCmdTarget::OnFinalRelease();
}
BEGIN_MESSAGE_MAP(CAccount, CCmdTarget)
END_MESSAGE_MAP()
BEGIN_DISPATCH_MAP(CAccount, CCmdTarget)
DISP_PROPERTY_EX(CAccount, "Balance", GetBalance, SetBalance, VT_I4)
DISP_FUNCTION(CAccount, "Post", Post, VT_BSTR, VTS_I4)
END_DISPATCH_MAP()
// 注意:我们添加 IID_IAccount 支持
//以支持来自 VBA 的类型安全绑定。此 IID 必须同附加到 .IDL 文件中的
//调度接口的 GUID 匹配。
// {261230F3-6798-494E-9CD2-D51FAADF8A92}
static const IID IID_IAccount =
{ 0x261230F3, 0x6798, 0x494E, { 0x9C, 0xD2, 0xD5, 0x1F, 0xAA, 0xDF, 0x8A, 0x92 } };
BEGIN_INTERFACE_MAP(CAccount, CCmdTarget)
INTERFACE_PART(CAccount, IID_IAccount, Dispatch)
END_INTERFACE_MAP()
// {4753AC79-3885-4176-9560-162AFE53FFAC}
IMPLEMENT_OLECREATE_FLAGS(CAccount, "MFCSample.Account", afxRegApartmentThreading, 0x4753ac79, 0x3885, 0x4176, 0x95, 0x60, 0x16, 0x2a, 0xfe, 0x53, 0xff, 0xac)
// CAccount 消息处理程序
long CAccount::GetBalance()
{
return m_balance;
}
void CAccount::SetBalance(long nNewValue)
{
m_balance=nNewValue;
}
BSTR CAccount::Post(long lAmount)
{
CString strResult;
if((m_balance+lAmount)<0) //??
{
strResult.Format("Error. Balance(%ld) can't be overdrawn by %ld.",m_balance,-lAmount);
}
else
{
m_balance += lAmount;
strResult.Format("you'v just %s %ld, balance is %ld now!",
((lAmount >= 0) ? _T("Credit") : _T("Debit")),lAmount,m_balance);
}
return strResult.AllocSysString();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -