//Copyright (c) 1997-2000 Microsoft Corporation #ifndef _INC_ACCWIZ_H #define _INC_ACCWIZ_H #include "schemes.h" // For SCHEMEDATALOCAL #include "resource.h" // Helper function void LoadArrayFromStringTable(int nIdString, int *rgnValues, int *pnCountValues); // Macros used to save debug info to/from the INI file // JMC: HACK - Default to '1' for options!!!!!!!! #define GET_SAVED_INT(xxx) xxx = GetPrivateProfileInt(__TEXT("Options"), __TEXT(#xxx), 1, __TEXT("AccWiz.ini")) #define PUT_SAVED_INT(xxx) wsprintf(sz, __TEXT("%i"), xxx);WritePrivateProfileString(__TEXT("Options"), __TEXT(#xxx), sz, __TEXT("AccWiz.ini")) // This class contains the general options for the whole wizard class CAccWizOptions { public: CAccWizOptions() { } ~CAccWizOptions() { } void InitAccWizOptions() { OSVERSIONINFO osvi; ZeroMemory(&osvi, sizeof(osvi)); osvi.dwOSVersionInfoSize = sizeof(osvi); GetVersionEx(&osvi); m_bWin95 = (osvi.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS); m_nMinimalFontSize = -1; // This will be set by the welcome page /////////////////////////////////////////////// // Calculate globals that we need HDC hDC = GetDC(NULL); m_nLogPixelsY = GetDeviceCaps(hDC, LOGPIXELSY); ReleaseDC(NULL, hDC); /////////////////////////////////////////////// // Get the default char set for fonts TCHAR szCharSet[20]; if(LoadString(g_hInstDll,IDS_FONTCHARSET, szCharSet,sizeof(szCharSet)/sizeof(TCHAR))) { m_lfCharSet = (BYTE)_tcstoul(szCharSet,NULL,10); } else { m_lfCharSet = 0; // Default } /////////////////////////////////////////////// // Get the standard MS Sans Serif fonts // JMC: HACK - Free these resources int rgnStandardMSSansSerifFontSizes[] = {8, 10, 12, 14, 18, 24}; LOGFONT lf; ZeroMemory(&lf, sizeof(lf)); lf.lfCharSet = m_lfCharSet; LoadString(g_hInstDll, IDS_SYSTEMFONTNAME, lf.lfFaceName, ARRAYSIZE(lf.lfFaceName)); for(int i=0;i<6;i++) { lf.lfHeight = 0 - (int)((float)m_nLogPixelsY * (float)rgnStandardMSSansSerifFontSizes[i]/ (float)72 + (float).5); m_rgnStdMSSansSerifFonts[i] = CreateFontIndirect(&lf); // Create underlined version lf.lfUnderline = 1; m_rgnStdMSSansSerifFonts[i + 6] = CreateFontIndirect(&lf); lf.lfUnderline = 0; } // Store away original non-client metrics // Get original metrics GetNonClientMetrics(&m_ncmOrig, &m_lfIconOrig); // Load original Wiz Scheme settings m_schemeOriginal.LoadOriginal(); // Copy to the Preview scheme and to the current scheme m_schemePreview = m_schemeOriginal; m_schemeCurrent = m_schemeOriginal; // This is set by the welcome page, so that the second part knows to update it's check boxes. // The second page clears this flag m_bWelcomePageTouched = FALSE; // this is the default windows settings (for Win2K not necessarilly for Whistler) m_schemeWindowsDefault.SetToWindowsDefault(); #ifdef _DEBUG m_schemeOriginal.Dump(); #endif } void RestoreOriginalColorsToPreview() { memcpy(m_schemePreview.m_rgb, m_schemeOriginal.m_rgb, sizeof(m_schemePreview.m_rgb)); } void ApplyPreview() { m_schemeCurrent.ApplyChanges(m_schemePreview); } void ApplyOriginal() { m_schemeCurrent.ApplyChanges(m_schemeOriginal, &m_ncmOrig, &m_lfIconOrig); } void ApplyWindowsDefault(); BOOL m_bWelcomePageTouched; int m_nLogPixelsY; int m_nMinimalFontSize; HFONT GetClosestMSSansSerif(int nPointSize, BOOL bUnderlined = FALSE) { // For Underlined fonts, add '6' the the index int nOffset = bUnderlined?6:0; if(nPointSize <= 8) return m_rgnStdMSSansSerifFonts[0 + nOffset]; else if(nPointSize <= 10) return m_rgnStdMSSansSerifFonts[1 + nOffset]; else if(nPointSize <= 12) return m_rgnStdMSSansSerifFonts[2 + nOffset]; else if(nPointSize <= 14) return m_rgnStdMSSansSerifFonts[3 + nOffset]; else if(nPointSize <= 18) return m_rgnStdMSSansSerifFonts[4 + nOffset]; return m_rgnStdMSSansSerifFonts[5]; } void ReportChanges(HWND hwndChanges) { m_schemeCurrent.ReportChanges(m_schemeOriginal, hwndChanges); } BOOL m_bWin95; BYTE m_lfCharSet; WIZSCHEME m_schemePreview; WIZSCHEME m_schemeOriginal; protected: // Dialogs never modify these copies of the scheme WIZSCHEME m_schemeCurrent; WIZSCHEME m_schemeWindowsDefault; NONCLIENTMETRICS m_ncmOrig; LOGFONT m_lfIconOrig; HFONT m_rgnStdMSSansSerifFonts[6 * 2]; // 0-5 are for 8, 10, 12, 14, 18, 24. 6-11 are for the same things, but underlined friend class CWelcome2Pg; // TODO: HACK - This is only here to give CWelcome2Pg access to m_schemeCurrent }; // This variable will be accessible to any derived wizard page. // It contains information specific to this application extern CAccWizOptions g_Options; VOID WINAPI AccWiz_RunDllA(HWND hwnd, HINSTANCE hInstance, LPSTR pszCmdLine, INT nCmdShow); VOID WINAPI AccWiz_RunDllW(HWND hwnd, HINSTANCE hInstance, LPWSTR pszCmdLine, INT nCmdShow); #endif // _INC_ACCWIZ_H