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

📄 msdevwizardaw.cpp

📁 pwlib源码库
💻 CPP
字号:
// MsDevWizardaw.cpp : implementation file//#include "stdafx.h"#include "MsDevWizard.h"#include "MsDevWizardaw.h"#include "chooser.h"#include <comdef.h>#include <atlbase.h>#include <fstream.h>#include <string.h>#include <objmodel/bldauto.h>#ifdef _PSEUDO_DEBUG#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endif// This is called immediately after the custom AppWizard is loaded.  Initialize//  the state of the custom AppWizard here.void CMsDevWizardAppWiz::InitCustomAppWiz(){	// Create a new dialog chooser; CDialogChooser's constructor initializes	//  its internal array with pointers to the steps.	m_pChooser = new CDialogChooser;	// Set the maximum number of steps.	SetNumberOfSteps(LAST_DLG);	// TODO: Add any other custom AppWizard-wide initialization here.}static void MakeCustomBuild(const char * config, ostream & out){  out << "IF  \"$(CFG)\" == \"" << MsDevWizardaw.m_Dictionary["Root"] << " - Win32 " << config << "\"\n"         "\n"         "# Begin Custom Build - Building event log resources.\n"         "InputDir=.\n"         "IntDir=.\\Release\n"         "TargetName=" << MsDevWizardaw.m_Dictionary["Root"] << "\n"         "InputPath=.\\messages.mc\n"         "InputName=messages\n"         "\n"         "BuildCmds= \\\n"	 "\tmc -h $(IntDir) -r $(IntDir) $(InputPath) \\\n"	 "\techo 1 ICON $(InputDir)\\$(TargetName).ico >> $(IntDir)\\$(InputName).rc \\\n";  if (MsDevWizardaw.m_has_http)    out << "\techo RCINCLUDE $(InputDir)\\custom.cxx >> $(IntDir)\\$(InputName).rc \\\n";  out << "\trc -i$(IntDir) -fo$(IntDir)\\$(InputName).res $(IntDir)\\$(InputName).rc \\\n"         "\n"         "\n"         "\"$(IntDir)\\$(InputName).h\" : $(SOURCE) \"$(INTDIR)\" \"$(OUTDIR)\"\n"         "\t$(BuildCmds)\n"         "\n"         "\"$(IntDir)\\$(InputName).rc\" : $(SOURCE) \"$(INTDIR)\" \"$(OUTDIR)\"\n"         "\t$(BuildCmds)\n"         "\n"         "\"$(IntDir)\\MSG00001.bin\" : $(SOURCE) \"$(INTDIR)\" \"$(OUTDIR)\"\n"         "\t$(BuildCmds)\n"         "\n"         "\"$(IntDir)\\$(InputName).res\" : $(SOURCE) \"$(INTDIR)\" \"$(OUTDIR)\"\n"         "\t$(BuildCmds)\n"         "# End Custom Build\n\n";}static void MakeResourceBuild(const char * config, ostream & out){  out << "IF  \"$(CFG)\" == \"" << MsDevWizardaw.m_Dictionary["Root"] << " - Win32 " << config << "\"\n"         "\n"         "# Begin Custom Build - Building resources.\n"         "InputDir=.\n"         "IntDir=.\\Release\n"         "InputPath=.\\resources.prc\n"         "InputName=resources\n"         "\n"         "BuildCmds= \\\n"	 "\tpwrc -I \"$(Include)\" "                "-o $(IntDir)\\$(InputName).res "                "-b $(InputName) $(InputPath)\n"         "\n"         "\"$(InputDir)\\$(InputName).h\" : $(SOURCE) \"$(INTDIR)\" \"$(OUTDIR)\"\n"         "\t$(BuildCmds)\n"         "\n"         "\"$(InputDir)\\$(InputName).cxx\" : $(SOURCE) \"$(INTDIR)\" \"$(OUTDIR)\"\n"         "\t$(BuildCmds)\n"         "\n"         "\"$(IntDir)\\$(InputName).res\" : $(SOURCE) \"$(INTDIR)\" \"$(OUTDIR)\"\n"         "\t$(BuildCmds)\n"         "# End Custom Build\n\n";}// This is called just before the custom AppWizard is unloaded.void CMsDevWizardAppWiz::ExitCustomAppWiz(){  // Deallocate memory used for the dialog chooser  ASSERT(m_pChooser != NULL);  delete m_pChooser;  m_pChooser = NULL;  CString dsp_name = m_Dictionary["FULL_DIR_PATH"];  if (dsp_name[dsp_name.GetLength()-1] != '\\')    dsp_name += "\\";  dsp_name += m_Dictionary["Root"] + ".dsp";  CString dsp_name2 = dsp_name + "$";  ifstream in = dsp_name;  ofstream out = dsp_name2;  if (!in.is_open() || !out.is_open()) {    AfxMessageBox(IDS_PROJ_REWRITE);    return;  }  char line[1000];  while (!in.eof()) {    in.getline(line, sizeof(line));    if (strcmp(line, "# PROP BASE Use_MFC 2") == 0)      out << "# PROP BASE Use_MFC 0\n";    else if (strcmp(line, "# PROP Use_MFC 2") == 0)      out << "# PROP Use_MFC 0\n";    else if (strcmp(line, "SOURCE=.\\precompile.cxx") == 0)      out << line << "\n# ADD CPP /Yc\"precompile.h\"\n";    else if (strcmp(line, "SOURCE=.\\custom.cxx") == 0)      out << line << "\n# SUBTRACT CPP /YX /Yc /Yu\n";    else if (strcmp(line, "SOURCE=.\\messages.mc") == 0) {      out << line << "\n\n!";      MakeCustomBuild("Release", out);      out << "!ELSE";      MakeCustomBuild("Debug", out);      out << "!ENDIF\n\n";    }    else if (strcmp(line, "SOURCE=.\\resources.prc") == 0) {      out << "SOURCE=.\\resources.cxx\n"             "# End Source File\n"             "# Begin Source File\n"             "\n"          << line << "\n\n!";      MakeResourceBuild("Release", out);      out << "!ELSE";      MakeResourceBuild("Debug", out);      out << "!ENDIF\n\n";    }    else      out << line << '\n';  }  out.flush();  out.close();  in.close();  if (remove(dsp_name) < 0)    AfxMessageBox(IDS_PROJ_REWRITE);  else if (rename(dsp_name2, dsp_name) < 0)    AfxMessageBox(IDS_PROJ_REWRITE);}// This is called when the user clicks "Create..." on the New Project dialog//  or "Next" on one of the custom AppWizard's steps.CAppWizStepDlg* CMsDevWizardAppWiz::Next(CAppWizStepDlg* pDlg){	// Delegate to the dialog chooser	return m_pChooser->Next(pDlg);}// This is called when the user clicks "Back" on one of the custom//  AppWizard's steps.CAppWizStepDlg* CMsDevWizardAppWiz::Back(CAppWizStepDlg* pDlg){	// Delegate to the dialog chooser	return m_pChooser->Back(pDlg);}#import "ide\devbld.pkg"void CMsDevWizardAppWiz::CustomizeProject(IBuildProject* pProject){  CString c_settings = "/Yu\"precompile.h\" /W4 ";  CString l_settings = "comdlg32.lib winspool.lib wsock32.lib mpr.lib "                       "kernel32.lib user32.lib gdi32.lib shell32.lib advapi32.lib ";  if (!m_pwlib_dir.IsEmpty()) {    if (m_pwlib_dir[m_pwlib_dir.GetLength()-1] != '\\')      m_pwlib_dir += "\\";    c_settings += "/I \"" + m_pwlib_dir + "include\\pwlib\\mswin\" "                  "/I \"" + m_pwlib_dir + "include\\ptlib\\msos\" "                  "/I \"" + m_pwlib_dir + "include\" ";    l_settings += "/libpath:" + m_pwlib_dir + "lib ";  }  if (!m_has_gui && !m_is_service)    l_settings += " /subsystem:console";  // Needed to convert IBuildProject to the DSProjectSystem namespace  using namespace DSProjectSystem;  IBuildProjectPtr pProj;  pProj.Attach((DSProjectSystem::IBuildProject*)pProject, true);  IConfigurationsPtr pConfigs;  if (pProj->get_Configurations(&pConfigs) != S_OK) {    AfxMessageBox(IDS_PROJ_ERROR);    return;  }  long count;  if (pConfigs->get_Count(&count) != S_OK) {    AfxMessageBox(IDS_PROJ_ERROR);    return;  }  while (count > 0) {    COleVariant index = count;    IConfigurationPtr pConfig = pConfigs->Item(index);    BSTR name;    pConfig->get_Name(&name);    static _bstr_t debug_str = "Debug";    BOOL is_debug = wcsstr(name, debug_str) != NULL;    COleVariant reserved(0L, VT_ERROR);    reserved.scode = DISP_E_PARAMNOTFOUND;    static _bstr_t cl_exe = "cl.exe";    _bstr_t settings_bstr = "/D \"_AFXDLL\"";    if (pConfig->RemoveToolSettings(cl_exe, settings_bstr, reserved) != S_OK) {      AfxMessageBox(IDS_PROJ_ERROR);      return;    }    settings_bstr = c_settings;    if (pConfig->AddToolSettings(cl_exe, settings_bstr, reserved) != S_OK) {      AfxMessageBox(IDS_PROJ_ERROR);      return;    }    CString settings;    if (m_has_gui) {      settings = "pwclib";      if (is_debug) // Debug configuration        settings += "d";      settings += ".lib pwlib";      if (!m_use_dlls)        settings += "s";      if (is_debug) // Debug configuration        settings += "d";      settings += ".lib ";    }    settings += "ptclib";    if (is_debug) // Debug configuration      settings += "d";    settings += ".lib ptlib";    if (!m_use_dlls)      settings += "s";    if (is_debug) // Debug configuration      settings += "d";    settings += ".lib " + l_settings;    static _bstr_t link_exe = "link.exe";    settings_bstr = settings;    if (pConfig->AddToolSettings(link_exe, settings_bstr, reserved) != S_OK) {      AfxMessageBox(IDS_PROJ_ERROR);      return;    }    count--;  }}// Here we define one instance of the CMsDevWizardAppWiz class.  You can access//  m_Dictionary and any other public members of this class through the//  global MsDevWizardaw.CMsDevWizardAppWiz MsDevWizardaw;

⌨️ 快捷键说明

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