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

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

?? aseview.cpp

?? 一個用VC編寫的
?? CPP
字號:
// aseView.cpp : implementation of the CAseView class
//

#include "stdAfx.h"
#include "ase.h"

#include "aseDoc.h"
#include "aseView.h"

#define C_ASSERT(e) typedef char __C_ASSERT__[(e)?1:-1]

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

#define ci(x,y) x*ASE_BOARDY+y

/////////////////////////////////////////////////////////////////////////////
// CAseView

IMPLEMENT_DYNCREATE(CAseView, CView)

BEGIN_MESSAGE_MAP(CAseView, CView)
	//{{AFX_MSG_MAP(CAseView)
	ON_WM_LBUTTONDOWN()
	ON_WM_LBUTTONUP()
	ON_WM_MOUSEMOVE()
	ON_WM_ERASEBKGND()
	ON_WM_RBUTTONDBLCLK()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CAseView construction/destruction

static COLORREF crBrushes [] = {
	RGB(255,255,255),
	RGB(192,192,192),
	RGB(128,128,128),
	RGB(000,000,000),
	RGB(255,000,000),
	RGB(000,255,000),
};

CAseView::CAseView()
{
	m_bDragging = false;
	m_uBrushType = 0;
}

CAseView::~CAseView()
{
}

BOOL CAseView::PreCreateWindow(CREATESTRUCT& cs)
{
	return CView::PreCreateWindow(cs);
}

/////////////////////////////////////////////////////////////////////////////
// CAseView drawing

void CAseView::OnDraw(CDC* pDC)
{
	CAseDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);

	CRect rect;
	GetClientRect(rect);

	CDC memdc;
	CBitmap bmp, *oldbmp;
	CPen *oldpen, pen(PS_SOLID, 1, RGB(255,0,255));

	memdc.CreateCompatibleDC(GetDC());
	bmp.CreateDiscardableBitmap(pDC, rect.Width(), rect.Height());
	oldbmp = memdc.SelectObject(&bmp);
	oldpen = memdc.SelectObject(&pen);
	
	char *board = pDoc->GetBoard();
	
	memdc.FillSolidRect(rect, RGB(255,255,255));

	int i;
	int dx = rect.Width();
	int dy = rect.Height();

	// Cycle through the board and draw any squares

	for (i=0; i<ASE_BOARDX; i++) {
		for (int j=0; j<ASE_BOARDY; j++) {
			if (board[ci(i,j)] != 0) {
				DrawRectangle(i, j, &memdc, crBrushes[board[ci(i,j)]]);
			}
		}
	}

	// Draw start, end and debug points
	if (m_cStart.x != -1) DrawRectangle(m_cStart.x, m_cStart.y, &memdc, crBrushes[4]);
	if (m_cEnd.x != -1)   DrawRectangle(m_cEnd.x, m_cEnd.y, &memdc, crBrushes[5]);

	// Draw the grid...

	for (i=0; i<dx; i+=8) {
		for (int j=0;j<dy;j+=8) {
			memdc.SetPixel(i, j, RGB(192, 192, 192));
		}
	}

	// Draw route if necessary
	if (pDoc->DrawRoute()) DrawRoute(&memdc);

	if (m_cHilight.x != -1) {
		DrawRectangle(m_cHilight.x, m_cHilight.y, &memdc, RGB(0,0,255));
		
		CPoint centre;
		centre.x = m_cHilight.x*ASE_GRIDSIZE+(ASE_GRIDSIZE/2);
		centre.y = m_cHilight.y*ASE_GRIDSIZE+(ASE_GRIDSIZE/2);

		memdc.MoveTo(centre);

		int numchildren = m_cHilightNode->numchildren;
		_asNode *temp;
	
		for (int i=0; i<numchildren; i++) {
			temp = m_cHilightNode->children[i];
			memdc.LineTo(temp->x * ASE_GRIDSIZE + (ASE_GRIDSIZE/2),
				        temp->y * ASE_GRIDSIZE + (ASE_GRIDSIZE/2));
			memdc.MoveTo(centre);
		}
	}

	CPoint bp = pDoc->GetBreakpoint();
	if (bp.x != -1) DrawCircle(bp.x, bp.y, &memdc, RGB(128,0,0));

	pDC->BitBlt(0,0,rect.Width(), rect.Height(), &memdc, 0, 0, SRCCOPY);

	memdc.SelectObject(oldpen);
	memdc.SelectObject(oldbmp);
}

void CAseView::DrawRectangle(int x, int y, CDC *pDC, COLORREF cr)
{
	CBrush br(RGB(0,0,0));
	CRect rect(x*ASE_GRIDSIZE, y*ASE_GRIDSIZE, 
			   x*ASE_GRIDSIZE+ASE_GRIDSIZE+1,
			   y*ASE_GRIDSIZE+ASE_GRIDSIZE+1);

	pDC->FillSolidRect(rect, cr);
	pDC->FrameRect(&rect, &br);
}

void CAseView::DrawCircle(int x, int y, CDC *pDC, COLORREF cr)
{
	CBrush br(cr), *oldbrush;
	CPen pen(PS_SOLID, 0, RGB(0,0,0)), *oldpen;
	CRect rect(x*ASE_GRIDSIZE, y*ASE_GRIDSIZE, 
			   x*ASE_GRIDSIZE+ASE_GRIDSIZE+1,
			   y*ASE_GRIDSIZE+ASE_GRIDSIZE+1);

	oldbrush = pDC->SelectObject(&br);
	oldpen   = pDC->SelectObject(&pen);

	pDC->Ellipse(rect);

	pDC->SelectObject(oldbrush);
	pDC->SelectObject(oldpen);
}

void CAseView::DrawRoute(CDC *pDC)
{
	CAseDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);

	CPen pen(PS_SOLID,1,RGB(0,0,0)),*oldpen;

	oldpen = pDC->SelectObject(&pen);

	CAStar *astar = pDoc->GetPathFinder();
	_asNode *best = astar->GetBestNode();
		
	int x,y,px,py;

	if (best) {
		x = best->x;
		y = best->y;
		
		px = x * ASE_GRIDSIZE + (ASE_GRIDSIZE / 2);
		py = y * ASE_GRIDSIZE + (ASE_GRIDSIZE / 2);

		pDC->MoveTo(px,py);
		best = best->parent;
	}

	while (best) {
		x = best->x;
		y = best->y;
		
		px = x * ASE_GRIDSIZE + (ASE_GRIDSIZE / 2);
		py = y * ASE_GRIDSIZE + (ASE_GRIDSIZE / 2);
		
		pDC->LineTo(px,py);

		best = best->parent;
	}

	pDC->SetPixel(px,py, RGB(0,0,128));
	pDC->SelectObject(oldpen);
}

void CAseView::HighlightNode(_asNode *node, bool drawKidsConnections)
{
	if (!node) {
		m_cHilight.x = -1;
		m_cHilightNode = NULL;
	} else {
		m_cHilight.x = node->x;
		m_cHilight.y = node->y;
		m_cHilightNode = node;
	}

	Invalidate(false);
}

void CAseView::RemoveHighlight()
{
	m_cHilight.x = -1;
	m_cHilightNode = NULL;
}

void CAseView::OnInitialUpdate()
{
	CView::OnInitialUpdate();

	m_cHilight.x = -1;
	m_cHilightNode = NULL;
	GetDocument()->GetStartEnd(m_cStart, m_cEnd);
}

/////////////////////////////////////////////////////////////////////////////
// CAseView diagnostics

#ifdef _DEBUG
void CAseView::AssertValid() const
{
	CView::AssertValid();
}

void CAseView::Dump(CDumpContext& dc) const
{
	CView::Dump(dc);
}

CAseDoc* CAseView::GetDocument() // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CAseDoc)));
	return (CAseDoc*)m_pDocument;
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CAseView message handlers

void CAseView::OnLButtonDown(UINT nFlags, CPoint point) 
{
	CAseDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);

	MouseToPoint(point, m_uBrushType);

	if (m_uBrushType < 4) m_bDragging = true;

	CView::OnLButtonDown(nFlags, point);
}

void CAseView::OnLButtonUp(UINT nFlags, CPoint point) 
{
	m_bDragging = false;
	GetDocument()->NotifyClick();
	
	CView::OnLButtonUp(nFlags, point);
}

void CAseView::OnMouseMove(UINT nFlags, CPoint point) 
{
	if (m_bDragging) {
		MouseToPoint(point, m_uBrushType);
	}
	
	CView::OnMouseMove(nFlags, point);
}

void CAseView::MouseToPoint(CPoint point, UINT brush)
{
	CClientDC dc(this);

	int px = point.x/8, py = point.y/8;

	CPoint round(px*ASE_GRIDSIZE, py*ASE_GRIDSIZE),temp;

	GetDocument()->GetStartEnd(m_cStart, m_cEnd);

	// If start or end
	if (brush == 4) {
		temp.x = m_cStart.x * ASE_GRIDSIZE;
		temp.y = m_cStart.y * ASE_GRIDSIZE;

		m_cStart.x = px;
		m_cStart.y = py;

		InvalidateRect(CRect(round,CSize(ASE_GRIDSIZE+1,ASE_GRIDSIZE+1)), false);
		InvalidateRect(CRect(temp,CSize(ASE_GRIDSIZE+1,ASE_GRIDSIZE+1)), false);
	} else if (brush == 5) {
		temp.x = m_cEnd.x * ASE_GRIDSIZE;
		temp.y = m_cEnd.y * ASE_GRIDSIZE;

		m_cEnd.x = px;
		m_cEnd.y = py;
		
		InvalidateRect(CRect(round,CSize(ASE_GRIDSIZE+1,ASE_GRIDSIZE+1)), false);
		InvalidateRect(CRect(temp,CSize(ASE_GRIDSIZE+1,ASE_GRIDSIZE+1)), false);
	} else if (brush == -1) {
		CPoint bp = GetDocument()->GetBreakpoint();

		temp.x = bp.x * ASE_GRIDSIZE;
		temp.y = bp.y * ASE_GRIDSIZE;

		bp.x = px;
		bp.y = py;

		GetDocument()->SetBreakpoint(bp);

		InvalidateRect(CRect(round,CSize(ASE_GRIDSIZE+1,ASE_GRIDSIZE+1)), false);
		InvalidateRect(CRect(temp,CSize(ASE_GRIDSIZE+1,ASE_GRIDSIZE+1)), false);
	} else {
		char *board = GetDocument()->GetBoard();

		board[ci(px,py)] = brush;
		InvalidateRect(CRect(round,CSize(ASE_GRIDSIZE+1,ASE_GRIDSIZE+1)), false);
	}

	GetDocument()->SetStartEnd(m_cStart, m_cEnd);
}

BOOL CAseView::OnEraseBkgnd(CDC* pDC) 
{
	return false;	
	return CView::OnEraseBkgnd(pDC);
}

void CAseView::OnRButtonDblClk(UINT nFlags, CPoint point) 
{
	MouseToPoint(point, -1);
	
	CView::OnRButtonDblClk(nFlags, point);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美体内she精高潮| 一本一道综合狠狠老| 亚洲成人自拍网| 亚洲综合清纯丝袜自拍| 国产精品乱人伦中文| 欧美精品一区二区三区一线天视频 | 亚洲午夜精品久久久久久久久| 中文字幕亚洲在| 日韩美女视频19| 亚洲人成网站影音先锋播放| 亚洲日本成人在线观看| 亚洲精品亚洲人成人网在线播放| 亚洲欧美日韩一区二区| 亚洲图片有声小说| 轻轻草成人在线| 激情都市一区二区| 国产精品自拍一区| 成人黄色综合网站| 色www精品视频在线观看| 欧美精品久久天天躁| 欧美一级精品大片| 国产欧美日韩中文久久| 亚洲少妇30p| 亚洲成人av福利| 国产精品一区二区久激情瑜伽| 成人黄色免费短视频| 欧美视频精品在线| 久久久久国色av免费看影院| 久久日韩粉嫩一区二区三区| 欧美韩日一区二区三区| 日本一区二区三级电影在线观看| 久久噜噜亚洲综合| 国产精品理论片在线观看| 中文字幕在线观看一区| 亚洲免费av高清| 日韩av电影免费观看高清完整版| 亚洲三级在线观看| 日韩美女一区二区三区四区| 精品国产一区久久| 亚洲视频你懂的| 视频一区视频二区中文| 精品一区二区三区视频| 国产激情视频一区二区在线观看| 丁香激情综合国产| 在线看不卡av| 久久这里只精品最新地址| 国产欧美一区二区三区沐欲 | 国产三级精品三级在线专区| 亚洲国产精品成人综合| 亚洲午夜久久久久久久久电影网| 日韩av不卡一区二区| 激情六月婷婷综合| 91欧美一区二区| 日韩一区二区三区在线视频| 国产午夜三级一区二区三| 亚洲欧美另类久久久精品 | 欧美日韩dvd在线观看| 26uuu欧美| 亚洲综合免费观看高清在线观看| 另类专区欧美蜜桃臀第一页| 国产成人精品午夜视频免费| 91网站最新地址| 国产精品少妇自拍| 日韩av中文字幕一区二区三区| 国产精品亚洲第一区在线暖暖韩国| 91在线观看免费视频| 日韩一级大片在线| 亚洲视频一区二区免费在线观看| 日本亚洲三级在线| 99精品视频在线观看| 日韩欧美精品三级| 亚洲一区二区四区蜜桃| 国产一区二区三区黄视频 | 欧美欧美午夜aⅴ在线观看| 欧美激情中文不卡| 蜜桃av噜噜一区二区三区小说| 色综合久久88色综合天天6| 久久嫩草精品久久久精品| 肉色丝袜一区二区| 色狠狠色噜噜噜综合网| 国产精品天美传媒| 国产酒店精品激情| 久久嫩草精品久久久久| 久久国产精品99久久久久久老狼| 欧美视频三区在线播放| 亚洲综合免费观看高清完整版在线| 成人在线综合网站| 国产三级一区二区三区| 国内外成人在线| 久久青草国产手机看片福利盒子 | 久久久久久久久久看片| 青娱乐精品视频| 欧美一级一区二区| 天天亚洲美女在线视频| 欧美吻胸吃奶大尺度电影| 中文字幕视频一区| 91亚洲精品久久久蜜桃| 中文字幕一区在线观看视频| 99热精品一区二区| 日本一区二区三区久久久久久久久不| 婷婷中文字幕综合| 精品一二三四区| 精品国产91乱码一区二区三区| 久草这里只有精品视频| 精品国产精品一区二区夜夜嗨| 日本亚洲电影天堂| 2020国产精品自拍| 精品一区二区三区久久| 国产精品久久久久永久免费观看 | 色综合久久久久网| 一片黄亚洲嫩模| 欧美日本在线观看| 午夜精品福利一区二区三区av| 欧美图片一区二区三区| 一区二区三区丝袜| 亚洲精品一区二区三区影院| 成人福利视频网站| 一区二区三区四区高清精品免费观看| 欧美乱熟臀69xxxxxx| 日本不卡中文字幕| 久久理论电影网| 色88888久久久久久影院野外| 亚洲福利一区二区三区| 日韩欧美亚洲国产另类 | 日韩二区三区在线观看| 精品国产乱码久久久久久闺蜜 | 成人免费va视频| 一区二区不卡在线视频 午夜欧美不卡在| 欧美午夜理伦三级在线观看| 精品一区二区三区免费视频| 国产精品久久久久久户外露出| 欧美亚洲免费在线一区| 精品一区二区免费| 亚洲精品乱码久久久久| 欧美一级久久久久久久大片| www.欧美色图| 美女高潮久久久| 亚洲视频资源在线| 日韩欧美电影在线| 国产成人精品在线看| 亚洲精品一二三四区| 国产精品久久一级| 日韩视频永久免费| 日本精品免费观看高清观看| 精品无人码麻豆乱码1区2区| 国产精品丝袜在线| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 亚洲主播在线播放| 日本一区二区综合亚洲| 91精品欧美一区二区三区综合在| 国产福利一区二区| 捆绑紧缚一区二区三区视频| 亚洲图片你懂的| 欧美国产成人在线| 日韩精品一区二| 日韩一区有码在线| 国产三级精品视频| 日韩欧美国产精品| 欧美一激情一区二区三区| 一本大道久久a久久综合| 国产一区二区福利| 免费观看日韩电影| 日韩国产高清在线| 亚洲国产日韩精品| 伊人开心综合网| 国产精品超碰97尤物18| 日本一区二区久久| 国产亚洲一区二区三区四区| 日韩欧美一区二区不卡| 正在播放亚洲一区| 91精品国产91热久久久做人人 | 欧美乱妇一区二区三区不卡视频| 99视频热这里只有精品免费| 成人免费看片app下载| 成人黄色777网| 激情偷乱视频一区二区三区| 寂寞少妇一区二区三区| 全部av―极品视觉盛宴亚洲| 美女视频黄免费的久久| 久久精品99久久久| 国产精品一区三区| 波多野结衣中文字幕一区二区三区| 国产精品1024久久| 成人的网站免费观看| 成人深夜福利app| 日本精品一区二区三区四区的功能| 欧美这里有精品| 欧美一卡2卡3卡4卡| 日韩精品一区二区三区视频播放 | 日本成人在线看| 麻豆91在线看| 日韩高清一区在线| 国产麻豆精品95视频| voyeur盗摄精品| 精品视频在线免费| 欧美电影精品一区二区| 日本一区免费视频| 亚洲成a天堂v人片| 国产精品1区二区.| 日本丰满少妇一区二区三区|