msmakprj.cpp

来自「一个完整的编辑器的代码(很值得参考」· C++ 代码 · 共 81 行

CPP
81
字号

#include "stdafx.h"
#include "editcmd.h"
#include "resource.h"
#include "msmakprj.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 (CMsMakProject, CProject)

CMsMakProject::CMsMakProject ()
  {
  }

bool freadln (FILE *fp, LPTSTR pszLine, size_t nSize);

#define SOURCE _T ("SOURCE=")
#define SOURCE_LEN 7

bool CMsMakProject::Open (LPCTSTR pszPath)
  {
    CWaitCursor wait;

    if (!FileExist (pszPath))
      return false;

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

    TCHAR szLine[256], *pszLine;
    int nLine;
    bool bEoln;

    CProjectItem *pNew;

    do
      {
        _fgetts (szLine, sizeof (szLine), fp);
        nLine = _tcslen (szLine);
        bEoln = szLine[nLine - 1] == _T ('\n');
        if (bEoln)
          szLine[nLine-- - 1] = _T ('\0');
        if (!_tcsnicmp (szLine, SOURCE, SOURCE_LEN))
          {
            pNew = new CProjectItem;
            szLine[nLine - 1] = _T ('\0');
            pszLine = szLine + SOURCE_LEN;
            pszLine = _tcsncmp (pszLine, _T (".\\"), 2) ? pszLine : pszLine + 2;
            pNew->sPath = pszLine;
            pNew->sMidPath = _T ("");
            pNew->dwType = PI_FILE|PI_ROOT;
            lstItems.AddTail (pNew);
          }
        if (!bEoln && !freadln (fp, szLine, sizeof (szLine)) || feof (fp))
          break;
      }
    while (!feof (fp));

    fclose (fp);
    sPath = pszPath;
    return true;
  }

bool CMsMakProject::Save (LPCTSTR pszPath)
  {
    AfxMessageBox (_T ("Not implemented yet."));
    return false;
  }

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

⌨️ 快捷键说明

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