www.pudn.com > CDem.rar > CDemView.cpp
// CDemView.cpp : implementation of the CCDemView class
//
#include "stdafx.h"
#include "CDem.h"
#include "CDemDoc.h"
#include "CDemView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CCDemView
IMPLEMENT_DYNCREATE(CCDemView, CView)
BEGIN_MESSAGE_MAP(CCDemView, CView)
//{{AFX_MSG_MAP(CCDemView)
ON_COMMAND(ID_FILE_OPEN, OnFileOpen)
//}}AFX_MSG_MAP
// Standard printing commands
ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CCDemView construction/destruction
CCDemView::CCDemView()
{
// TODO: add construction code here
m_bPress = false;
m_pEle = NULL;
}
CCDemView::~CCDemView()
{if(m_pEle)
{
delete[] m_pEle;
m_pEle =NULL;
}
}
BOOL CCDemView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
return CView::PreCreateWindow(cs);
}
/////////////////////////////////////////////////////////////////////////////
// CCDemView drawing
void CCDemView::OnDraw(CDC* pDC)
{
CCDemDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
}
/////////////////////////////////////////////////////////////////////////////
// CCDemView printing
BOOL CCDemView::OnPreparePrinting(CPrintInfo* pInfo)
{
// default preparation
return DoPreparePrinting(pInfo);
}
void CCDemView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add extra initialization before printing
}
void CCDemView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add cleanup after printing
}
/////////////////////////////////////////////////////////////////////////////
// CCDemView diagnostics
#ifdef _DEBUG
void CCDemView::AssertValid() const
{
CView::AssertValid();
}
void CCDemView::Dump(CDumpContext& dc) const
{
CView::Dump(dc);
}
CCDemDoc* CCDemView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CCDemDoc)));
return (CCDemDoc*)m_pDocument;
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CCDemView message handlers
BOOL CCDemView::OpenFile(char *szFile)
{
ifstream is(szFile);
if(is.bad())
return false;
if(!is.is_open())
{
AfxMessageBox("error");
return FALSE;
}
char message[300];
is.seekg(0,ios::beg);
is.getline(message,sizeof(message)-1, '\n '); //
//if(lstrcmpi(message, "NSDTF-DEM ")!=0)
//{
// AfxMessageBox( "当前DEM文件非国家空间数据交换格式! ");
// return FALSE;
//}
is.getline(message,sizeof(message)-1, '\n ');
is.getline(message,sizeof(message)-1, '\n ');
is.getline(message,sizeof(message)-1, '\n ');
is.getline(message,sizeof(message)-1, '\n ');
is.getline(message,sizeof(message)-1, '\n ');
sscanf(message, "%f ",&m_fLeftTopX);
is.getline(message,sizeof(message)-1, '\n ');
sscanf(message, "%f ",&m_fLeftTopY);
is.getline(message,sizeof(message)-1, '\n ');
sscanf(message, "%f ",&m_fGridX);
is.getline(message,sizeof(message)-1, '\n ');
sscanf(message, "%f ",&m_fGridY);
is.getline(message,sizeof(message)-1, '\n ');
sscanf(message, "%d ",&m_nRow);
is.getline(message,sizeof(message)-1, '\n ');
sscanf(message, "%d ",&m_nCol);
is.getline(message,sizeof(message)-1, '\n ');
sscanf(message, "%d ",&m_nScale);
is.getline(message,sizeof(message)-1, '\n ');
if(fabs(m_fGridX-m_fGridY) > 0.0001)
{
AfxMessageBox("系统要求DEM为正方形格网 ");
return false;
}
m_pEle=new int[m_nRow*m_nCol];
int i,j,k;
for(i=0;i