X-Git-Url: https://git.reactos.org/?p=reactos.git;a=blobdiff_plain;f=reactos%2Fsubsys%2Fsystem%2Fvmwinst%2Fvmwinst.c;h=23309f6e2b7178233ccebca6d97994b208d4743c;hp=3af6cbdc0a2c0c6e7495c6c179210bf95f88c790;hb=b331ffc1b7a8ef84ceeb090a2d30a7dce5668825;hpb=ecc146295928f7b23bff87b03303db4c4e66086b diff --git a/reactos/subsys/system/vmwinst/vmwinst.c b/reactos/subsys/system/vmwinst/vmwinst.c index 3af6cbdc0a2..23309f6e2b7 100644 --- a/reactos/subsys/system/vmwinst/vmwinst.c +++ b/reactos/subsys/system/vmwinst/vmwinst.c @@ -24,6 +24,7 @@ * PROJECT: ReactOS VMware(r) driver installation utility * FILE: subsys/system/vmwinst/vmwinst.c * PROGRAMMERS: Thomas Weidenmueller (w3seek@users.sourceforge.net) + * Klemens Friedl (frik85@hotmail.com) */ #include #include @@ -132,6 +133,30 @@ FileExists(WCHAR *Path, WCHAR *File) return TRUE; } +static VOID +CenterWindow(HWND hWnd) +{ + HWND hWndParent; + RECT rcParent; + RECT rcWindow; + + hWndParent = GetParent(hWnd); + if (hWndParent == NULL) + hWndParent = GetDesktopWindow(); + + GetWindowRect(hWndParent, &rcParent); + GetWindowRect(hWnd, &rcWindow); + + SetWindowPos(hWnd, + HWND_TOP, + ((rcParent.right - rcParent.left) - (rcWindow.right - rcWindow.left)) / 2, + ((rcParent.bottom - rcParent.top) - (rcWindow.bottom - rcWindow.top)) / 2, + 0, + 0, + SWP_NOSIZE); +} + + /* Copy file */ BOOL InstallFile(WCHAR *Destination, WCHAR *File) @@ -383,6 +408,12 @@ PageWelcomeProc( { case WM_NOTIFY: { + HWND hwndControl; + + /* Center the wizard window */ + hwndControl = GetParent(hwndDlg); + CenterWindow (hwndControl); + LPNMHDR pnmh = (LPNMHDR)lParam; switch(pnmh->code) { @@ -397,6 +428,7 @@ PageWelcomeProc( { if(!EnableVmwareDriver(FALSE, FALSE, TRUE)) { + WCHAR Msg[1024]; LoadString(hAppInstance, IDS_FAILEDTOACTIVATEDRIVER, Msg, sizeof(Msg) / sizeof(WCHAR)); MessageBox(GetParent(hwndDlg), Msg, NULL, MB_ICONWARNING); @@ -728,6 +760,12 @@ PageConfigProc( } case WM_NOTIFY: { + HWND hwndControl; + + /* Center the wizard window */ + hwndControl = GetParent(hwndDlg); + CenterWindow (hwndControl); + LPNMHDR pnmh = (LPNMHDR)lParam; switch(pnmh->code) { @@ -969,33 +1007,92 @@ PageDoUninstallProc( static LONG CreateWizard(VOID) { - PROPSHEETPAGE psp[8]; PROPSHEETHEADER psh; + HPROPSHEETPAGE ahpsp[8]; + PROPSHEETPAGE psp; WCHAR Caption[1024]; LoadString(hAppInstance, IDS_WIZARD_NAME, Caption, sizeof(Caption) / sizeof(TCHAR)); - - ZeroMemory(&psh, sizeof(PROPSHEETHEADER)); + + /* Create the Welcome page */ + ZeroMemory (&psp, sizeof(PROPSHEETPAGE)); + psp.dwSize = sizeof(PROPSHEETPAGE); + psp.dwFlags = PSP_DEFAULT | PSP_HIDEHEADER; + psp.hInstance = hAppInstance; + psp.pfnDlgProc = PageWelcomeProc; + psp.pszTemplate = MAKEINTRESOURCE(IDD_WELCOMEPAGE); + ahpsp[0] = CreatePropertySheetPage(&psp); + + /* Create the INSERT_VMWARE_TOOLS page */ + psp.dwFlags = PSP_DEFAULT | PSP_USEHEADERTITLE | PSP_USEHEADERSUBTITLE; + psp.pszHeaderTitle = MAKEINTRESOURCE(IDD_INSERT_VMWARE_TOOLSTITLE); + psp.pszHeaderSubTitle = MAKEINTRESOURCE(IDD_INSERT_VMWARE_TOOLSSUBTITLE); + psp.pszTemplate = MAKEINTRESOURCE(IDD_INSERT_VMWARE_TOOLS); + psp.pfnDlgProc = PageInsertDiscProc; + ahpsp[1] = CreatePropertySheetPage(&psp); + + /* Create the INSTALLING_VMWARE_TOOLS page */ + psp.dwFlags = PSP_DEFAULT | PSP_USEHEADERTITLE | PSP_USEHEADERSUBTITLE; + psp.pszHeaderTitle = MAKEINTRESOURCE(IDD_INSTALLING_VMWARE_TOOLSTITLE); + psp.pszHeaderSubTitle = MAKEINTRESOURCE(IDD_INSTALLING_VMWARE_TOOLSSUBTITLE); + psp.pszTemplate = MAKEINTRESOURCE(IDD_INSTALLING_VMWARE_TOOLS); + psp.pfnDlgProc = PageInstallingProc; + ahpsp[2] = CreatePropertySheetPage(&psp); + + /* Create the CONFIG page */ + psp.dwFlags = PSP_DEFAULT | PSP_USEHEADERTITLE | PSP_USEHEADERSUBTITLE; + psp.pszHeaderTitle = MAKEINTRESOURCE(IDD_CONFIGTITLE); + psp.pszHeaderSubTitle = MAKEINTRESOURCE(IDD_CONFIGSUBTITLE); + psp.pfnDlgProc = PageConfigProc; + psp.pszTemplate = MAKEINTRESOURCE(IDD_CONFIG); + ahpsp[3] = CreatePropertySheetPage(&psp); + + /* Create the INSTALLATION_FAILED page */ + psp.dwFlags = PSP_DEFAULT | PSP_USEHEADERTITLE | PSP_USEHEADERSUBTITLE; + psp.pszHeaderTitle = MAKEINTRESOURCE(IDD_INSTALLATION_FAILEDTITLE); + psp.pszHeaderSubTitle = MAKEINTRESOURCE(IDD_INSTALLATION_FAILEDSUBTITLE); + psp.pfnDlgProc = PageInstallFailedProc; + psp.pszTemplate = MAKEINTRESOURCE(IDD_INSTALLATION_FAILED); + ahpsp[4] = CreatePropertySheetPage(&psp); + + /* Create the CHOOSEACTION page */ + psp.dwFlags = PSP_DEFAULT | PSP_USEHEADERTITLE | PSP_USEHEADERSUBTITLE; + psp.pszHeaderTitle = MAKEINTRESOURCE(IDD_CHOOSEACTIONTITLE); + psp.pszHeaderSubTitle = MAKEINTRESOURCE(IDD_CHOOSEACTIONSUBTITLE); + psp.pfnDlgProc = PageChooseActionProc; + psp.pszTemplate = MAKEINTRESOURCE(IDD_CHOOSEACTION); + ahpsp[5] = CreatePropertySheetPage(&psp); + + /* Create the SELECTDRIVER page */ + psp.dwFlags = PSP_DEFAULT | PSP_USEHEADERTITLE | PSP_USEHEADERSUBTITLE; + psp.pszHeaderTitle = MAKEINTRESOURCE(IDD_SELECTDRIVERTITLE); + psp.pszHeaderSubTitle = MAKEINTRESOURCE(IDD_SELECTDRIVERSUBTITLE); + psp.pfnDlgProc = PageSelectDriverProc; + psp.pszTemplate = MAKEINTRESOURCE(IDD_SELECTDRIVER); + ahpsp[6] = CreatePropertySheetPage(&psp); + + /* Create the DOUNINSTALL page */ + psp.dwFlags = PSP_DEFAULT | PSP_USEHEADERTITLE | PSP_USEHEADERSUBTITLE; + psp.pszHeaderTitle = MAKEINTRESOURCE(IDD_DOUNINSTALLTITLE); + psp.pszHeaderSubTitle = MAKEINTRESOURCE(IDD_DOUNINSTALLSUBTITLE); + psp.pfnDlgProc = PageDoUninstallProc; + psp.pszTemplate = MAKEINTRESOURCE(IDD_DOUNINSTALL); + ahpsp[7] = CreatePropertySheetPage(&psp); + + /* Create the property sheet */ psh.dwSize = sizeof(PROPSHEETHEADER); - psh.dwFlags = PSH_PROPSHEETPAGE | PSH_WIZARD97 | PSH_WATERMARK | PSH_HEADER; - psh.hwndParent = NULL; + psh.dwFlags = PSH_WIZARD97 | PSH_WATERMARK | PSH_HEADER; psh.hInstance = hAppInstance; - psh.hIcon = 0; - psh.pszCaption = Caption; + psh.hwndParent = NULL; psh.nPages = 7; psh.nStartPage = (StartVMwConfigWizard ? 5 : 0); - psh.ppsp = psp; + psh.phpage = ahpsp; psh.pszbmWatermark = MAKEINTRESOURCE(IDB_WATERMARK); psh.pszbmHeader = MAKEINTRESOURCE(IDB_HEADER); - - InitPropSheetPage(&psp[0], IDD_WELCOMEPAGE, PSP_HIDEHEADER, PageWelcomeProc); - InitPropSheetPage(&psp[1], IDD_INSERT_VMWARE_TOOLS, PSP_USEHEADERTITLE | PSP_USEHEADERSUBTITLE, PageInsertDiscProc); - InitPropSheetPage(&psp[2], IDD_INSTALLING_VMWARE_TOOLS, PSP_USEHEADERTITLE | PSP_USEHEADERSUBTITLE, PageInstallingProc); - InitPropSheetPage(&psp[3], IDD_CONFIG, PSP_USEHEADERTITLE | PSP_USEHEADERSUBTITLE, PageConfigProc); - InitPropSheetPage(&psp[4], IDD_INSTALLATION_FAILED, PSP_USEHEADERTITLE | PSP_USEHEADERSUBTITLE, PageInstallFailedProc); - InitPropSheetPage(&psp[5], IDD_CHOOSEACTION, PSP_USEHEADERTITLE | PSP_USEHEADERSUBTITLE, PageChooseActionProc); - InitPropSheetPage(&psp[6], IDD_SELECTDRIVER, PSP_USEHEADERTITLE | PSP_USEHEADERSUBTITLE, PageSelectDriverProc); - InitPropSheetPage(&psp[7], IDD_DOUNINSTALL, PSP_USEHEADERTITLE | PSP_USEHEADERSUBTITLE, PageDoUninstallProc); + + /* Display the wizard */ + PropertySheet(&psh); + return (LONG)(PropertySheet(&psh) != -1); } @@ -1006,6 +1103,7 @@ WinMain(HINSTANCE hInstance, LPSTR lpszCmdLine, int nCmdShow) { + LPTOP_LEVEL_EXCEPTION_FILTER OldHandler; int Version; WCHAR *lc; @@ -1014,7 +1112,7 @@ WinMain(HINSTANCE hInstance, /* Setup our exception "handler" ;-) */ OldHandler = SetUnhandledExceptionFilter(ExceptionHandler); - + if(!DetectVMware(&Version)) { ExitProcess(1); @@ -1044,7 +1142,7 @@ WinMain(HINSTANCE hInstance, /* Show the wizard */ CreateWizard(); - + return 2; }