windows-nt/Source/XPSP1/NT/shell/tools/extwiz/extaw.cpp
2020-09-26 16:20:57 +08:00

116 lines
3.2 KiB
C++

// Extensionsaw.cpp : implementation file
//
#include "stdafx.h"
#include "Ext.h"
#include "Extaw.h"
#include "chooser.h"
#ifdef _PSEUDO_DEBUG
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
// This is called immediately after the custom AppWizard is loaded. Initialize
// the state of the custom AppWizard here.
void CExtensionsAppWiz::InitCustomAppWiz()
{
GUID guidTemp;
WCHAR wszGUID[50];
_pChooser = new CDialogChooser;
SetNumberOfSteps(2);
// Inform AppWizard that we're making a DLL.
m_Dictionary[_T("PROJTYPE_DLL")] = _T("1");
// Set template macros based on the project name entered by the user.
// Get value of $$root$$ (already set by AppWizard)
CString strRoot;
m_Dictionary.Lookup(_T("root"), strRoot);
// Set value of $$Doc$$, $$DOC$$
CString strDoc = strRoot.Left(6);
m_Dictionary[_T("Doc")] = strDoc;
strDoc.MakeUpper();
m_Dictionary[_T("DOC")] = strDoc;
// Set value of $$MAC_TYPE$$
strRoot = strRoot.Left(4);
int nLen = strRoot.GetLength();
if (strRoot.GetLength() < 4)
{
CString strPad(_T(' '), 4 - nLen);
strRoot += strPad;
}
strRoot.MakeUpper();
m_Dictionary[_T("MAC_TYPE")] = strRoot;
if (SUCCEEDED(CoCreateGuid(&guidTemp)))
{
StringFromGUID2(guidTemp, wszGUID, ARRAYSIZE(wszGUID));
Extensionsaw.m_Dictionary[TEXT("LibGUID")] = StripCurly(wszGUID);
}
}
// This is called just before the custom AppWizard is unloaded.
void CExtensionsAppWiz::ExitCustomAppWiz()
{
if (_pChooser)
{
delete _pChooser;
_pChooser = NULL;
}
}
// This is called when the user clicks "Create..." on the New Project dialog
CAppWizStepDlg* CExtensionsAppWiz::Next(CAppWizStepDlg* pDlg)
{
return _pChooser->Next(pDlg);
}
// This is called when the user clicks "Back" on one of the custom
// AppWizard's steps.
CAppWizStepDlg* CExtensionsAppWiz::Back(CAppWizStepDlg* pDlg)
{
// Delegate to the dialog chooser
return _pChooser->Back(pDlg);
}
void CExtensionsAppWiz::CustomizeProject(IBuildProject* pProject)
{
// TODO: Add code here to customize the project. If you don't wish
// to customize project, you may remove this virtual override.
// This is called immediately after the default Debug and Release
// configurations have been created for each platform. You may customize
// existing configurations on this project by using the methods
// of IBuildProject and IConfiguration such as AddToolSettings,
// RemoveToolSettings, and AddCustomBuildStep. These are documented in
// the Developer Studio object model documentation.
// WARNING!! IBuildProject and all interfaces you can get from it are OLE
// COM interfaces. You must be careful to release all new interfaces
// you acquire. In accordance with the standard rules of COM, you must
// NOT release pProject, unless you explicitly AddRef it, since pProject
// is passed as an "in" parameter to this function. See the documentation
// on CCustomAppWiz::CustomizeProject for more information.
}
// Here we define one instance of the CExtensionsAppWiz class. You can access
// m_Dictionary and any other public members of this class through the
// global Extensionsaw.
CExtensionsAppWiz Extensionsaw;
CString StripCurly(CString str)
{
return str.Mid(1, str.GetLength() - 2);
}