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

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

?? drawtool.cpp

?? 工業組態軟件最新版本完整源代碼.3wdot163dotcom@163.com
?? 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一区二区三区免费野_久草精品视频
国产精品青草久久| 久久综合国产精品| 99久久精品情趣| 免费观看一级特黄欧美大片| 亚洲黄色av一区| 亚洲综合男人的天堂| 亚洲一区二区三区四区在线| 日韩理论片网站| 亚洲日本一区二区| 亚洲高清免费观看| 蜜臀久久99精品久久久久宅男| 99re视频这里只有精品| 成人精品国产一区二区4080| 国内精品国产成人| 国产成人av资源| www.激情成人| 欧美久久久影院| 欧美mv和日韩mv的网站| 欧美经典一区二区| 亚洲综合图片区| 老司机免费视频一区二区| 国产一区高清在线| 成人深夜福利app| 欧美视频在线播放| 日韩精品一区二区三区中文不卡| 成人三级伦理片| 日本韩国欧美三级| 欧美一区二区三区电影| 久久久精品综合| 亚洲一区二区成人在线观看| 亚洲国产成人av网| 国产一区欧美二区| 在线观看一区日韩| 久久夜色精品国产欧美乱极品| 欧美日韩免费观看一区三区| 精品美女在线播放| 亚洲精品国久久99热| 精彩视频一区二区三区| 国产成人精品免费网站| 欧美日韩免费一区二区三区| 国产日韩av一区二区| 天天av天天翘天天综合网色鬼国产| 欧美大胆人体bbbb| 国产午夜精品一区二区三区视频 | 午夜久久久久久| 国产精品一级片在线观看| 欧美无砖专区一中文字| 国产亚洲综合性久久久影院| 婷婷综合久久一区二区三区| 99re热这里只有精品免费视频| 捆绑紧缚一区二区三区视频| 日本韩国欧美一区| 国产精品久久久久一区| 久久99久久精品欧美| 欧美日韩中文精品| 亚洲色图一区二区三区| 精品一区二区三区在线播放视频 | 蜜桃av一区二区在线观看| caoporn国产精品| 久久久久久免费| 久久99热狠狠色一区二区| 欧美性一级生活| 一区二区三区四区在线播放| 不卡免费追剧大全电视剧网站| 国产福利一区在线观看| 精品久久一区二区| 美女免费视频一区| 欧美一区二区免费观在线| 亚洲v精品v日韩v欧美v专区| 在线视频你懂得一区| 国产精品毛片无遮挡高清| 国产在线播精品第三| www亚洲一区| 国产一区二区不卡| 国产日韩精品一区二区浪潮av| 亚洲视频在线一区观看| 国产成人精品亚洲日本在线桃色 | 午夜精品福利一区二区蜜股av| 亚洲福利一区二区三区| 在线免费观看日本欧美| 亚洲综合一区二区精品导航| 在线观看日韩一区| 亚洲高清免费在线| 日韩免费一区二区三区在线播放| 精品日韩成人av| 国产高清久久久久| 国产精品免费av| 成人夜色视频网站在线观看| 国产精品久久久久久户外露出 | 欧美日韩国产系列| 亚洲成人激情综合网| 555夜色666亚洲国产免| 国产一区二区三区最好精华液| 成人免费视频播放| 中文字幕制服丝袜一区二区三区 | 一本色道久久综合精品竹菊| 一区二区三区中文字幕电影 | 一本大道久久a久久精品综合| 欧美日韩成人激情| 久久er精品视频| 亚洲欧美影音先锋| 欧美日韩一区中文字幕| 国产一二精品视频| 亚洲最大的成人av| 久久综合av免费| 91国偷自产一区二区三区成为亚洲经典 | 亚洲尤物视频在线| 国产丝袜在线精品| 懂色av一区二区夜夜嗨| 亚洲自拍都市欧美小说| 欧美一区二区三区在线电影| 丰满白嫩尤物一区二区| 亚洲在线免费播放| 日本一区二区成人| 欧美日韩国产三级| 粉嫩一区二区三区性色av| 亚洲国产精品久久人人爱蜜臀| 国产综合一区二区| 日韩伦理免费电影| 欧美不卡一区二区三区四区| 暴力调教一区二区三区| 日本va欧美va瓶| 亚洲精品久久7777| 国产精品久久久久久久浪潮网站| 国产成人免费视频网站| 午夜欧美电影在线观看| 中文字幕av资源一区| 制服丝袜在线91| 在线观看免费亚洲| 一本色道亚洲精品aⅴ| 国产成a人亚洲| 精品在线一区二区三区| 亚洲bt欧美bt精品| 亚洲乱码国产乱码精品精小说| 91丝袜高跟美女视频| 国产一区福利在线| 久久国产精品72免费观看| 亚洲成人动漫在线观看| 亚洲欧美一区二区久久| 国产精品视频一二三| 久久品道一品道久久精品| 日韩女优av电影| 日韩欧美中文一区| 欧美午夜在线一二页| 92国产精品观看| thepron国产精品| 成人动漫一区二区在线| 成人爱爱电影网址| 不卡一区在线观看| 99久久er热在这里只有精品66| 久久色在线观看| 精品国产免费一区二区三区香蕉| 精品在线免费视频| 久久99精品久久久久| 国产一区在线观看麻豆| 日韩 欧美一区二区三区| 亚洲一区二区欧美日韩| 亚洲欧美精品午睡沙发| 亚洲蜜臀av乱码久久精品| 1000部国产精品成人观看| 中文字幕一区二区三区精华液| 91麻豆国产福利在线观看| 91香蕉视频污在线| 在线视频一区二区免费| 欧美性大战久久久久久久蜜臀| 亚洲gay无套男同| 亚洲成av人片在www色猫咪| 亚洲欧美经典视频| 日韩二区三区四区| 久久99久久99小草精品免视看| 日韩免费看的电影| 国产丝袜在线精品| 亚洲免费观看高清完整版在线 | 久久综合久久鬼色| 国产精品卡一卡二卡三| 亚洲一区二区三区四区在线观看 | 欧美性猛交xxxx乱大交退制版| 激情深爱一区二区| 国产成人午夜精品影院观看视频| 亚洲一区二区四区蜜桃| 亚洲综合在线五月| 精品亚洲国产成人av制服丝袜| 一区二区三区欧美激情| 青青草国产成人99久久| 高清不卡一二三区| 欧美日韩一级二级| 精品国产91乱码一区二区三区 | 另类中文字幕网| jizzjizzjizz欧美| 在线91免费看| 中文字幕在线免费不卡| 热久久免费视频| 一本一道波多野结衣一区二区| 成人免费看视频| 3d成人h动漫网站入口| 国产精品天天看| 性欧美大战久久久久久久久| 国产成人av一区二区三区在线观看| 另类的小说在线视频另类成人小视频在线| 亚洲三级电影全部在线观看高清|