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

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

?? drawtool.cpp

?? windows2000下PCI板卡虛擬驅動編程源程序例子
?? 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国产精品成人| 日韩欧美国产综合| 中文字幕av资源一区| 伊人色综合久久天天人手人婷| 视频一区二区三区中文字幕| 国产伦精品一区二区三区免费迷| 91老师国产黑色丝袜在线| 欧美色精品天天在线观看视频| 亚洲精品在线免费观看视频| 亚洲精品视频在线观看网站| 亚洲精品成人悠悠色影视| 奇米色一区二区三区四区| 国产精品自产自拍| 制服丝袜激情欧洲亚洲| 国产精品不卡一区| 国精品**一区二区三区在线蜜桃| 国产麻豆视频精品| heyzo一本久久综合| 亚洲精品在线观看网站| 亚洲成人动漫一区| 成人深夜在线观看| 日韩欧美一区在线| 精品国产91九色蝌蚪| 亚洲国产成人高清精品| av午夜精品一区二区三区| 精品精品欲导航| 午夜私人影院久久久久| 97精品视频在线观看自产线路二| 久久综合精品国产一区二区三区 | 国产成人精品www牛牛影视| 欧美色国产精品| 亚洲色欲色欲www| 成人18精品视频| 日本一区二区综合亚洲| 国产精品自拍毛片| 欧美成人一区二区三区片免费| 日韩av一区二区三区四区| 色综合久久99| 自拍偷拍国产精品| 成人亚洲一区二区一| 久久久噜噜噜久噜久久综合| 麻豆精品视频在线观看| 欧美一区二区三区四区久久| 亚洲一区二区三区四区五区黄| 色偷偷久久人人79超碰人人澡| 精品黑人一区二区三区久久| 美女网站视频久久| 欧美日韩日日摸| 丝袜美腿亚洲色图| 欧美一区二区三区播放老司机| 日韩高清电影一区| 欧美日本一区二区| 日韩电影在线一区| 日韩美女视频在线| 国产一区二区三区视频在线播放| 亚洲精品一区二区三区精华液| 免费av网站大全久久| 欧美tickling网站挠脚心| 韩国av一区二区| 国产日韩欧美高清在线| 成人教育av在线| 亚洲蜜臀av乱码久久精品| 色94色欧美sute亚洲线路一ni | 欧美日韩免费一区二区三区| 亚洲高清视频在线| 51精品视频一区二区三区| 久久精品国产亚洲5555| 中日韩av电影| 欧美午夜电影一区| 免费人成网站在线观看欧美高清| 欧美群妇大交群中文字幕| 麻豆91在线播放| 日韩美女天天操| 丁香另类激情小说| 成人免费一区二区三区视频| 欧美日韩国产经典色站一区二区三区| 蜜桃视频在线观看一区| 久久九九国产精品| 99国产精品99久久久久久| 日日摸夜夜添夜夜添国产精品 | 欧美一区二区免费| 国产成人无遮挡在线视频| 一区二区三区视频在线看| 日韩三级视频中文字幕| 欧美色综合网站| 国产在线精品一区二区不卡了| 国产精品拍天天在线| 欧美中文字幕一区二区三区 | 日本一区二区三区免费乱视频| voyeur盗摄精品| 免费在线看成人av| 亚洲激情图片一区| 精品久久五月天| 在线精品视频小说1| 国产精品一区二区久久不卡| 亚洲福利视频一区二区| 中日韩av电影| 精品久久人人做人人爰| 欧美性生活大片视频| 成人激情小说乱人伦| 美腿丝袜一区二区三区| 一区二区三区美女视频| 久久久久久久av麻豆果冻| 欧美日韩国产片| 一本久久a久久精品亚洲| 国产精品一区三区| 欧美a一区二区| 亚洲午夜久久久久| 国产精品国产三级国产普通话三级| 99久久久久久99| 国产精品一区二区你懂的| 亚洲综合在线第一页| 日韩免费高清av| 欧美中文字幕一二三区视频| 精品一区二区三区在线播放| 亚洲国产精品久久久男人的天堂| 国产精品欧美极品| 久久久精品日韩欧美| 日韩欧美久久久| 日韩一区二区影院| 91精品国产品国语在线不卡| 欧美日韩中文字幕精品| 色视频欧美一区二区三区| hitomi一区二区三区精品| 丁香婷婷深情五月亚洲| 国产成人av在线影院| 国产成人免费视频一区| 国产一区不卡在线| 国产精品1区2区3区在线观看| 精品综合久久久久久8888| 久久91精品久久久久久秒播| 日韩一区精品字幕| 日本亚洲天堂网| 天堂va蜜桃一区二区三区漫画版 | 久久先锋资源网| 日韩一区二区在线看片| 91精品国产综合久久精品麻豆| 91丝袜美腿高跟国产极品老师 | 日本三级亚洲精品| 美女性感视频久久| 国产精品自在欧美一区| 高清不卡一二三区| 91亚洲资源网| 欧美色综合影院| 日韩一区二区免费在线观看| 精品国产伦一区二区三区免费| 欧美成人猛片aaaaaaa| 久久久久亚洲蜜桃| 国产精品久久久久7777按摩| 日韩伦理电影网| 一区二区三区欧美亚洲| 午夜久久久影院| 日本成人在线网站| 99免费精品视频| 在线成人高清不卡| 日韩精品一区二区三区视频在线观看 | 亚洲视频在线一区| 亚洲成人av资源| 久久99精品一区二区三区| 成人激情动漫在线观看| 日本二三区不卡| 日韩欧美一二三| 18欧美亚洲精品| 蜜臀av性久久久久av蜜臀妖精| 福利一区二区在线| 色哟哟亚洲精品| 久久亚洲综合色一区二区三区 | 日韩欧美色综合网站| 欧美国产一区二区| 亚洲国产一区二区三区| 国产一区二区主播在线| 在线观看亚洲一区| 精品99一区二区| 国产精品毛片无遮挡高清| 亚洲免费观看高清完整版在线观看熊 | 亚洲三级在线免费观看| 蜜臀久久久久久久| 91视视频在线观看入口直接观看www| 欧美精品一级二级三级| 国产农村妇女毛片精品久久麻豆 | 欧美伦理影视网| 中文字幕巨乱亚洲| 日日噜噜夜夜狠狠视频欧美人 | 国产日韩欧美a| 日韩精品一级中文字幕精品视频免费观看 | 亚洲日本va午夜在线影院| 青青青伊人色综合久久| 91老师国产黑色丝袜在线| www久久久久| 天堂一区二区在线| 91美女片黄在线| 久久精品日产第一区二区三区高清版 | 97se亚洲国产综合在线| 精品一区二区三区视频| 欧美精品一区男女天堂| 国产女主播视频一区二区| 一区二区三区四区五区视频在线观看|