亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? drawobj.cpp

?? 連接oracle
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
// drawobj.cpp - implementation for drawing objects
//
// This is a part of the Microsoft Foundation Classes C++ library.
// Copyright (C) 1992-1997 Microsoft Corporation
// All rights reserved.
//
// This source code is only intended as a supplement to the
// Microsoft Foundation Classes Reference and related
// electronic documentation provided with the library.
// See these sources for detailed information regarding the
// Microsoft Foundation Classes product.


#include "stdafx.h"
#include "drawcli.h"

#include "drawdoc.h"
#include "drawvw.h"
#include "drawobj.h"

#include "cntritem.h"
#include "rectdlg.h"
#include "math.h"

IMPLEMENT_SERIAL(CDrawObj, CObject, 0)

CDrawObj::CDrawObj()
{
}

CDrawObj::~CDrawObj()
{
}

CDrawObj::CDrawObj(const CRect& position)
{
	m_position = position;
	m_pDocument = NULL;

	m_bPen = TRUE;
	m_logpen.lopnStyle = PS_INSIDEFRAME;
	m_logpen.lopnWidth.x = 1;
	m_logpen.lopnWidth.y = 1;
	m_logpen.lopnColor = RGB(0, 0, 0);

	m_bBrush = TRUE;
	m_logbrush.lbStyle = BS_SOLID;
	m_logbrush.lbColor = RGB(192, 192, 192);
	m_logbrush.lbHatch = HS_HORIZONTAL;

	m_sWellNO = "";
	m_sXCH = "";
	m_PosIndex = -1;
}
//CDrawObj::CDrawObj( Shape pShape, const CRect &position)
//{
//}

void CDrawObj::Serialize(CArchive& ar)
{
	CObject::Serialize(ar);
	if (ar.IsStoring())
	{
		ar << m_position;
		ar << (WORD)m_bPen;
		ar.Write(&m_logpen, sizeof(LOGPEN));
		ar << (WORD)m_bBrush;
		ar.Write(&m_logbrush, sizeof(LOGBRUSH));
	}
	else
	{
		// get the document back pointer from the archive
		m_pDocument = (CDrawDoc*)ar.m_pDocument;
		ASSERT_VALID(m_pDocument);
		ASSERT_KINDOF(CDrawDoc, m_pDocument);

		WORD wTemp;
		ar >> m_position;
		ar >> wTemp; m_bPen = (BOOL)wTemp;
		ar.Read(&m_logpen,sizeof(LOGPEN));
		ar >> wTemp; m_bBrush = (BOOL)wTemp;
		ar.Read(&m_logbrush, sizeof(LOGBRUSH));
	}
}

void CDrawObj::Remove()
{
	delete this;
}

void CDrawObj::Draw(CDC*)
{
}

void CDrawObj::DrawTracker(CDC* pDC, TrackerState state)
{
	ASSERT_VALID(this);

	switch (state)
	{
	case normal:
		break;

	case selected:
	case active:
		{
			int nHandleCount = GetHandleCount();
			for (int nHandle = 1; nHandle <= nHandleCount; nHandle += 1)
			{
				CPoint handle = GetHandle(nHandle);
				pDC->PatBlt(handle.x - 3, handle.y - 3, 7, 7, DSTINVERT);
			}
		}
		break;
	}
}

// position is in logical
void CDrawObj::MoveTo(const CRect& position, CDrawView* pView)
{
	ASSERT_VALID(this);

	if (position == m_position)
		return;

	if (pView == NULL)
	{
		Invalidate();
		m_position = position;
		Invalidate();
	}
	else
	{
		pView->InvalObj(this);
		m_position = position;
		pView->InvalObj(this);
	}
	m_pDocument->SetModifiedFlag();
}

// Note: if bSelected, hit-codes start at one for the top-left
// and increment clockwise, 0 means no hit.
// If !bSelected, 0 = no hit, 1 = hit (anywhere)

// point is in logical coordinates
int CDrawObj::HitTest(CPoint point, CDrawView* pView, BOOL bSelected)
{
	ASSERT_VALID(this);
	ASSERT(pView != NULL);

	if (bSelected)
	{
		int nHandleCount = GetHandleCount();
		for (int nHandle = 1; nHandle <= nHandleCount; nHandle += 1)
		{
			// GetHandleRect returns in logical coords
			CRect rc = GetHandleRect(nHandle,pView);
			if (point.x >= rc.left && point.x < rc.right &&
				point.y <= rc.top && point.y > rc.bottom)
				return nHandle;
		}
	}
	else
	{
		if (point.x >= m_position.left && point.x < m_position.right &&
			point.y <= m_position.top && point.y > m_position.bottom)
			return 1;
	}
	return 0;
}

// rect must be in logical coordinates
BOOL CDrawObj::Intersects(const CRect& rect)
{
	ASSERT_VALID(this);

	CRect fixed = m_position;
	fixed.NormalizeRect();
	CRect rectT = rect;
	rectT.NormalizeRect();
	return !(rectT & fixed).IsRectEmpty();
}

int CDrawObj::GetHandleCount()
{
	ASSERT_VALID(this);
	return 8;
}

// returns logical coords of center of handle
CPoint CDrawObj::GetHandle(int nHandle)
{
	ASSERT_VALID(this);
	int x, y, xCenter, yCenter;

	// this gets the center regardless of left/right and top/bottom ordering
	xCenter = m_position.left + m_position.Width() / 2;
	yCenter = m_position.top + m_position.Height() / 2;

	switch (nHandle)
	{
	default:
		ASSERT(FALSE);

	case 1:
		x = m_position.left;
		y = m_position.top;
		break;

	case 2:
		x = xCenter;
		y = m_position.top;
		break;

	case 3:
		x = m_position.right;
		y = m_position.top;
		break;

	case 4:
		x = m_position.right;
		y = yCenter;
		break;

	case 5:
		x = m_position.right;
		y = m_position.bottom;
		break;

	case 6:
		x = xCenter;
		y = m_position.bottom;
		break;

	case 7:
		x = m_position.left;
		y = m_position.bottom;
		break;

	case 8:
		x = m_position.left;
		y = yCenter;
		break;
	}

	return CPoint(x, y);
}

// return rectange of handle in logical coords
CRect CDrawObj::GetHandleRect(int nHandleID, CDrawView* pView)
{
	ASSERT_VALID(this);
	ASSERT(pView != NULL);

	CRect rect;
	// get the center of the handle in logical coords
	CPoint point = GetHandle(nHandleID);
	// convert to client/device coords
	pView->DocToClient(point);
	// return CRect of handle in device coords
	rect.SetRect(point.x-3, point.y-3, point.x+3, point.y+3);
	pView->ClientToDoc(rect);

	return rect;
}

HCURSOR CDrawObj::GetHandleCursor(int nHandle)
{
	ASSERT_VALID(this);

	LPCTSTR id;
	switch (nHandle)
	{
	default:
		ASSERT(FALSE);

	case 1:
	case 5:
		id = IDC_SIZENWSE;
		break;

	case 2:
	case 6:
		id = IDC_SIZENS;
		break;

	case 3:
	case 7:
		id = IDC_SIZENESW;
		break;

	case 4:
	case 8:
		id = IDC_SIZEWE;
		break;
	}

	return AfxGetApp()->LoadStandardCursor(id);
}

// point must be in logical
void CDrawObj::MoveHandleTo(int nHandle, CPoint point, CDrawView* pView)
{
	ASSERT_VALID(this);
	CRect position = m_position;
	switch (nHandle)
	{
	default:
		ASSERT(FALSE);

	case 1:
		position.left = point.x;
		position.top = point.y;
		break;

	case 2:
		position.top = point.y;
		break;

	case 3:
		position.right = point.x;
		position.top = point.y;
		break;

	case 4:
		position.right = point.x;
		break;

	case 5:
		position.right = point.x;
		position.bottom = point.y;
		break;

	case 6:
		position.bottom = point.y;
		break;

	case 7:
		position.left = point.x;
		position.bottom = point.y;
		break;

	case 8:
		position.left = point.x;
		break;
	}

	MoveTo(position, pView);
}

void CDrawObj::Invalidate()
{
	ASSERT_VALID(this);
	m_pDocument->UpdateAllViews(NULL, HINT_UPDATE_DRAWOBJ, this);
}

CDrawObj* CDrawObj::Clone(CDrawDoc* pDoc)
{
	ASSERT_VALID(this);

	CDrawObj* pClone = new CDrawObj(m_position);
	pClone->m_bPen = m_bPen;
	pClone->m_logpen = m_logpen;
	pClone->m_bBrush = m_bBrush;
	pClone->m_logbrush = m_logbrush;
	ASSERT_VALID(pClone);

	if (pDoc != NULL)
		pDoc->Add(pClone);

	return pClone;
}

void CDrawObj::OnEditProperties()
{
	ASSERT_VALID(this);

	CPropertySheet sheet( _T("") );
	CRectDlg dlg;
	dlg.m_bNoFill = !m_bBrush;
	dlg.m_penSize = m_bPen ? m_logpen.lopnWidth.x : 0;
	sheet.AddPage( &dlg );

	if (sheet.DoModal() != IDOK)
		return;

	m_bBrush = !dlg.m_bNoFill;
	m_bPen = dlg.m_penSize > 0;
	if (m_bPen)
	{
		m_logpen.lopnWidth.x = dlg.m_penSize;
		m_logpen.lopnWidth.y = dlg.m_penSize;
	}

	Invalidate();
	m_pDocument->SetModifiedFlag();
}

void CDrawObj::OnOpen(CDrawView* /*pView*/ )
{
	OnEditProperties();
}

void CDrawObj::SetLineColor(COLORREF color)
{
	ASSERT_VALID(this);

	m_logpen.lopnColor = color;
	Invalidate();
	m_pDocument->SetModifiedFlag();
}

void CDrawObj::SetFillColor(COLORREF color)
{
	ASSERT_VALID(this);

	m_logbrush.lbColor = color;
	Invalidate();
	m_pDocument->SetModifiedFlag();
}

COLORREF CDrawObj::GetFillColor()
{
	return m_logbrush.lbColor;
}

#ifdef _DEBUG
void CDrawObj::AssertValid()
{
	ASSERT(m_position.left <= m_position.right);
	ASSERT(m_position.bottom <= m_position.top);
}
#endif

////////////////////////////////////////////////////////////////////////////
// CDrawRect

IMPLEMENT_SERIAL(CDrawRect, CDrawObj, 0)

CDrawRect::CDrawRect()
{
}
CDrawRect::~CDrawRect()
{
	if (m_ArrText.GetSize()>0)
		m_ArrText.RemoveAll();
}

CDrawRect::CDrawRect(const CRect& position)
	: CDrawObj(position)
{
	ASSERT_VALID(this);

	m_nShape = rectangle;
	m_roundness.x = 16;
	m_roundness.y = 16;
}
CDrawRect::CDrawRect(DrawShape _Shape,const CRect& position,CString pWellNO,char pSubList)
	: CDrawObj(position)
{
	ASSERT_VALID(this);

	//m_nShape = _Shape;
	switch (_Shape)
	{
	case ::rect:
		m_nShape = CDrawRect::rectangle;
		break;
	case ::ellipse:
		m_nShape = CDrawRect::ellipse;
		break;
	case ::roundRect:
		m_nShape = CDrawRect::roundRectangle;
		break;
	case ::line:
		m_nShape = CDrawRect::line;
		break;
	case ::text:			//hjq 新加文檔 2006-11
		m_nShape = CDrawRect::text;
		break;
	case ::vtext:
		m_nShape = CDrawRect::vtext;
		break;
	case ::recttext:
		m_nShape = CDrawRect::recttext;
		break;
	case ::fault_line:
		m_nShape = CDrawRect::fault_line;
		break;
	default:
		ASSERT(FALSE); // unsuported shape!
	}
	m_DShape = _Shape ;
	m_sWellNO = pWellNO;
	m_cSubList = pSubList;
	m_roundness.x = 16;
	m_roundness.y = 16;
	m_fontsize = 13;
	m_bLinkPic = TRUE;
}

void CDrawRect::Serialize(CArchive& ar)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
韩国理伦片一区二区三区在线播放| 九九**精品视频免费播放| 国产乱子轮精品视频| ...av二区三区久久精品| 91麻豆精品国产自产在线 | 国内成人精品2018免费看| 亚洲图片欧美激情| 精品久久久久久综合日本欧美| 色网综合在线观看| 韩国三级中文字幕hd久久精品| 亚洲综合图片区| 国产女主播视频一区二区| 在线成人午夜影院| 色屁屁一区二区| 国产一区高清在线| 日韩精品电影在线| 亚洲国产综合在线| 中文字幕一区二区三区蜜月| 2023国产一二三区日本精品2022| 欧美日韩国产中文| 欧美性猛交xxxxxxxx| 91在线观看污| 国产mv日韩mv欧美| 国产馆精品极品| 国产精品2024| 国产一区二区三区不卡在线观看| 裸体在线国模精品偷拍| 亚洲一二三专区| 亚洲综合999| 一区二区三区四区蜜桃| 亚洲免费观看高清完整版在线观看熊 | 亚洲欧美日韩一区二区三区在线观看| 久久美女艺术照精彩视频福利播放 | 波多野结衣中文字幕一区二区三区| 奇米四色…亚洲| 日本欧美一区二区三区| 丝袜诱惑亚洲看片| 日韩国产欧美在线播放| 日日夜夜免费精品| 日韩精品电影一区亚洲| 日韩av午夜在线观看| 日本欧美肥老太交大片| 久久精品国产第一区二区三区| 美女任你摸久久| 国产精品一区二区久久不卡| 丰满放荡岳乱妇91ww| www.在线欧美| 日本高清无吗v一区| 欧美日韩国产一级二级| 欧美一区二区久久| 欧美精品一区二区三| 中文乱码免费一区二区| 一区在线观看免费| 亚洲五月六月丁香激情| 免费观看一级特黄欧美大片| 国产一区 二区| 99re6这里只有精品视频在线观看| 色综合天天综合在线视频| 欧美日韩中字一区| 日韩精品一区在线观看| 国产女人18水真多18精品一级做 | 亚洲专区一二三| 免费观看日韩电影| 国产成人午夜99999| 色香色香欲天天天影视综合网| 欧美日韩精品三区| 精品精品欲导航| ...xxx性欧美| 奇米色777欧美一区二区| 日韩伦理av电影| 首页欧美精品中文字幕| 国产精品18久久久久久久久| 一本在线高清不卡dvd| 91.com视频| 欧美体内she精视频| 日韩欧美专区在线| 久久99久久99精品免视看婷婷 | 久久中文字幕电影| 亚洲欧洲日韩综合一区二区| 午夜视频久久久久久| 国产宾馆实践打屁股91| 欧美日韩三级一区| 国产欧美在线观看一区| 香蕉成人啪国产精品视频综合网| 国产精品自拍一区| 欧美精选在线播放| 国产精品久久久久久亚洲伦| 日本91福利区| 92国产精品观看| 久久影院电视剧免费观看| 亚洲va天堂va国产va久| 成人综合婷婷国产精品久久蜜臀| 老司机精品视频线观看86| 91热门视频在线观看| 精品少妇一区二区三区| 亚洲图片自拍偷拍| 成人午夜激情片| 欧美一区二区三区四区久久| 亚洲日本va午夜在线影院| 狠狠色丁香久久婷婷综合丁香| 色狠狠综合天天综合综合| 久久免费午夜影院| 视频在线观看91| 91视频免费看| 在线免费观看日本一区| 欧美激情一区二区三区在线| 另类人妖一区二区av| 欧美日韩二区三区| 亚洲精品成人精品456| 高清国产一区二区| 精品久久久久香蕉网| 日韩精品1区2区3区| 欧美影院一区二区| 亚洲欧美成aⅴ人在线观看| 国产精品77777| 337p粉嫩大胆色噜噜噜噜亚洲 | 久久亚洲一区二区三区四区| 三级不卡在线观看| 欧美日本一区二区三区四区| 亚洲欧美视频在线观看| 99久久免费精品| 国产精品久久久久久久蜜臀| 成人天堂资源www在线| 国产视频911| 国内成人自拍视频| 欧美刺激午夜性久久久久久久| 人人精品人人爱| 欧美另类高清zo欧美| 日韩一级免费观看| 久久er99精品| 欧美成人精品二区三区99精品| 日本成人在线网站| 91精品国产综合久久久久| 日韩一区欧美二区| 日韩欧美一级二级三级久久久| 免费观看91视频大全| 欧美大肚乱孕交hd孕妇| 国内成+人亚洲+欧美+综合在线 | 亚洲大片免费看| 欧美影院一区二区三区| 精品处破学生在线二十三| 国内久久精品视频| 日本一区免费视频| 99精品视频在线免费观看| 亚洲欧美成aⅴ人在线观看| 色悠悠久久综合| 亚洲va欧美va人人爽| 欧美一级免费观看| 狠狠色丁香九九婷婷综合五月| 国产日韩欧美高清在线| 99精品视频一区| 亚洲国产成人高清精品| 日韩三级视频中文字幕| 国产精品一区二区在线观看不卡| 91福利国产成人精品照片| 亚洲午夜久久久久中文字幕久| 欧美精品久久天天躁| 国产一区中文字幕| 中文字幕成人av| 欧美视频完全免费看| 麻豆精品在线视频| 国产欧美精品国产国产专区| 91激情在线视频| 久久精品99国产精品| 中文字幕亚洲区| 欧美电影一区二区三区| 国产乱子伦视频一区二区三区| 在线观看一区日韩| 蜜臀久久99精品久久久画质超高清| 精品国产网站在线观看| 99在线精品观看| 偷窥国产亚洲免费视频| 久久久久亚洲蜜桃| 91国产免费看| 韩国精品一区二区| 亚洲影视在线播放| 日韩免费电影网站| 色综合色综合色综合色综合色综合 | 麻豆精品久久精品色综合| 国产精品国产三级国产a| 欧美日韩精品欧美日韩精品| 国产麻豆视频一区| 亚洲线精品一区二区三区| 久久久久成人黄色影片| 欧美中文字幕不卡| 国产jizzjizz一区二区| 日日摸夜夜添夜夜添精品视频| 国产精品伦理在线| 精品欧美久久久| 欧美日韩一区精品| 成人黄色av电影| 激情图片小说一区| 亚洲第一主播视频| 国产精品免费丝袜| 精品播放一区二区| 欧美日本在线播放| 色婷婷综合五月| 国产69精品一区二区亚洲孕妇| 日本欧美一区二区| 香蕉影视欧美成人|