diff options
Diffstat (limited to 'mDNSResponder/Clients/PrinterSetupWizard/PrinterSetupWizardApp.cpp')
-rw-r--r-- | mDNSResponder/Clients/PrinterSetupWizard/PrinterSetupWizardApp.cpp | 172 |
1 files changed, 172 insertions, 0 deletions
diff --git a/mDNSResponder/Clients/PrinterSetupWizard/PrinterSetupWizardApp.cpp b/mDNSResponder/Clients/PrinterSetupWizard/PrinterSetupWizardApp.cpp new file mode 100644 index 00000000..d2a896d0 --- /dev/null +++ b/mDNSResponder/Clients/PrinterSetupWizard/PrinterSetupWizardApp.cpp @@ -0,0 +1,172 @@ +/* -*- Mode: C; tab-width: 4 -*- + * + * Copyright (c) 1997-2004 Apple Computer, Inc. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "stdafx.h" +#include "PrinterSetupWizardApp.h" +#include "PrinterSetupWizardSheet.h" +#include "DebugServices.h" +#include "loclibrary.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#endif + +#ifndef HeapEnableTerminationOnCorruption +# define HeapEnableTerminationOnCorruption (HEAP_INFORMATION_CLASS) 1 +#endif + + +// Stash away pointers to our resource DLLs + +static HINSTANCE g_nonLocalizedResources = NULL; +static HINSTANCE g_localizedResources = NULL; + + +HINSTANCE +GetNonLocalizedResources() +{ + return g_nonLocalizedResources; +} + + +HINSTANCE +GetLocalizedResources() +{ + return g_localizedResources; +} + + +// CPrinterSetupWizardApp + +BEGIN_MESSAGE_MAP(CPrinterSetupWizardApp, CWinApp) + ON_COMMAND(ID_HELP, CWinApp::OnHelp) +END_MESSAGE_MAP() + + +// CPrinterSetupWizardApp construction + +CPrinterSetupWizardApp::CPrinterSetupWizardApp() +{ + // TODO: add construction code here, + // Place all significant initialization in InitInstance +} + + +// The one and only CPrinterSetupWizardApp object + +CPrinterSetupWizardApp theApp; + + +// CPrinterSetupWizardApp initialization + +BOOL CPrinterSetupWizardApp::InitInstance() +{ + CString errorMessage; + CString errorCaption; + wchar_t resource[MAX_PATH]; + int res; + OSStatus err = kNoErr; + + HeapSetInformation( NULL, HeapEnableTerminationOnCorruption, NULL, 0 ); + + // + // initialize the debugging framework + // + debug_initialize( kDebugOutputTypeWindowsDebugger, "PrinterSetupWizard", NULL ); + debug_set_property( kDebugPropertyTagPrintLevel, kDebugLevelTrace ); + + // Before we load the resources, let's load the error string + + errorMessage.LoadString( IDS_REINSTALL ); + errorCaption.LoadString( IDS_REINSTALL_CAPTION ); + + // Load Resources + + res = PathForResource( NULL, L"PrinterWizardResources.dll", resource, MAX_PATH ); + err = translate_errno( res != 0, kUnknownErr, kUnknownErr ); + require_noerr( err, exit ); + + g_nonLocalizedResources = LoadLibrary( resource ); + translate_errno( g_nonLocalizedResources, GetLastError(), kUnknownErr ); + require_noerr( err, exit ); + + res = PathForResource( NULL, L"PrinterWizardLocalized.dll", resource, MAX_PATH ); + err = translate_errno( res != 0, kUnknownErr, kUnknownErr ); + require_noerr( err, exit ); + + g_localizedResources = LoadLibrary( resource ); + translate_errno( g_localizedResources, GetLastError(), kUnknownErr ); + require_noerr( err, exit ); + + AfxSetResourceHandle( g_localizedResources ); + + // InitCommonControls() is required on Windows XP if an application + // manifest specifies use of ComCtl32.dll version 6 or later to enable + // visual styles. Otherwise, any window creation will fail. + InitCommonControls(); + + CWinApp::InitInstance(); + + AfxEnableControlContainer(); + + { + CPrinterSetupWizardSheet dlg(IDS_CAPTION); + + m_pMainWnd = &dlg; + + try + { + INT_PTR nResponse = dlg.DoModal(); + + if (nResponse == IDOK) + { + // TODO: Place code here to handle when the dialog is + // dismissed with OK + } + else if (nResponse == IDCANCEL) + { + // TODO: Place code here to handle when the dialog is + // dismissed with Cancel + } + } + catch (CPrinterSetupWizardSheet::WizardException & exc) + { + MessageBox(NULL, exc.text, exc.caption, MB_OK|MB_ICONEXCLAMATION); + } + } + +exit: + + if ( err ) + { + MessageBox( NULL, errorMessage, errorCaption, MB_ICONERROR | MB_OK ); + } + + if ( g_nonLocalizedResources ) + { + FreeLibrary( g_nonLocalizedResources ); + } + + if ( g_localizedResources ) + { + FreeLibrary( g_localizedResources ); + } + + // Since the dialog has been closed, return FALSE so that we exit the + // application, rather than start the application's message pump. + return FALSE; +} |