ZAP.H
资源名称:MSDN_VC98.zip [点击查看]
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:4k
源码类别:
Windows编程
开发平台:
Visual C++
- // zap.h : declaration of the CZap class. This class handles zapping the files
- // of a project off of which we're basing the generated custom
- // AppWizard The files are zapped into templates used by the generated
- // custom AppWizard. Class and file names from the original project
- // are "macroized" so that the generated custom AppWizard will create
- // new projects with class and file names derived from the new
- // projects' names, rather than from the original project's name.
- //
- // Copyright (c) 1985-1998, Microsoft Corporation. All rights reserved.
- //
- #ifndef __ZAP_H__
- #define __ZAP_H__
- // Each ZRDRootType represents a string derived from the original project
- // name.
- #define NUM_ROOT_TYPES 10
- enum ZRDRootType
- {
- ZRD_ROOT,
- ZRD_ROOT_UPR,
- ZRD_SAFE_ROOT,
- ZRD_CLASS,
- ZRD_FILEBASE,
- ZRD_DOC,
- ZRD_DOC_UPR,
- ZRD_MAC_TYPE,
- ZRD_R_FILE,
- ZRD_R_FILE_UPR,
- };
- // Each instance of this structure contains a recipe for matching one
- // string in the original project, and replacing it with a string
- // to be put in the generated custom AppWizard's templates.
- struct ZapRawData
- {
- // Strings composing item to match
- LPCTSTR lpszPre;
- ZRDRootType nRootType;
- LPCTSTR lpszPost;
- // Strings to replace it with
- LPCTSTR lpszReplace[2];
- };
- class OutputStream;
- // There is only one CZap instantiated at a time. It corresponds to the
- // project off of which we're basing the custom AppWizard. It's capable of
- // macroizing ("zapping") individual filenames (ZapFileName) and
- // template-izing ("zapping") entire files (ZapFile).
- class CZap
- {
- public:
- CZap()
- { m_hFile = NULL; m_hMapping = NULL; m_pStrMatches = NULL; m_bBinary = FALSE; m_posTplName = NULL; }
- ~CZap();
- void DefineGeneratedNewprojInfMacro()
- { DefineStringMacro(_T("GENERATED_NEWPROJ_INF_FILES"), m_strGeneratedNewProjInfo); }
- LPCTSTR LoadFile(LPCTSTR lpszResource, DWORD& dwSize);
- void ZapFile(LPCTSTR lpszInput, DWORD dwSize, OutputStream* pOutput);
- void ZapFileName(LPCTSTR lpszFileName, CString& rStrZappedFile, int iReplace = 0);
- void UnloadFile();
- void SetRoot(LPCTSTR lpszDir, LPCTSTR lpszRoot);
- protected:
- void InitMatches();
- void FreeMatches();
- void ZapLine(CString& strLine, int iReplace = 0);
- void AddToNewProjInf();
- BOOL m_bBinary; // Is the file we've loaded binary?
- HANDLE m_hFile; // Handle to file we're currently zapping
- HANDLE m_hMapping; // Handle to memory-mapping of that file
- LPCTSTR m_lpszFile; // Pointer to view of file mapped to memory
- CString m_strRoot; // Remembers name of project; used for matching
- // strings to replace
- POSITION m_posTplName; // Current POSITION in the TemplateNames CStringList.
- CString m_strRootDir; // Remembers root directory of original project;
- // used to preserve nesting from original project
- // files to projects generated by the custom
- // AppWizard we're generating
- CString m_strSubdir; // Nesting level of file we're currently zapping.
- CString m_strFile; // Name of file we're currently zapping
- CString m_strBaseFileName; // Base name (no path/ext) of that file
- CString m_strFileExt; // Extension of that file
- CString m_strGeneratedNewProjInfo; // Value to set "GENERATED_NEWPROJ_INF_FILES"
- // macro to.
- CString* m_pStrMatches; // Array of strings to search for when zapping a
- // file. The entries correspond 1-to-1 with
- // entries of the zrdGeneral[] array defined
- // in zap.cpp
- };
- #endif //__ZAP_H__