www.pudn.com > 基于SHA-256的HMAC文件校验器.rar > VeriFileDoc.cpp


// VeriFileDoc.cpp : implementation of the CVeriFileDoc class 
// Programmed by Gamsn 2005.10.22 
 
#include "stdafx.h" 
#include "VeriFile.h" 
 
#include "VeriFileDoc.h" 
 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
 
///////////////////////////////////////////////////////////////////////////// 
// CVeriFileDoc 
 
IMPLEMENT_DYNCREATE(CVeriFileDoc, CDocument) 
 
BEGIN_MESSAGE_MAP(CVeriFileDoc, CDocument) 
	//{{AFX_MSG_MAP(CVeriFileDoc) 
		// NOTE - the ClassWizard will add and remove mapping macros here. 
		//    DO NOT EDIT what you see in these blocks of generated code! 
	//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
 
///////////////////////////////////////////////////////////////////////////// 
// CVeriFileDoc construction/destruction 
 
CVeriFileDoc::CVeriFileDoc() 
{ 
	m_pMac=NULL; 
	m_nArchive=0; 
	m_nHidden=0; 
	m_nReadOnly=0; 
	m_nSys=0; 
	m_nFileSize=0; 
	m_strFileCreateDate=""; 
	m_strFileLastModiDate=""; 
	m_strFileLastAccessDate=""; 
	m_strFileName=""; 
	m_strMac=""; 
	// TODO: add one-time construction code here 
} 
 
CVeriFileDoc::~CVeriFileDoc() 
{ 
} 
 
BOOL CVeriFileDoc::OnNewDocument() 
{ 
	if (!CDocument::OnNewDocument()) 
		return FALSE; 
 
	// TODO: add reinitialization code here 
	// (SDI documents will reuse this document) 
 
	return TRUE; 
} 
 
///////////////////////////////////////////////////////////////////////////// 
// CVeriFileDoc serialization 
 
void CVeriFileDoc::Serialize(CArchive& ar) 
{ 
	CWnd *pMainWnd=AfxGetMainWnd(); 
	if (ar.IsStoring()) 
	{ 
		ASSERT(m_pMac); 
		ar<m_nArchive; 
		ar<m_nHidden; 
		ar<m_nReadOnly; 
		ar<m_nSys; 
		ar<m_nFileSize; 
		ar<m_strFileCreateDate; 
		ar<m_strFileLastModiDate; 
		ar<m_strFileLastAccessDate; 
		ar<m_strFileName; 
		ar<m_strMac; 
	} 
	else 
	{ 
		CFile *f; 
		f=ar.GetFile(); 
		CString strFileName=f->GetFileName(); 
		if(strFileName.Right(4)!=".vri") 
		{ 
			MessageBox(pMainWnd->m_hWnd,"您打开的文件不是本软件支持的标准校验文件,无法打开。","VERIFILE",MB_OK|MB_ICONEXCLAMATION); 
			return; 
		} 
		ar>>m_nArchive; 
		ar>>m_nHidden; 
		ar>>m_nReadOnly; 
		ar>>m_nSys; 
		ar>>m_nFileSize; 
		ar>>m_strFileCreateDate; 
		ar>>m_strFileLastModiDate; 
		ar>>m_strFileLastAccessDate; 
		ar>>m_strFileName; 
		ar>>m_strMac; 
	} 
} 
 
///////////////////////////////////////////////////////////////////////////// 
// CVeriFileDoc diagnostics 
 
#ifdef _DEBUG 
void CVeriFileDoc::AssertValid() const 
{ 
	CDocument::AssertValid(); 
} 
 
void CVeriFileDoc::Dump(CDumpContext& dc) const 
{ 
	CDocument::Dump(dc); 
} 
#endif //_DEBUG 
 
///////////////////////////////////////////////////////////////////////////// 
// CVeriFileDoc commands 
 
BOOL CVeriFileDoc::OnOpenDocument(LPCTSTR lpszPathName)  
{ 
	CString strFileName=lpszPathName; 
	if(strFileName.Right(4)!=".vri") return 0; 
	if (!CDocument::OnOpenDocument(lpszPathName)) 
		return FALSE; 
	 
	// TODO: Add your specialized creation code here 
	 
	return TRUE; 
} 
 
BOOL CVeriFileDoc::SaveModified()  
{ 
	CWnd *pMainWnd=AfxGetMainWnd(); 
//	int nRes=MessageBox(pMainWnd->m_hWnd,"保存当前生成的校验文件吗?","VERIFILE",MB_YESNO|MB_ICONQUESTION); 
	if(IsModified() ) 
	{ 
	}//return 1; 
	return CDocument::SaveModified(); 
} 
 
BOOL CVeriFileDoc::OnSaveDocument(LPCTSTR lpszPathName)  
{ 
	CWnd *pMainWnd=AfxGetMainWnd(); 
	if(m_pMac->m_strMac.IsEmpty())  
	{ 
		MessageBox(pMainWnd->m_hWnd,"校验信息无效,无法保存校验文件。","VERIFILE",MB_OK); 
		return 0; 
	}	 
	return CDocument::OnSaveDocument(lpszPathName); 
}