www.pudn.com > c02 vc6.rar > C02IDEDoc.cpp


// C02IDEDoc.cpp : implementation of the CC02IDEDoc class 
// 
 
#include "stdafx.h" 
#include "C02IDE.h" 
#include "MainFrm.h" 
#include "C02IDEDoc.h" 
 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
 
///////////////////////////////////////////////////////////////////////////// 
// CC02IDEDoc 
 
IMPLEMENT_DYNCREATE(CC02IDEDoc, CDocument) 
 
BEGIN_MESSAGE_MAP(CC02IDEDoc, CDocument) 
	//{{AFX_MSG_MAP(CC02IDEDoc) 
	ON_COMMAND(ID_FILE_CLOSE, OnFileClose) 
	ON_COMMAND(ID_READ_ONLY, OnReadOnly) 
	ON_UPDATE_COMMAND_UI(ID_READ_ONLY, OnUpdateReadOnly) 
	//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
 
///////////////////////////////////////////////////////////////////////////// 
// CC02IDEDoc construction/destruction 
 
#pragma warning(disable:4355) 
CC02IDEDoc::CC02IDEDoc() : m_xTextBuffer(this) 
{ 
	// TODO: add one-time construction code here 
 
	//	Initialize LOGFONT structure 
	memset(&m_lf, 0, sizeof(m_lf)); 
	m_lf.lfWeight = FW_NORMAL; 
	m_lf.lfHeight = 0xfffffff2; 
	m_lf.lfCharSet = GB2312_CHARSET; 
//	m_lf.lfOutPrecision = OUT_DEFAULT_PRECIS; 
//	m_lf.lfClipPrecision = CLIP_DEFAULT_PRECIS; 
//	m_lf.lfQuality = DEFAULT_QUALITY; 
//	m_lf.lfPitchAndFamily = DEFAULT_PITCH | FF_DONTCARE; 
	strcpy(m_lf.lfFaceName, _T("Fixedsys")); 
} 
 
CC02IDEDoc::~CC02IDEDoc() 
{ 
} 
 
BOOL CC02IDEDoc::OnNewDocument() 
{ 
	if (!CDocument::OnNewDocument()) 
		return FALSE; 
 
	m_xTextBuffer.InitNew(); 
	return TRUE; 
} 
 
 
 
///////////////////////////////////////////////////////////////////////////// 
// CC02IDEDoc serialization 
 
void CC02IDEDoc::Serialize(CArchive& ar) 
{ 
	if (ar.IsStoring()) 
	{ 
		// TODO: add storing code here 
	} 
	else 
	{ 
		// TODO: add loading code here 
	} 
} 
 
///////////////////////////////////////////////////////////////////////////// 
// CC02IDEDoc diagnostics 
 
#ifdef _DEBUG 
void CC02IDEDoc::AssertValid() const 
{ 
	CDocument::AssertValid(); 
} 
 
void CC02IDEDoc::Dump(CDumpContext& dc) const 
{ 
	CDocument::Dump(dc); 
} 
#endif //_DEBUG 
 
///////////////////////////////////////////////////////////////////////////// 
// CC02IDEDoc commands 
 
void CC02IDEDoc::DeleteContents()  
{ 
	CDocument::DeleteContents(); 
 
	m_xTextBuffer.FreeAll(); 
} 
 
BOOL CC02IDEDoc::OnOpenDocument(LPCTSTR lpszPathName)  
{ 
	if (!CDocument::OnOpenDocument(lpszPathName)) 
		return FALSE; 
	 
	return m_xTextBuffer.LoadFromFile(lpszPathName); 
} 
 
BOOL CC02IDEDoc::OnSaveDocument(LPCTSTR lpszPathName)  
{ 
	m_xTextBuffer.SaveToFile(lpszPathName); 
	return TRUE;	//	Note - we didn't call inherited member! 
} 
 
void CC02IDEDoc::OnReadOnly()  
{ 
	if (! m_xTextBuffer.GetReadOnly()) 
	{ 
		m_xTextBuffer.SetReadOnly(TRUE); 
		AfxMessageBox("Document now read-only!"); 
	} 
	else 
		m_xTextBuffer.SetReadOnly(FALSE); 
} 
 
void CC02IDEDoc::OnUpdateReadOnly(CCmdUI* pCmdUI)  
{ 
	pCmdUI->SetCheck(m_xTextBuffer.GetReadOnly()); 
} 
 
 
void CC02IDEDoc::OnFileClose()  
{ 
	// TODO: Add your command handler code here 
//	n_fileclose=1; 
	//主窗口指针 
    CMDIFrameWnd *nowframe = (CMDIFrameWnd*)AfxGetApp()->m_pMainWnd; 
	//活动子窗口指针 
	CMDIChildWnd *nowchild = nowframe->MDIGetActive(); 
	//获得当前项目信息指针 
	struct ProjectList * curpro=NULL; 
    curpro=new ProjectList; 
    curpro=(ProjectList *)projectinfo.GetAt(0); 
	CString proname=_T(""); 
	proname=curpro->str_projectname;		 
		 
	//项目中的文件数目 
	int nfile=curpro->proinfstru.GetSize(); 
	//文件节点结构变量 
	struct fileitem m_pcurnode; 
     for (int j=0;j<=nfile-1;j++) 
	{ 
		//取第j个节点 
		 m_pcurnode=fileitemarray[j]; 
		 //如果节点的窗口指针等于当前活动指针,推出循环 
		 if(m_pcurnode.m_pchildf==nowchild) 
			 break;  
	} 
 
	 //删除目录树里的文件节点 
	for(int jj=j;jj<=nfile-2;jj++) 
		 fileitemarray[jj]= fileitemarray[jj+1]; 
 
	 //获得当前项目信息中的文件信息指针 
	struct FileList * m_pcurfile=NULL; 
	m_pcurfile=new FileList;            
		       
	m_pcurfile=(FileList *)curpro->proinfstru.GetAt(j); 
	//删除索引为j 的文件 
	curpro->proinfstru.RemoveAt(j); 
 
	//主窗口指针 
	CMainFrame *nowmainframe=(CMainFrame *) nowframe; 
	//删除主窗口快速查看文件函数工具条中的文件下拉框中的对应文件 
	nowmainframe->delcomfile(); 
 
	//关闭文档	 
     CDocument::OnFileClose() ; 
	 //更新文件函数树 
	m_pDocFile->UpdateAllFNode(); 
	//更新断点树 
	m_pDocClass->ExpandAllBreak(); 
	 
//	CDocument::OnCloseDocument(); 
 
}