Click here to Skip to main content
15,879,535 members
Articles / Programming Languages / C++

VC++7 to VC++6 Project Converter

Rate me:
Please Sign up or sign in to vote.
4.92/5 (204 votes)
22 Oct 20033 min read 1M   25.6K   247  
Automatically convert Visual C++ 7.0 projects back to Visual C++ 6.0 projects.
This tool automatically converts VC++7 projects back to VC++6 projects. Without this tool, you end up recreating your projects from scratch, which is a total waste of time, and prone to errors. In this post, you will find a list of scenarios where this tool is useful. You will also find out how to use it, what is converted and technical details.
#pragma once

/////////////////////////////////////////////////////////////////////////////////
//
// vcprojconfiguration class
//
// S.Rodriguez - Sept 2002
//
//
// purpose : fill class members with actual configuration data from the .vcproj file
//
//
//




class vcprojconfiguration
{
public:
	FindableArray General;
	FindableArray VCCLCompilerTool;
	FindableArray VCLibrarianTool;
	FindableArray VCLinkerTool;
	FindableArray VCResourceCompilerTool;
	FindableArray VCMidlTool;
	FindableArray VCBscMakeTool;
	FindableArray VCPreBuildEventTool;
	FindableArray VCPreLinkEventTool;
	FindableArray VCPostBuildEventTool;
	FindableArray VCCustomBuildTool;
	FindableArray VCNMakeTool;
	FindableArray VCDebugSettingsTool;


// Constructor
public:
	vcprojconfiguration();

// Accessors
	void setMasterProjConfigurations(vcprojconfiguration *p); // used for FileConfiguration
	CString getConfigName();
	BOOL hasVCConfigTool(CString &szToolName);


// Methods
	void fill(/*in*/IXMLDOMElement *p); // fill class members

	CString serializeCPPSymbols(BOOL bFileConfiguration=FALSE);
	CString serializeLinkerSymbols(BOOL bFileConfiguration=FALSE);
	CString serializeLibrarianSymbols(BOOL bFileConfiguration=FALSE);
	CString serializeResourceSymbols(BOOL bFileConfiguration=FALSE);
	CString serializeMidlSymbols(BOOL bFileConfiguration=FALSE);
	CString serializeBscMakeSymbols(BOOL bFileConfiguration=FALSE);
	void serializePreBuildCommands(/*out*/ArrayCString &output, BOOL bFileConfiguration=FALSE);
	void serializePreLinkCommands(/*out*/ArrayCString &output, BOOL bFileConfiguration=FALSE);
	void serializePostBuildCommands(/*out*/ArrayCString &output, BOOL bFileConfiguration=FALSE);
	void serializeCustomBuildCommands(/*out*/CString &szDescription, /*out*/ArrayCString &cmds, /*out*/ArrayCString &outputFiles, /*out*/ArrayCString &additionalDeps, BOOL bFileConfiguration=FALSE);


	// Helpers
protected:
	void fillFromAttributes(/*in*/IXMLDOMElement *p, /*out*/FindableArray &arrAttribs);
	void BSTR_to_CString(/*in*/BSTR bstr, /*out*/CString &s);
	void getAttribValue(/*in*/IXMLDOMElement *p,/*in*/char *szAttribName, /*out*/CString &szValue);
	void VARIANT_to_CString(/*in*/VARIANT &vt, /*out*/CString &s);
	void TokenizeString(/*in*/CString &szInput, char cToken, /*out*/ArrayCString &arrStrings);
	void TokenizeString(/*in*/CString &szInput, /*in*/CString &szTokenString, /*out*/ArrayCString &arrStrings);
	void UntokenizeString(/*in*/ArrayCString &arrStrings, char cToken, /*out*/CString &szOutput);
	CString ExpandMacros(/*in*/CString &szInputString);
	CString ReplaceMacros(/*in*/CString &szInputString, BOOL bReplaceBackslash=TRUE);

	// other class members
protected:
	vcprojconfiguration* m_cpParentConfigurations; // copy ptr
};


typedef CTemplateObjArray<vcprojconfiguration*> ConfigurationArray;

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.


Written By
France France
Addicted to reverse engineering. At work, I am developing business intelligence software in a team of smart people (independent software vendor).

Need a fast Excel generation component? Try xlsgen.

Comments and Discussions