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

📄 myedpprj.cpp

📁 一个完整的编辑器的代码(很值得参考
💻 CPP
字号:

#include "stdafx.h"
#include "editcmd.h"
#include "resource.h"
#include "myedpprj.h"
#include "msdspprj.h"
#include "filesup.h"
	
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

#pragma warning ( disable : 4711 )
/////////////////////////////////////////////////////////////////////////////

IMPLEMENT_DYNAMIC (CMyEdpProject, CProject)

CMyEdpProject::CMyEdpProject ()
  {
  }

bool CMyEdpProject::Open (LPCTSTR pszPath)
  {
    if (CMsDspProject::OpenDsp (this, NULL, pszPath, _T ("")))
      {
        sPath = pszPath;
        return true;
      }
    return false;
  }

bool CMyEdpProject::Save (LPCTSTR pszPath)
  {
    if (SaveEdp (this, pszPath))
      {
        sPath = pszPath;
        g_pProject->SetModified (FALSE);
        return true;
      }
    return false;
  }

#define BEGIN_PROJECT _T ("# Begin Project")
#define BEGIN_GROUP _T ("# Begin Group")
#define BEGIN_FILE _T ("# Begin Source File")
#define END_PROJECT _T ("# End Project")
#define END_GROUP _T ("# End Group")
#define END_FILE _T ("# End Source File")
#define SOURCE _T ("SOURCE=")
#define EOLN _T ("\n")

bool CMyEdpProject::SaveEdpItem (CProject *pProject, CProjectItem *pParent, FILE *fp)
  {
    if (pParent->dwType & PI_GROUP)
      if (pParent->dwType & PI_ROOT)
        _fputts ((BEGIN_GROUP _T (" \"")) + pParent->sMidPath + pParent->sPath + (_T ("\"") EOLN), fp);
      else
        _fputts ((BEGIN_GROUP _T (" \"")) + pParent->sPath + (_T ("\"") EOLN), fp);
    else
      {
        _fputts (BEGIN_FILE EOLN, fp);
        CString sEntry = pParent->sMidPath + pParent->sPath,
          sPath = GetPath (pProject->sPath, TRUE);
        int nLength = sPath.GetLength ();
        if (!_tcsnicmp (sPath, sEntry, nLength))
          sEntry = sEntry.Mid (nLength);
        _fputts (SOURCE + sEntry + EOLN, fp);
      }
    POSITION pos = pParent->lstItems.GetHeadPosition ();
    CProjectItem *pItem;
    while (pos)
      {
        pItem = pParent->lstItems.GetNext (pos);
        SaveEdpItem (pProject, pItem, fp);
      }
    if (pParent->dwType & PI_GROUP)
      _fputts (END_GROUP EOLN, fp);
    else
      _fputts (END_FILE EOLN, fp);
    return true;
  }

bool CMyEdpProject::SaveEdp (CProject *pProject, LPCTSTR pszPath)
  {
    CWaitCursor wait;

    FILE *fp = _tfopen (pszPath, _T ("wt"));
    if (!fp)
      return false;

    _fputts (BEGIN_PROJECT EOLN, fp);
    POSITION pos = pProject->lstItems.GetHeadPosition ();
    CProjectItem *pItem;
    while (pos)
      {
        pItem = pProject->lstItems.GetNext (pos);
        if (pItem->dwType & PI_ROOT)
          SaveEdpItem (pProject, pItem, fp);
      }
    _fputts (END_PROJECT EOLN, fp);
    fclose (fp);
    return true;
  }

/////////////////////////////////////////////////////////////////////////////
#pragma warning ( default : 4711 )

⌨️ 快捷键说明

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