windows-nt/Source/XPSP1/NT/termsrv/reskit/tsver/exe/tsverui.cpp
2020-09-26 16:20:57 +08:00

167 lines
4.8 KiB
C++

/*++
Copyright (c) 1999 Microsoft Corporation
Module Name:
MessagePage.cpp
Abstract:
WinMain function of "TsVer.exe".
Author:
Sergey Kuzin (a-skuzin@microsoft.com) 09-August-1999
Environment:
Revision History:
--*/
#include "tsverui.h"
#include "resource.h"
HINSTANCE g_hInst;
TCHAR szKeyPath[MAX_LEN];
TCHAR szConstraintsKeyPath[MAX_LEN];
INT_PTR CALLBACK StartPageProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
INT_PTR CALLBACK CheckingPageProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
INT_PTR CALLBACK ConstraintsPageProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
INT_PTR CALLBACK MessagePageProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
INT_PTR CALLBACK FinishPageProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
///////////////////////////////////////////////////////////////////////////////
#ifdef _DEBUG
#include <crtdbg.h>
#endif _DEBUG
int WINAPI WinMain (HINSTANCE hinstExe, HINSTANCE hinstPrev,
LPSTR pszCmdLine, int nCmdShow)
{
#ifdef _DEBUG
//detecting memory leaks
// Get current flag
int tmpFlag = _CrtSetDbgFlag( _CRTDBG_REPORT_FLAG );
// Turn on leak-checking bit
tmpFlag |= _CRTDBG_LEAK_CHECK_DF;
// Set flag to the new value
_CrtSetDbgFlag( tmpFlag );
#endif _DEBUG
g_hInst = hinstExe;
LoadString (g_hInst, IDS_WINLOGON_KEY_PATH,
szKeyPath, sizeof (szKeyPath)/sizeof(TCHAR));
LoadString (g_hInst, IDS_CONSTRAINTS_KEY_PATH,
szConstraintsKeyPath, sizeof (szConstraintsKeyPath)/sizeof(TCHAR));
SHAREDWIZDATA wizdata;
ZeroMemory(&wizdata,sizeof(SHAREDWIZDATA));
PROPSHEETPAGE psp[5];
ZeroMemory(psp,sizeof(psp));
psp[0].dwSize=sizeof(PROPSHEETPAGE);
psp[0].dwFlags= PSP_HIDEHEADER ;
psp[0].hInstance=hinstExe;
psp[0].pszTemplate=MAKEINTRESOURCE(IDD_START);
psp[0].pfnDlgProc=StartPageProc;
psp[0].pszHeaderTitle=0;
psp[0].pszHeaderSubTitle=0;
psp[0].lParam=(LPARAM)&wizdata;
psp[1].dwSize=sizeof(PROPSHEETPAGE);
psp[1].dwFlags= PSP_USEHEADERSUBTITLE | PSP_USEHEADERTITLE ;
psp[1].hInstance=hinstExe;
psp[1].pszTemplate=MAKEINTRESOURCE(IDD_VERSION_CHECKING);
psp[1].pfnDlgProc=CheckingPageProc;
psp[1].pszHeaderTitle=MAKEINTRESOURCE(IDS_VERSION_CHECKING_TITLE);
psp[1].pszHeaderSubTitle=MAKEINTRESOURCE(IDS_VERSION_CHECKING_SUBTITLE);
psp[1].lParam=(LPARAM)&wizdata;
psp[2].dwSize=sizeof(PROPSHEETPAGE);
psp[2].dwFlags= PSP_USEHEADERSUBTITLE | PSP_USEHEADERTITLE ;
psp[2].hInstance=hinstExe;
psp[2].pszTemplate=MAKEINTRESOURCE(IDD_CONSTRAINTS);
psp[2].pfnDlgProc=ConstraintsPageProc;
psp[2].pszHeaderTitle=MAKEINTRESOURCE(IDS_CONSTRAINTS_TITLE);
psp[2].pszHeaderSubTitle=MAKEINTRESOURCE(IDS_CONSTRAINTS_SUBTITLE);
psp[2].lParam=(LPARAM)&wizdata;
psp[3].dwSize=sizeof(PROPSHEETPAGE);
psp[3].dwFlags= PSP_USEHEADERSUBTITLE | PSP_USEHEADERTITLE ;
psp[3].hInstance=hinstExe;
psp[3].pszTemplate=MAKEINTRESOURCE(IDD_MESSAGE_EDITOR);
psp[3].pfnDlgProc=MessagePageProc;
psp[3].pszHeaderTitle=MAKEINTRESOURCE(IDS_MESSAGE_EDITOR_TITLE);
psp[3].pszHeaderSubTitle=MAKEINTRESOURCE(IDS_MESSAGE_EDITOR_SUBTITLE);
psp[3].lParam=(LPARAM)&wizdata;
psp[4].dwSize=sizeof(PROPSHEETPAGE);
psp[4].dwFlags= PSP_HIDEHEADER ;
psp[4].hInstance=hinstExe;
psp[4].pszTemplate=MAKEINTRESOURCE(IDD_FINISH);
psp[4].pfnDlgProc=FinishPageProc;
psp[4].pszHeaderTitle=0;
psp[4].pszHeaderSubTitle=0;
psp[4].lParam=(LPARAM)&wizdata;
PROPSHEETHEADER psh;
ZeroMemory(&psh,sizeof(psh));
psh.dwSize=sizeof(PROPSHEETHEADER);
psh.dwFlags=PSH_WIZARD97 | PSH_HEADER | PSH_PROPSHEETPAGE |
PSH_WATERMARK;
psh.hInstance=hinstExe;
psh.nPages=5;
//psh.nStartPage=0;
psh.ppsp=psp;
psh.pszbmHeader=MAKEINTRESOURCE(IDB_HEADER);
psh.pszbmWatermark=MAKEINTRESOURCE(IDB_WATERMARK);
//show or don't show wellcome page
if (CheckForRegKey(HKEY_USERS, szConstraintsKeyPath, KeyName[NOWELLCOME])){
wizdata.bNoWellcome=TRUE;
psh.nStartPage=1;
}else{
wizdata.bNoWellcome=FALSE;
psh.nStartPage=0;
}
//Set up the font for the titles on the intro and ending pages
NONCLIENTMETRICS ncm = {0};
ncm.cbSize = sizeof(ncm);
SystemParametersInfo(SPI_GETNONCLIENTMETRICS, 0, &ncm, 0);
//Create the intro/end title font
LOGFONT TitleLogFont = ncm.lfMessageFont;
TitleLogFont.lfWeight = FW_BOLD;
lstrcpy(TitleLogFont.lfFaceName, TEXT("MS Shell Dlg"));
HDC hdc = GetDC(NULL); //gets the screen DC
INT FontSize = 12;
if(hdc == NULL) {
return(0);
}
TitleLogFont.lfHeight = 0 - GetDeviceCaps(hdc, LOGPIXELSY) * FontSize / 72;
wizdata.hTitleFont = CreateFontIndirect(&TitleLogFont);
ReleaseDC(NULL, hdc);
PropertySheet(&psh);
return(0);
}