129 lines
2.6 KiB
C++
129 lines
2.6 KiB
C++
// WorkspaceTextDoc.cpp : implementation of the CWorkspaceTextDoc class
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
#include "WorkspaceDemo.h"
|
|
|
|
#include "WorkspaceTextDoc.h"
|
|
|
|
#include "UTB64Bit.h"
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CWorkspaceTextDoc
|
|
|
|
IMPLEMENT_DYNCREATE(CWorkspaceTextDoc, CDocument)
|
|
|
|
BEGIN_MESSAGE_MAP(CWorkspaceTextDoc, CDocument)
|
|
//{{AFX_MSG_MAP(CWorkspaceTextDoc)
|
|
// 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()
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CWorkspaceTextDoc construction/destruction
|
|
|
|
CWorkspaceTextDoc::CWorkspaceTextDoc()
|
|
{
|
|
// TODO: add one-time construction code here
|
|
|
|
}
|
|
|
|
CWorkspaceTextDoc::~CWorkspaceTextDoc()
|
|
{
|
|
}
|
|
|
|
BOOL CWorkspaceTextDoc::OnNewDocument()
|
|
{
|
|
if (!CDocument::OnNewDocument())
|
|
return FALSE;
|
|
|
|
// TODO: add reinitialization code here
|
|
// (SDI documents will reuse this document)
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
BOOL CWorkspaceTextDoc::SetText(CString sText)
|
|
{
|
|
BOOL bModified = FALSE;
|
|
if (sText != m_sText)
|
|
{
|
|
m_sText = sText;
|
|
bModified = TRUE;
|
|
SetModifiedFlag(TRUE);
|
|
}
|
|
|
|
return bModified;
|
|
}
|
|
|
|
CString CWorkspaceTextDoc::GetText() const
|
|
{
|
|
return m_sText;
|
|
}
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CWorkspaceTextDoc serialization
|
|
|
|
void CWorkspaceTextDoc::Serialize(CArchive& ar)
|
|
{
|
|
if (ar.IsStoring())
|
|
{
|
|
DWORD nLength = 0;
|
|
|
|
#ifdef _UNICODE
|
|
LPSTR pszText = NULL;
|
|
const int nMaxLength = m_sText.GetLength() + 2;
|
|
pszText = new char[nMaxLength];
|
|
nLength = wcstombs(pszText, m_sText, nMaxLength);
|
|
VERIFY(nLength != (size_t)-1);
|
|
#else
|
|
LPCSTR pszText = NULL;
|
|
pszText = m_sText;
|
|
nLength = m_sText.GetLength();
|
|
#endif
|
|
|
|
ar.Write(pszText, nLength);
|
|
|
|
#ifdef _UNICODE
|
|
delete[] pszText;
|
|
#endif
|
|
}
|
|
else
|
|
{
|
|
CFile* pFile = ar.GetFile();
|
|
ASSERT(pFile->GetPosition() == 0);
|
|
DWORD_PTR nFileSize = (DWORD_PTR) pFile->GetLength();
|
|
|
|
char* pszText = new char[nFileSize + 1];
|
|
ar.Read(pszText, (UINT)nFileSize);
|
|
pszText[nFileSize] = '\0';
|
|
m_sText = pszText;
|
|
delete[] pszText;
|
|
}
|
|
}
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CWorkspaceTextDoc diagnostics
|
|
|
|
#ifdef _DEBUG
|
|
void CWorkspaceTextDoc::AssertValid() const
|
|
{
|
|
CDocument::AssertValid();
|
|
}
|
|
|
|
void CWorkspaceTextDoc::Dump(CDumpContext& dc) const
|
|
{
|
|
CDocument::Dump(dc);
|
|
}
|
|
#endif //_DEBUG
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CWorkspaceTextDoc commands
|