⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 minimapview.cpp

📁 一个另类的坦克大战源程序
💻 CPP
字号:
// MiniMapView.cpp : implementation file
//

#include "stdafx.h"
#include "MapEdit.h"

#include "MainFrm.h"
#include "MapDoc.h"
#include "MapView.h"
#include "TileView.h"
#include "MiniMapView.h"

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

/////////////////////////////////////////////////////////////////////////////
// CMiniMapView

IMPLEMENT_DYNCREATE(CMiniMapView, CView)

CMiniMapView::CMiniMapView()
{
}

CMiniMapView::~CMiniMapView()
{
}


BEGIN_MESSAGE_MAP(CMiniMapView, CView)
	//{{AFX_MSG_MAP(CMiniMapView)
	ON_WM_ERASEBKGND()
	ON_WM_TIMER()
	ON_WM_CREATE()
	ON_WM_DESTROY()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CMiniMapView drawing
static COLORREF CornerColorTable[]={
	0,RGB(145,90,7),RGB(0,255,0),RGB(169,169,169),RGB(60,60,60),RGB(120,120,120)
};

void CMiniMapView::OnDraw(CDC* pDC)
{
	CMapDoc * pDoc = GetDocument();
	CMainFrame * pFrame=(CMainFrame*)AfxGetApp()->GetMainWnd();
	CTileView * pTileView = pFrame->GetTileView();
	
	CClientDC dc(this);
	CRect rc;
	GetClientRect(rc);
	ESurface cur_terrain;
	cur_terrain.Create(rc.Width(),rc.Height(),SF_CLIP);
	cur_terrain.Clear(0,0,0);
	if(pTileView->TileType()==TT_TERRAIN)
	{
		if(pTileView->CurrentTerrainID().TileID!=INVALID_TERRAIN_ID)
		{
			cur_terrain.Blt(pDoc->m_Grp_terrain,
				pDoc->TerrainIndex(pTileView->CurrentTerrainID()),
				(rc.Width()-pDoc->m_Grp_terrain.GetWidth())/2,
				(rc.Height()-pDoc->m_Grp_terrain.GetHeight())/2
				);
		}
	}else if(pTileView->TileType()==TT_OBSTACLE)
	{
		static i;
		EPG& epg = pDoc->m_epg_obstacle[
			pDoc->ObstacleIndex(pTileView->CurrentObstacleID())];
		++i%=epg.GetFrameCount();
		cur_terrain.Blt(epg,i,
			(rc.Width()-24)/2,
			(rc.Height()-24)/2);
	}
	
	cur_terrain.Blt2DC(pDC->m_hDC,0,0);
}

/////////////////////////////////////////////////////////////////////////////
// CMiniMapView diagnostics

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

void CMiniMapView::Dump(CDumpContext& dc) const
{
	CView::Dump(dc);
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CMiniMapView message handlers

void CMiniMapView::OnInitialUpdate() 
{
	CView::OnInitialUpdate();
}

void CMiniMapView::OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint) 
{
	// TODO: Add your specialized code here and/or call the base class
	if(lHint==UPDATE_ALLVIEW || lHint==UPDATE_MINIVIEW)
		RedrawWindow();
}

BOOL CMiniMapView::OnEraseBkgnd(CDC* pDC) 
{
	return TRUE;
	//return CView::OnEraseBkgnd(pDC);
}

void CMiniMapView::OnTimer(UINT nIDEvent) 
{
	CMapDoc * pDoc = GetDocument();
	CMainFrame * pFrame=(CMainFrame*)AfxGetApp()->GetMainWnd();
	CTileView * pTileView = pFrame->GetTileView();

	if(nIDEvent==1){
		RedrawWindow();
		//pFrame->SetActiveView(pFrame->GetMapView());
		pFrame->GetMapView()->RedrawWindow();
	}
	CView::OnTimer(nIDEvent);
}

int CMiniMapView::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CView::OnCreate(lpCreateStruct) == -1)
		return -1;
	
	// TODO: Add your specialized creation code here

	SetTimer(1,200,0);
	
	return 0;
}

void CMiniMapView::OnDestroy() 
{
	CView::OnDestroy();
	
	// TODO: Add your message handler code here
	KillTimer(1);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -