#pragma once class CWizardSheet; #include "resource.h" #include "WelcomePage.h" #include "ImportOrExport.h" #include "SelectSite.h" #include "PackageConfig.h" #include "PostProcessAdd.h" #include "ExportSummary.h" #include "ExportProgress.h" #include "ExportFinishPage.h" #include "LoadPackage.h" #include "PackageInfo.h" #include "ImportOptions.h" #include "ImportProgress.h" #include "ImportFinishPage.h" class CWizardSheet : public CPropertySheetImpl { public: typedef THandle TGdiObjHandle; typedef HRESULT (__stdcall *PFN_AUTOCOMPLETE)( HWND, DWORD ); CWizardSheet() : m_pageWelcome( this ), m_pageImportOrExport( this ), m_pageSelectSite( this ), m_pagePkgCfg( this ), m_pagePostProcess( this ), m_pageExportSummary( this ), m_pageExportProgress( this ), m_pageExportFinish( this ), m_pageLoadPkg( this ), m_pagePkgInfo( this ), m_pageImpOpt( this ), m_pageImportProgress( this ), m_PageImportFinish( this ) { // Create the font for the wizard title texts and for the text of tipd NONCLIENTMETRICS ncm = { 0 }; ncm.cbSize = sizeof( ncm ); ::SystemParametersInfo( SPI_GETNONCLIENTMETRICS, 0, &ncm, 0 ); LOGFONTW TitleLogFont = ncm.lfMessageFont; TitleLogFont.lfWeight = FW_BOLD; ::wcscpy( TitleLogFont.lfFaceName, L"Verdana" ); // Create the tips font m_fontBold = ::CreateFontIndirect( &TitleLogFont ); // Create the intro/end title font HDC hDC = ::GetDC(NULL); // Gets the screen DC TitleLogFont.lfHeight = -::MulDiv( 12, ::GetDeviceCaps(hDC, LOGPIXELSY), 72); m_fontTitles = ::CreateFontIndirect( &TitleLogFont ); ::ReleaseDC( NULL, hDC ); hDC = NULL; // Adjust the wizard style SetWatermark( MAKEINTRESOURCE( IDB_WZ_SIDE ) ); SetHeader( MAKEINTRESOURCE( IDB_BITMAP1 ) ); // Add the pages AddPage( m_pageWelcome ); AddPage( m_pageImportOrExport ); AddPage( m_pageSelectSite ); AddPage( m_pagePkgCfg ); AddPage( m_pagePostProcess ); AddPage( m_pageExportSummary ); AddPage( m_pageExportProgress ); AddPage( m_pageExportFinish ); AddPage( m_pageLoadPkg ); AddPage( m_pagePkgInfo ); AddPage( m_pageImpOpt ); AddPage( m_pageImportProgress ); AddPage( m_PageImportFinish ); // We will use the shell autocomplete for most of the file/path edit controls // Sicne this function requires IE5, we will load it dynamicaly m_shShellLib = ::LoadLibraryW( L"Shlwapi.dll" ); if ( m_shShellLib.IsValid() ) { m_pfnAutocomplete = reinterpret_cast( ::GetProcAddress( m_shShellLib.get(), "SHAutoComplete" ) ); if ( NULL == m_pfnAutocomplete ) { m_shShellLib.Close(); } } } void SetAutocomplete( HWND hwnd, DWORD dwFlags ) { _ASSERT( hwnd != NULL ); if ( m_pfnAutocomplete != NULL ) { VERIFY( SUCCEEDED( m_pfnAutocomplete( hwnd, dwFlags ) ) ); } } public: TGdiObjHandle m_fontTitles; TGdiObjHandle m_fontBold; TLibHandle m_shShellLib; PFN_AUTOCOMPLETE m_pfnAutocomplete; // The shell autocomplete API CWelcomePage m_pageWelcome; CImportOrExport m_pageImportOrExport; CSelectSite m_pageSelectSite; CPackageConfig m_pagePkgCfg; CPostProcessAdd m_pagePostProcess; CExportSummary m_pageExportSummary; CExportProgress m_pageExportProgress; CExportFinishPage m_pageExportFinish; CLoadPackage m_pageLoadPkg; CPackageInfo m_pagePkgInfo; CImportOptions m_pageImpOpt; CImportProgress m_pageImportProgress; CImportFinishPage m_PageImportFinish; };