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

📄 mychdoc.cpp

📁 平面凸包
💻 CPP
字号:
// MyCHDoc.cpp : implementation of the CMyCHDoc class
//

#include "stdafx.h"
#include "MyCH.h"

#include "MyCHDoc.h"
#include "MyCHView.h"


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

/////////////////////////////////////////////////////////////////////////////
// CMyCHDoc

IMPLEMENT_DYNCREATE(CMyCHDoc, CDocument)

BEGIN_MESSAGE_MAP(CMyCHDoc, CDocument)
	//{{AFX_MSG_MAP(CMyCHDoc)
	ON_COMMAND(ID_FILE_OPEN, OnFileOpen)
	ON_COMMAND(ID_FILE_SAVE, OnFileSave)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CMyCHDoc construction/destruction

CMyCHDoc::CMyCHDoc()
{
	// TODO: add one-time construction code here

}

CMyCHDoc::~CMyCHDoc()
{
}

BOOL CMyCHDoc::OnNewDocument()
{
	if (!CDocument::OnNewDocument())
		return FALSE;

	// TODO: add reinitialization code here
	// (SDI documents will reuse this document)

	return TRUE;
}



/////////////////////////////////////////////////////////////////////////////
// CMyCHDoc serialization

void CMyCHDoc::Serialize(CArchive& ar)
{
	CFrameWnd  *MyFrameWnd = (CFrameWnd *)AfxGetApp()->m_pMainWnd;
	CMyCHView      *MyView = (CMyCHView *)MyFrameWnd->GetActiveView();
	if (ar.IsStoring())
	{
		// TODO: add storing code here	

		ar<<MyView->m_nCount;
        for(int i=0; i< MyView->m_nCount; i++)
		   ar<<MyView->m_pNode[i];
	}
	else
	{
		// TODO: add loading code here

		if(MyView->m_pNode != NULL ) 
		{
            delete  []MyView->m_pNode;
			MyView->m_pNode    = NULL;
		}	
		if(MyView->m_pResult != NULL)
		{
            delete  []MyView->m_pResult;
			MyView->m_pResult  = NULL;
		}

		ar>>MyView->m_nCount;
		MyView->m_pNode = new CPoint[MyView->m_nCount];	    
        for(int i=0; i< MyView->m_nCount; i++)
		   ar>>MyView->m_pNode[i];

		if(MyView->m_nCount < 200)
		{
			CString str; 
			str.Format("%d",MyView->m_nCount);
			for( i=0; i< MyView->m_nCount; i++)
			{
			   str.Format(str+"x = %d\ty = %d\n", MyView->m_pNode[i].x, MyView->m_pNode[i].y);
			}
			MyView->MessageBox(str);
		}
	
		//初始化其他数据
		MyView->m_r           = 2;
		MyView->m_nodeStyle   = 0;
		MyView->m_topLeft.x   = 10;
		MyView->m_topLeft.y   = 10;
		MyView->m_sScreen.cx  = 1000;
		MyView->m_sScreen.cy  = 600;
		MyView->m_h           = 0;
		MyView->m_pResult     = new CPoint[MyView->m_nCount]; 	
	//	if(MyView->m_pResult == NULL)  MyView->MessageBox("问题在这啊,内存分配失败");
		MyView->IsInitialed   = TRUE;
		MyView->IsComputed    = FALSE;
		MyView->Invalidate(); 
	}
}

/////////////////////////////////////////////////////////////////////////////
// CMyCHDoc diagnostics

#ifdef _DEBUG
void CMyCHDoc::AssertValid() const
{
	CDocument::AssertValid();
}

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

/////////////////////////////////////////////////////////////////////////////
// CMyCHDoc commands

void CMyCHDoc::OnFileOpen() 
{
	// TODO: Add your command handler code here
	CString strOpenFileType = "文本文件(*.txt)|*.txt|All Files(*.*)|*.*||";
	CFileDialog OpenDlg(TRUE, "txt", NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, strOpenFileType,NULL);
	if(OpenDlg.DoModal() == IDOK)
	{
		OnOpenDocument(OpenDlg.m_ofn.lpstrFile);
		//::AfxGetApp()->OpenDocumentFile(OpenDlg.m_ofn.lpstrFile);
	}
}

void CMyCHDoc::OnFileSave() 
{
	// TODO: Add your command handler code here
	CString strSaveFileType = "文本文件(*.txt)|*.txt|All Files(*.*)|*.*||";
	CFileDialog OpenDlg(FALSE, "txt", "NoName", OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, strSaveFileType,NULL);
	if(OpenDlg.DoModal() == IDOK)
	{
		OnSaveDocument(OpenDlg.m_ofn.lpstrFile);
	}

}

⌨️ 快捷键说明

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