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

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

?? drawtool.cpp

?? 工業組態王6.5版本軟件最新版本完整源代碼.
?? CPP
字號:
// DrawTool.cpp: implementation of the CDrawTool class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "DrawCli.h"
#include "DrawTool.h"
 
#include "drawdoc.h"
#include "drawvw.h"
#include "drawobj.h"
 

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
// CDrawTool implementation

CPtrList CDrawTool::c_tools;

static CSelectTool selectTool;
static CRectTool lineTool(line);
static CRectTool rectTool(rect);
static CRectTool roundRectTool(roundRect);
static CRectTool ellipseTool(ellipse);
static CRectTool circleTool(circle);
//static CPolyTool polyTool;

CPoint CDrawTool::c_down;
UINT CDrawTool::c_nDownFlags;
CPoint CDrawTool::c_last;
DrawShape CDrawTool::c_drawShape = selection;

CDrawTool::CDrawTool(DrawShape drawShape)
{
	m_drawShape = drawShape;
	c_tools.AddTail(this);
}

CDrawTool* CDrawTool::FindTool(DrawShape drawShape)
{
	POSITION pos = c_tools.GetHeadPosition();
	while (pos != NULL)
	{
		CDrawTool* pTool = (CDrawTool*)c_tools.GetNext(pos);
		if (pTool->m_drawShape == drawShape)
			return pTool;
	}

	return NULL;
}

void CDrawTool::OnLButtonDown(CDrawView* pView, UINT nFlags, const CPoint& point)
{
	// deactivate any in-place active item on this view!
	COleClientItem* pActiveItem = pView->GetDocument()->GetInPlaceActiveItem(pView);
	if (pActiveItem != NULL)
	{
		pActiveItem->Close();
		ASSERT(pView->GetDocument()->GetInPlaceActiveItem(pView) == NULL);
	}

	pView->SetCapture();
	c_nDownFlags = nFlags;
	c_down = point;
	c_last = point;
}

void CDrawTool::OnLButtonDblClk(CDrawView* /*pView*/, UINT /*nFlags*/, const CPoint& /*point*/)
{
}

void CDrawTool::OnLButtonUp(CDrawView* /*pView*/, UINT /*nFlags*/, const CPoint& point)
{
	ReleaseCapture();

	if (point == c_down)
		c_drawShape = selection;
}

void CDrawTool::OnMouseMove(CDrawView* /*pView*/, UINT /*nFlags*/, const CPoint& point)
{
	c_last = point;
	SetCursor(AfxGetApp()->LoadStandardCursor(IDC_ARROW));
}

void CDrawTool::OnEditProperties(CDrawView* /*pView*/)
{
}

void CDrawTool::OnCancel()
{
	c_drawShape = selection;
}

////////////////////////////////////////////////////////////////////////////
// CResizeTool

enum SelectMode
{
	none,
	netSelect,
	move,
	size
};

SelectMode selectMode = none;
int nDragHandle;

CPoint lastPoint;

CSelectTool::CSelectTool()
	: CDrawTool(selection)
{
}

void CSelectTool::OnLButtonDown(CDrawView* pView, UINT nFlags, const CPoint& point)
{
	
	CPoint local = point;
	pView->ClientToDoc(local);

	CDrawObj* pObj;
	selectMode = none;

	// Check for resizing (only allowed on single selections)
	if (pView->m_selection.GetCount() == 1)
	{
		pObj = pView->m_selection.GetHead();
		nDragHandle = pObj->HitTest(local, pView, TRUE);
		if (nDragHandle != 0)
			selectMode = size;
	}

	// See if the click was on an object, select and start move if so
	if (selectMode == none)
	{
		pObj = pView->GetDocument()->ObjectAt(local);

		if (pObj != NULL)
		{
			selectMode = move;

			if (!pView->IsSelected(pObj))
				pView->Select(pObj, (nFlags & MK_SHIFT) != 0);

			// Ctrl+Click clones the selection...
#ifndef _MAC			
			if ((nFlags & MK_CONTROL) != 0)
#else
			if ((nFlags & MK_OPTION) != 0)
#endif			
				pView->CloneSelection();
		}
	}
 
	// Click on background, start a net-selection
	if (selectMode == none)
	{
		if ((nFlags & MK_SHIFT) == 0)
			pView->Select(NULL);

		selectMode = netSelect;

		CClientDC dc(pView);
		CRect rect(point.x, point.y, point.x, point.y);
		rect.NormalizeRect();
		dc.DrawFocusRect(rect);
	}

	lastPoint = local;
	CDrawTool::OnLButtonDown(pView, nFlags, point);
  
}

void CSelectTool::OnLButtonDblClk(CDrawView* pView, UINT nFlags, const CPoint& point)
{
	
	if ((nFlags & MK_SHIFT) != 0)
	{
		// Shift+DblClk deselects object...
		CPoint local = point;
		pView->ClientToDoc(local);
		CDrawObj* pObj = pView->GetDocument()->ObjectAt(local);
		if (pObj != NULL)
			pView->Deselect(pObj);
	}
	else
	{
		// "Normal" DblClk opens properties, or OLE server...
		if (pView->m_selection.GetCount() == 1)
			pView->m_selection.GetHead()->OnOpen(pView);
	}

	CDrawTool::OnLButtonDblClk(pView, nFlags, point);

}

void CSelectTool::OnEditProperties(CDrawView* pView)
{
	if (pView->m_selection.GetCount() == 1)
		pView->m_selection.GetHead()->OnEditProperties();
}

void CSelectTool::OnLButtonUp(CDrawView* pView, UINT nFlags, const CPoint& point)
{
	
	if (pView->GetCapture() == pView)
	{
		if (selectMode == netSelect)
		{
			CClientDC dc(pView);
			CRect rect(c_down.x, c_down.y, c_last.x, c_last.y);
			rect.NormalizeRect();
			dc.DrawFocusRect(rect);

			pView->SelectWithinRect(rect, TRUE);
		}
		else if (selectMode != none)
		{
			pView->GetDocument()->UpdateAllViews(pView);
		}
	}

	CDrawTool::OnLButtonUp(pView, nFlags, point);
	
}

void CSelectTool::OnMouseMove(CDrawView* pView, UINT nFlags, const CPoint& point)
{
	if (pView->GetCapture() != pView)
	{
		if (c_drawShape == selection && pView->m_selection.GetCount() == 1)
		{
			CDrawObj* pObj = pView->m_selection.GetHead();
			CPoint local = point;
			pView->ClientToDoc(local);
			int nHandle = pObj->HitTest(local, pView, TRUE);
			if (nHandle != 0)
			{
				SetCursor(pObj->GetHandleCursor(nHandle));
				return; // bypass CDrawTool
			}
		}
		if (c_drawShape == selection)
			CDrawTool::OnMouseMove(pView, nFlags, point);
		return;
	}

	if (selectMode == netSelect)
	{
		CClientDC dc(pView);
		CRect rect(c_down.x, c_down.y, c_last.x, c_last.y);
		rect.NormalizeRect();
		dc.DrawFocusRect(rect);
		rect.SetRect(c_down.x, c_down.y, point.x, point.y);
		rect.NormalizeRect();
		dc.DrawFocusRect(rect);

		CDrawTool::OnMouseMove(pView, nFlags, point);
		return;
	}

	CPoint local = point;
	pView->ClientToDoc(local);
	CPoint delta = (CPoint)(local - lastPoint);

	POSITION pos = pView->m_selection.GetHeadPosition();
	while (pos != NULL)
	{
		CDrawObj* pObj = pView->m_selection.GetNext(pos);
		CRect position = pObj->m_position;

		if (selectMode == move)
		{
			position += delta;
			pObj->MoveTo(position, pView);
		}
		else if (nDragHandle != 0)
		{
			pObj->MoveHandleTo(nDragHandle, local, pView);
		}
	}

	lastPoint = local;

	if (selectMode == size && c_drawShape == selection)
	{
		c_last = point;
		SetCursor(pView->m_selection.GetHead()->GetHandleCursor(nDragHandle));
		return; // bypass CDrawTool
	}

	c_last = point;

	if (c_drawShape == selection)
		CDrawTool::OnMouseMove(pView, nFlags, point);
}

////////////////////////////////////////////////////////////////////////////
// CRectTool (does rectangles, round-rectangles, and ellipses)

CRectTool::CRectTool(DrawShape drawShape)
	: CDrawTool(drawShape)
{
}

void CRectTool::OnLButtonDown(CDrawView* pView, UINT nFlags, const CPoint& point)
{
	
	CDrawTool::OnLButtonDown(pView, nFlags, point);

	CPoint local = point;
	pView->ClientToDoc(local);

	CDrawRect* pObj = new CDrawRect(CRect(local, CSize(0, 0)));
	switch (m_drawShape)
	{
	default:
		ASSERT(FALSE); // unsuported shape!

	case rect:
		pObj->m_nShape = CDrawRect::rectangle;
		break;

	case roundRect:
		pObj->m_nShape = CDrawRect::roundRectangle;
		break;

	case ellipse:
		pObj->m_nShape = CDrawRect::ellipse;
		break;

	case line:
		pObj->m_nShape = CDrawRect::line;
		break;
	case circle:
		pObj->m_nShape = CDrawRect::circle;
		break;
	}
	pView->GetDocument()->Add(pObj);
	pView->Select(pObj);

	selectMode = size;
	nDragHandle = 1;
	lastPoint = local;

}

void CRectTool::OnLButtonDblClk(CDrawView* pView, UINT nFlags, const CPoint& point)
{
	CDrawTool::OnLButtonDblClk(pView, nFlags, point);
}

void CRectTool::OnLButtonUp(CDrawView* pView, UINT nFlags, const CPoint& point)
{  
	if (point == c_down)
	{
		// Don't create empty objects...
		CDrawObj *pObj = pView->m_selection.GetTail();
		pView->GetDocument()->Remove(pObj);
		pObj->Remove();
		selectTool.OnLButtonDown(pView, nFlags, point); // try a select!
	}

	selectTool.OnLButtonUp(pView, nFlags, point);
}

void CRectTool::OnMouseMove(CDrawView* pView, UINT nFlags, const CPoint& point)
{
	SetCursor(AfxGetApp()->LoadStandardCursor(IDC_CROSS));
	selectTool.OnMouseMove(pView, nFlags, point);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产黄人亚洲片| 欧美亚洲高清一区| 色吧成人激情小说| 日韩视频国产视频| 亚洲色图欧洲色图婷婷| 美女网站色91| 欧美日韩精品高清| 亚洲欧美一区二区在线观看| 麻豆91精品91久久久的内涵| 99精品热视频| 久久嫩草精品久久久久| 婷婷六月综合亚洲| 欧洲av在线精品| 国产精品久久久久影院老司| 国产一区二区三区蝌蚪| 日韩一区二区三区免费看| 亚洲国产成人高清精品| 91久久线看在观草草青青| 国产精品国产三级国产aⅴ原创| 精品在线播放午夜| 欧美一区二区三区免费| 亚洲一本大道在线| 欧美视频中文字幕| 亚洲自拍偷拍综合| 色婷婷久久久久swag精品 | 亚洲三级在线免费观看| 国产精品综合一区二区三区| 精品久久一二三区| 蜜臀av性久久久久蜜臀aⅴ流畅| 欧美日韩精品是欧美日韩精品| 亚洲一区二区黄色| 欧美午夜精品一区二区三区| 亚洲欧洲制服丝袜| 色香色香欲天天天影视综合网 | 精品入口麻豆88视频| 免费成人你懂的| 精品美女在线观看| 国产精品伊人色| 国产欧美一区二区精品性色| 国产一区二区三区日韩| 日本一区二区三区在线观看| 国产精品66部| 国产精品卡一卡二| aaa亚洲精品| 一区二区三区视频在线看| 欧美午夜电影在线播放| 首页国产欧美久久| 日韩欧美一区二区免费| 国产精品一区二区在线观看不卡| 中文字幕 久热精品 视频在线 | 91精品国产乱| 久久99国产精品免费网站| 久久青草欧美一区二区三区| 成人开心网精品视频| 亚洲视频一区二区在线观看| 欧美中文字幕久久| 精品无人区卡一卡二卡三乱码免费卡| 欧美精品一区二区三区很污很色的 | 亚洲一区在线电影| 欧美一二三区精品| 成人午夜看片网址| 性久久久久久久| 久久久久久久久99精品| 色综合久久久久综合体| 奇米色777欧美一区二区| 中文字幕欧美国产| 欧美精品国产精品| k8久久久一区二区三区| 婷婷国产v国产偷v亚洲高清| 久久精品亚洲一区二区三区浴池 | 亚洲女同ⅹxx女同tv| 日韩午夜激情av| 色综合视频在线观看| 免费成人在线观看| 亚洲精品国产无套在线观| 欧美zozo另类异族| 欧美午夜片在线观看| 国产精品一二三四| 日韩va欧美va亚洲va久久| 国产精品福利一区| 欧美精品一区二区不卡| 日本韩国视频一区二区| 国产精品1区2区3区在线观看| 亚洲福利电影网| 国产精品日产欧美久久久久| 欧美va在线播放| 欧美电影影音先锋| 在线观看91视频| 成人性生交大片免费看中文| 久久国产精品无码网站| 午夜精品123| 亚洲一线二线三线久久久| 成人欧美一区二区三区视频网页| 久久久久国产精品厨房| 日韩欧美电影一区| 在线不卡欧美精品一区二区三区| 色综合中文字幕| 成人av动漫网站| 国产成人亚洲精品青草天美| 看片网站欧美日韩| 日本欧美一区二区在线观看| 午夜激情一区二区| 亚洲一区二区3| 亚洲黄色在线视频| 亚洲精品免费看| 亚洲精品国产第一综合99久久 | 欧美日韩高清影院| 欧美亚洲图片小说| 欧美专区日韩专区| 欧美三级中文字幕在线观看| 日本韩国欧美在线| 欧美亚洲综合色| 欧美三级韩国三级日本一级| 色猫猫国产区一区二在线视频| 一本久久精品一区二区| 91丝袜美女网| 一本高清dvd不卡在线观看| 色先锋资源久久综合| 欧美亚州韩日在线看免费版国语版| 91九色最新地址| 欧美日韩成人在线| 777xxx欧美| 欧美精品一区二| 国产精品丝袜一区| 亚洲男人都懂的| 视频一区免费在线观看| 免费成人av资源网| 国产福利一区在线观看| 99视频在线观看一区三区| 91成人看片片| 51午夜精品国产| 久久一区二区三区国产精品| 国产精品美女久久久久aⅴ国产馆| 亚洲欧洲日韩在线| 亚洲成av人片在www色猫咪| 日韩av午夜在线观看| 国产91高潮流白浆在线麻豆| 97精品国产露脸对白| 91精品黄色片免费大全| 久久影院视频免费| 国产精品二区一区二区aⅴ污介绍| 樱花草国产18久久久久| 美腿丝袜亚洲综合| 99久久精品国产一区| 欧美老女人第四色| 国产人妖乱国产精品人妖| 玉米视频成人免费看| 狠狠色伊人亚洲综合成人| 成人激情文学综合网| 欧美电影一区二区三区| 中文字幕国产精品一区二区| 丝袜诱惑制服诱惑色一区在线观看| 国产在线视频一区二区| 在线免费观看一区| 久久精品夜色噜噜亚洲aⅴ| 亚洲午夜三级在线| 高清在线观看日韩| 欧美一级生活片| 亚洲人亚洲人成电影网站色| 老司机午夜精品| 欧美制服丝袜第一页| 国产性天天综合网| 日韩激情av在线| 色婷婷国产精品| 国产欧美日韩另类视频免费观看| 天天操天天综合网| 一本一道综合狠狠老| 欧美激情一区二区| 老司机午夜精品| 欧美精品久久99久久在免费线| 中文字幕在线观看不卡视频| 久久99国产精品成人| 91精品欧美福利在线观看| 亚洲日本青草视频在线怡红院| 国产一级精品在线| 精品少妇一区二区三区视频免付费 | 日韩一区和二区| 亚洲综合在线第一页| av高清久久久| 日本一区二区电影| 精品一区二区日韩| 日韩欧美一二区| 亚洲bt欧美bt精品| 91黄视频在线| 亚洲精品成人悠悠色影视| 成人一级视频在线观看| www激情久久| 久久99精品久久久久久国产越南| 制服.丝袜.亚洲.中文.综合| 亚洲一区二区黄色| 欧美在线视频你懂得| 一区二区三区.www| 一本到高清视频免费精品| 中文字幕一区av| av资源网一区| 一区二区在线观看视频| 91麻豆免费视频| 亚洲电影中文字幕在线观看| 欧美丝袜丝nylons| 免费观看91视频大全|