【VC开源代码栏目提醒】:网学会员为需要VC开源代码的朋友们搜集整理了DrawObject.cpp相关资料,希望对各位网友有所帮助!
// DrawObject.cpp : implementation file
//
#include "stdafx.h"
#include "DrawObjectComp.h"
#include "interface.h"
#include "DrawObject.h"
// CDrawObject
// {6CCB2729-A67A-4370-A2ED-B09AC2206ED2}
extern "C" const IID IID_IDrawLine = {0x6ccb2729, 0xa67a, 0x4370,
{0xa2, 0xed, 0xb0, 0x9a, 0xc2, 0x20, 0x6e, 0xd2}};
// {FF91178F-EEF0-4bee-9001-F0A166D43798}
extern "C" const IID IID_IDrawCircle = {0xff91178f, 0xeef0, 0x4bee,
{0x90, 0x1, 0xf0, 0xa1, 0x66, 0xd4, 0x37, 0x98}};
// {3B763293-A437-4474-814D-0E384C42E3EA}
extern "C" const IID IID_IDrawVisual = {0x3b763293, 0xa437, 0x4474,
{0x81, 0x4d, 0xe, 0x38, 0x4c, 0x42, 0xe3, 0xea}};
IMPLEMENT_DYNCREATE(CDrawObject, CCmdTarget)
CDrawObject::CDrawObject()
{
m_clrR = m_clrG = m_clrB = 0 ;
m_sx = m_sy = m_ex = m_ey = 0 ;
m_cx = m_cy = m_nRadius = 0 ;
m_pDC = NULL ;
m_pWnd = NULL ;
AfxOleLockApp() ;
}
CDrawObject::~CDrawObject()
{
if(m_pDC && m_pWnd)
{
m_pDC = NULL ;
m_pWnd = NULL ;
}
AfxOleUnlockApp() ;
}
void CDrawObject::OnFinalRelease(void)
{
// TODO: Add your specialized code here and/or call the base class
delete this ;
// CCmdTarget::OnFinalRelease();
}
BEGIN_MESSAGE_MAP(CDrawObject, CCmdTarget)
END_MESSAGE_MAP()
BEGIN_INTERFACE_MAP(CDrawObject, CCmdTarget)
INTERFACE_PART(CDrawObject,IID_IDrawLine,DrawLine)
INTERFACE_PART(CDrawObject,IID_IDrawCircle,DrawCircle)
INTERFACE_PART(CDrawObject,IID_IDrawVisual,DrawVisual)
END_INTERFACE_MAP()
// {90752242-A311-460a-B6C5-EEF944BD51FF}
IMPLEMENT_OLECREATE(CDrawObject, "DrawObject",
0x90752242, 0xa311, 0x460a, 0xb6, 0xc5, 0xee, 0xf9, 0x44, 0xbd, 0x51, 0xff);
// CDrawObject message handlers
//define CDrawObject::XDrawLine -- superclass IUnknown 's method
STDMETHODIMP_(ULONG) CDrawObject::XDrawLine::AddRef()
{
METHOD_PROLOGUE(CDrawObject, DrawLine)
return pThis->ExternalAddRef() ;
}
STDMETHODIMP_(ULONG)CDrawObject::XDrawLine::Release()
{
METHOD_PROLOGUE(CDrawObject, DrawLine)
return pThis->ExternalRelease() ;
}
STDMETHODIMP CDrawObject::XDrawLine::QueryInterface(REFIID iid,
LPVOID* ppvObj)
{
METHOD_PROLOGUE(CDrawObject, DrawLine)
return pThis->ExternalQueryInterface(&iid,ppvObj) ;
}
//define CDrawObject::XDrawLine -- method
STDMETHODIMP_(void)CDrawObject::XDrawLine::SetStart(int sx,int sy)
{
METHOD_PROLOGUE(CDrawObject, DrawLine)
pThis->m_sx = sx ;
pThis->m_sy = sy ;
}
STDMETHODIMP_(void)CDrawObject::XDrawLine::SetEnd(int ex,int ey)
{
METHOD_PROLOGUE(CDrawObject, DrawLine)
pThis->m_ex = ex ;
pThis->m_ey = ey ;
}
STDMETHODIMP_(void)CDrawObject::XDrawLine::GetStart(int& sx, int& sy)
{
METHOD_PROLOGUE(CDrawObject, DrawLine)
sx = pThis->m_sx ;
sy = pThis->m_sy ;
}
STDMETHODIMP_(void)CDrawObject::XDrawLine::GetEnd(int& ex, int& ey)
{
METHOD_PROLOGUE(CDrawObject, DrawLine)
ex = pThis->m_ex ;
ey = pThis->m_ey ;
}
STDMETHODIMP_(void)CDrawObject::XDrawLine::Draw()
{
METHOD_PROLOGUE(CDrawObject, DrawLine)
if((pThis->m_pDC != NULL) && (pThis->m_pWnd != NULL))
{
pThis->m_pDC->SelectStockObject(NULL_BRUSH) ;
pThis->m_pDC->MoveTo(pThis->m_sx, pThis->m_sy) ;
pThis->m_pDC->LineTo(pThis->m_ex, pThis->m_ey) ;
}
}
//define XDrawCircle -- superclass IUnknown's method
STDMETHODIMP_(ULONG) CDrawObject::XDrawCircle::AddRef()
{
METHOD_PROLOGUE(CDrawObject, DrawCircle)
return pThis->ExternalAddRef() ;
}
STDMETHODIMP_(ULONG)CDrawObject::XDrawCircle::Release()
{
METHOD_PROLOGUE(CDrawObject, DrawCircle)
return pThis->ExternalRelease() ;
}
STDMETHODIMP CDrawObject::XDrawCircle::QueryInterface(REFIID iid,
LPVOID* ppvObj)