/***************************************************************************** * * $Workfile: NT5UIMgr.cpp $ * * Copyright (C) 1997 Hewlett-Packard Company. * Copyright (c) 1997 Microsoft Corporation. * All rights reserved. * * 11311 Chinden Blvd. * Boise, Idaho 83714 * *****************************************************************************/ /* * Author: Becky Jacobsen */ #include "precomp.h" #include "TCPMonUI.h" #include "UIMgr.h" #include "InptChkr.h" #include "NT5UIMgr.h" #include "Prsht.h" #include "resource.h" // includes for ConfigPort #include "DevPort.h" #include "CfgPort.h" #include "CfgAll.h" // includes for AddPort #include "AddWelcm.h" #include "AddGetAd.h" #include "AddMInfo.h" #include "AddMulti.h" #include "AddDone.h" // NOTICE-DavePr@2002/05/27 // remove STRICT_DLGPROC once printscan remove NO_STRICT from sources files // Win64 works better relying on strict typing rather than serendipity. // typedef INT_PTR (CALLBACK* STRICT_DLGPROC)(HWND, UINT, WPARAM, LPARAM); static void FillInPropertyPage( PROPSHEETPAGE* psp, // a pointer to the structure to be filled in. int idDlg, // the id of the dialog template LPTSTR pszProc, // Title of the dialog. LPTSTR pszHeaderTitle, // Title displayed in the header. LPTSTR pszHeaderSubTitle, // SubTitle displayed in the header. DWORD dwFlags, // Flags used by the page. STRICT_DLGPROC pfnDlgProc, // dialog procedure that handles window messages. LPARAM lParam); // data that will appear in the lParam field of the struct passed to the dialog procedure. // // FUNCTION: CNT5UIManager // // PURPOSE: Constructor // CNT5UIManager::CNT5UIManager() { } // Constructor // // FUNCTION: AddPortUI // // PURPOSE: Main function called when the User Interface for adding a port is called. // DWORD CNT5UIManager::AddPortUI(HWND hWndParent, HANDLE hXcvPrinter, TCHAR pszServer[], TCHAR sztPortName[]) { INT_PTR iReturnVal; PROPSHEETPAGE psp[MaxNumAddPages]; PROPSHEETHEADER psh; PORT_DATA_1 PortData; ADD_PARAM_PACKAGE Params; TCHAR sztPropSheetTitle[MAX_TITLE_LENGTH]; TCHAR sztWelcomePageTitle[MAX_TITLE_LENGTH]; TCHAR sztAddPortPageTitle[MAX_TITLE_LENGTH]; TCHAR sztAddPortHeaderTitle[MAX_TITLE_LENGTH]; TCHAR sztAddPortHeaderSubTitle[MAX_TITLE_LENGTH]; TCHAR sztMoreInfoPageTitle[MAX_TITLE_LENGTH]; TCHAR sztMoreInfoHeaderTitle[MAX_TITLE_LENGTH]; TCHAR sztMoreInfoHeaderSubTitle[MAX_TITLE_LENGTH]; TCHAR sztMultiPortPageTitle[MAX_TITLE_LENGTH]; TCHAR sztMultiPortHeaderTitle[MAX_TITLE_LENGTH]; TCHAR sztMultiPortHeaderSubTitle[MAX_TITLE_LENGTH]; TCHAR sztSummaryPageTitle[MAX_TITLE_LENGTH]; memset(&PortData, 0, sizeof(PortData)); PortData.dwVersion = 1; Params.pData = &PortData; Params.hXcvPrinter = hXcvPrinter; Params.UIManager = this; Params.dwLastError = NO_ERROR; if (pszServer != NULL) { lstrcpyn(Params.pszServer, pszServer, MAX_NETWORKNAME_LEN); } else { Params.pszServer[0] = '\0'; } if (sztPortName != NULL) { lstrcpyn(Params.sztPortName, sztPortName, MAX_PORTNAME_LEN); } else { Params.sztPortName[0] = '\0'; } // NOTICE-DavePr@2002/05/27 // g_hInstance is linked to what? // LoadString(g_hInstance, IDS_STRING_ADDPORT_TITLE, sztWelcomePageTitle, MAX_TITLE_LENGTH); LoadString(g_hInstance, IDS_STRING_ADDPORT_TITLE, sztAddPortPageTitle, MAX_TITLE_LENGTH); LoadString(g_hInstance, IDS_STRING_ADDPORT_HEADER, sztAddPortHeaderTitle, MAX_TITLE_LENGTH); LoadString(g_hInstance, IDS_STRING_ADDPORT_SUBTITLE, sztAddPortHeaderSubTitle, MAX_SUBTITLE_LENGTH); LoadString(g_hInstance, IDS_STRING_ADDPORT_TITLE, sztMoreInfoPageTitle, MAX_TITLE_LENGTH); LoadString(g_hInstance, IDS_STRING_MOREINFO_HEADER, sztMoreInfoHeaderTitle, MAX_TITLE_LENGTH); LoadString(g_hInstance, IDS_STRING_MOREINFO_SUBTITLE, sztMoreInfoHeaderSubTitle, MAX_SUBTITLE_LENGTH); LoadString(g_hInstance, IDS_STRING_ADDPORT_TITLE, sztMultiPortPageTitle, MAX_TITLE_LENGTH); LoadString(g_hInstance, IDS_MULTIPORT_HEADER, sztMultiPortHeaderTitle, MAX_TITLE_LENGTH); LoadString(g_hInstance, IDS_MULTIPORT_SUBTITLE, sztMultiPortHeaderSubTitle, MAX_SUBTITLE_LENGTH); LoadString(g_hInstance, IDS_STRING_ADDPORT_TITLE, sztSummaryPageTitle, MAX_TITLE_LENGTH); FillInPropertyPage( &psp[0], IDD_WELCOME_PAGE, sztWelcomePageTitle, sztWelcomePageTitle, NULL, PSP_HIDEHEADER, WelcomeDialog, (LPARAM)&Params); FillInPropertyPage( &psp[1], IDD_DIALOG_ADDPORT, sztAddPortPageTitle, sztAddPortHeaderTitle, sztAddPortHeaderSubTitle, 0, GetAddressDialog, (LPARAM)&Params); FillInPropertyPage( &psp[2], IDD_DIALOG_MORE_INFO, sztMoreInfoPageTitle, sztMoreInfoHeaderTitle, sztMoreInfoHeaderSubTitle, 0, MoreInfoDialog, (LPARAM)&Params); FillInPropertyPage( &psp[3], IDD_DIALOG_MULTIPORT, sztMultiPortHeaderTitle, sztMultiPortHeaderTitle, sztMultiPortHeaderSubTitle, 0, MultiPortDialog, (LPARAM)&Params); FillInPropertyPage( &psp[4], IDD_DIALOG_SUMMARY, sztSummaryPageTitle, NULL, NULL, PSP_HIDEHEADER, SummaryDialog, (LPARAM)&Params); LoadString(g_hInstance, IDS_STRING_CONFIG_TITLE, sztPropSheetTitle, MAX_TITLE_LENGTH); psh.dwSize = sizeof(PROPSHEETHEADER); psh.hInstance = g_hInstance; psh.dwFlags = PSH_WIZARD | PSH_PROPSHEETPAGE | PSH_WIZARD97 | PSH_WATERMARK | PSH_HEADER | PSH_STRETCHWATERMARK; psh.hwndParent = hWndParent; psh.pszCaption = sztPropSheetTitle; psh.nPages = sizeof(psp) / sizeof(PROPSHEETPAGE); psh.nStartPage = 0; psh.ppsp = psp; psh.pszbmWatermark = MAKEINTRESOURCE( IDB_WATERMARK ); psh.pszbmHeader = MAKEINTRESOURCE( IDB_BANNER ); iReturnVal = PropertySheet(&psh); if (iReturnVal < 0) { return(ERROR_INVALID_FUNCTION); } return(Params.dwLastError); } // AddPortUI // // FUNCTION: ConfigPortUI // // PURPOSE: Main function called when the User Interface for configuring a port is called. // DWORD CNT5UIManager::ConfigPortUI(HWND hWndParent, PPORT_DATA_1 pData, HANDLE hXcvPrinter, TCHAR *szServerName, BOOL bNewPort) { INT_PTR iReturnVal = NO_ERROR; PROPSHEETPAGE psp[MaxNumCfgPages]; PROPSHEETHEADER psh; TCHAR sztPropSheetTitle[MAX_TITLE_LENGTH]; TCHAR sztPortPageTitle[MAX_TITLE_LENGTH]; CFG_PARAM_PACKAGE Params; Params.pData = pData; pData->dwVersion = 1; Params.hXcvPrinter = hXcvPrinter; Params.bNewPort = bNewPort; Params.dwLastError = NO_ERROR; if (szServerName != NULL) { lstrcpyn(Params.pszServer, szServerName, MAX_NETWORKNAME_LEN); } else { Params.pszServer[0] = '\0'; } LoadString(g_hInstance, IDS_STRING_PORTPAGE_TITLE, sztPortPageTitle, MAX_TITLE_LENGTH); FillInPropertyPage( &psp[0], IDD_PORT_SETTINGS, sztPortPageTitle, NULL, NULL, 0, ConfigurePortPage, (LPARAM)&Params); #if 0 if (!bNewPort) { // It's not a brand new port so show the AllPorts Page. FillInPropertyPage( &psp[1], IDD_DIALOG_CONFIG_ALL, sztAllPortsPageTitle, NULL, NULL, 0, AllPortsPage, (LPARAM)&Params); } #endif LoadString(g_hInstance, IDS_STRING_CONFIG_TITLE, sztPropSheetTitle, MAX_TITLE_LENGTH); psh.dwSize = sizeof(PROPSHEETHEADER); psh.dwFlags = PSH_NOAPPLYNOW | PSH_PROPSHEETPAGE; psh.hwndParent = hWndParent; psh.hInstance = g_hInstance; psh.pszCaption = sztPropSheetTitle; psh.nStartPage = 0; psh.ppsp = psp; psh.pfnCallback = NULL; psh.nPages = MaxNumCfgPages; iReturnVal = PropertySheet(&psh); if (iReturnVal < 0) { return(ERROR_INVALID_FUNCTION); } return(Params.dwLastError); } // ConfigPortUI // // // FUNCTION: FillInPropertyPage(PROPSHEETPAGE *, int, LPSTR, LPFN) // // PURPOSE: Fills in the given PROPSHEETPAGE structure // // COMMENTS: // // This function fills in a PROPSHEETPAGE structure with the // information the system needs to create the page. // static void FillInPropertyPage( PROPSHEETPAGE* psp, int idDlg, LPTSTR pszProc, LPTSTR pszHeaderTitle, LPTSTR pszHeaderSubTitle, DWORD dwFlags, STRICT_DLGPROC pfnDlgProc, LPARAM lParam) { psp->dwSize = sizeof(PROPSHEETPAGE); psp->dwFlags = PSP_USETITLE | ((pszHeaderTitle != NULL) ? PSP_USEHEADERTITLE : 0) | ((pszHeaderSubTitle != NULL) ? PSP_USEHEADERSUBTITLE : 0) | dwFlags; psp->hInstance = g_hInstance; psp->pszTemplate = MAKEINTRESOURCE(idDlg); psp->pszIcon = NULL; psp->pfnDlgProc = (DLGPROC)pfnDlgProc; psp->pszTitle = pszProc; psp->lParam = lParam; psp->pszHeaderTitle = pszHeaderTitle; psp->pszHeaderSubTitle = pszHeaderSubTitle; } // FillInPropertyPage