bank.cpp
来自「不好意思」· C++ 代码 · 共 113 行
CPP
113 行
// Bank.cpp : implementation file
//
#include "stdafx.h"
#include "Ex23a.h"
#include "Bank.h"
// CBank
IMPLEMENT_DYNCREATE(CBank, CCmdTarget)
CBank::CBank()
{
EnableAutomation();
// To keep the application running as long as an OLE automation
// object is active, the constructor calls AfxOleLockApp.
AfxOleLockApp();
m_dBalance = 0.0;
}
CBank::~CBank()
{
// To terminate the application when all objects created with
// with OLE automation, the destructor calls AfxOleUnlockApp.
AfxOleUnlockApp();
}
void CBank::OnFinalRelease()
{
// When the last reference for an automation object is released
// OnFinalRelease is called. The base class will automatically
// deletes the object. Add additional cleanup required for your
// object before calling the base class.
CCmdTarget::OnFinalRelease();
}
BEGIN_MESSAGE_MAP(CBank, CCmdTarget)
END_MESSAGE_MAP()
BEGIN_DISPATCH_MAP(CBank, CCmdTarget)
DISP_FUNCTION_ID(CBank, "Withdrawal", dispidWithdrawal, Withdrawal, VT_R8, VTS_R8)
DISP_FUNCTION_ID(CBank, "Deposit", dispidDeposit, Deposit, VT_EMPTY, VTS_R8)
DISP_PROPERTY_EX_ID(CBank, "Balance", dispidBalance, GetBalance, SetBalance, VT_R8)
END_DISPATCH_MAP()
// Note: we add support for IID_IBank to support typesafe binding
// from VBA. This IID must match the GUID that is attached to the
// dispinterface in the .IDL file.
// {8BAD2B0C-62CC-4952-811C-C736DA06858E}
static const IID IID_IBank =
{ 0x8BAD2B0C, 0x62CC, 0x4952, { 0x81, 0x1C, 0xC7, 0x36, 0xDA, 0x6, 0x85, 0x8E } };
BEGIN_INTERFACE_MAP(CBank, CCmdTarget)
INTERFACE_PART(CBank, IID_IBank, Dispatch)
END_INTERFACE_MAP()
// {3EC6FA59-9F9F-4619-9F62-BA5FE37176F0}
IMPLEMENT_OLECREATE_FLAGS(CBank, "Ex23a.Bank",
afxRegApartmentThreading, 0x3ec6fa59, 0x9f9f,
0x4619, 0x9f, 0x62, 0xba, 0x5f, 0xe3, 0x71,
0x76, 0xf0)
// CBank message handlers
DOUBLE CBank::Withdrawal(DOUBLE dAmount)
{
AFX_MANAGE_STATE(AfxGetAppModuleState());
if (dAmount < 0.0) {
return 0.0;
}
if (dAmount <= m_dBalance) {
m_dBalance -= dAmount;
return dAmount;
}
double dTemp = m_dBalance;
m_dBalance = 0.0;
return dTemp;
}
void CBank::Deposit(DOUBLE dAmount)
{
AFX_MANAGE_STATE(AfxGetAppModuleState());
if (dAmount < 0.0) {
return;
}
m_dBalance += dAmount;
}
DOUBLE CBank::GetBalance(void)
{
AFX_MANAGE_STATE(AfxGetAppModuleState());
return m_dBalance;
}
void CBank::SetBalance(DOUBLE newVal)
{
AFX_MANAGE_STATE(AfxGetAppModuleState());
TRACE("Sorry, Dave, I can抰 do that!\n");
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?