Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Framework / MS / Internal / Printing / Win32PrintDialog.cs / 1 / Win32PrintDialog.cs
// Microsoft Avalon // Copyright (c) Microsoft Corporation, 2005 // // File: Win32PrintDialog.cs // // 05/24/2003 : [....] - created // //------------------------------------------------------------------------------ using System; using System.Drawing.Printing; using System.Printing.Interop; using System.Printing; using System.Runtime.InteropServices; using System.Security; using System.Security.Permissions; using System.Windows.Controls; namespace MS.Internal.Printing { ////// This entire class is implemented in this file. However, the class /// is marked partial because this class utilizes/implements a marshaler /// class that is private to it in another file. The object is called /// PrintDlgExMarshaler and warranted its own file. /// internal partial class Win32PrintDialog { #region Constructor ////// Constructs an instance of the Win32PrintDialog. This class is used for /// displaying the Win32 PrintDlgEx dialog and obtaining a user selected /// printer and PrintTicket for a print operation. /// ////// Critical: - Sets critical data. /// TreatAsSafe: - Sets the critical data to null for initialization. /// [SecurityCritical, SecurityTreatAsSafe] public Win32PrintDialog() { _printTicket = null; _printQueue = null; _minPage = 1; _maxPage = 9999; _pageRangeSelection = PageRangeSelection.AllPages; } #endregion Constructor #region Internal methods ////// Displays a modal Win32 print dialog to allow the user to select the desired /// printer and set the printing options. The data generated by this method /// can be accessed via the properties on the instance of this class. /// ////// Critical: - Create an instance of a critical class, calls critical /// methods on that instance, and retrieves critical properties. /// TreatAsSafe: - This code simply displays a WIN32 based dialog, gets the /// print settings from the user, and saves the data away as /// critical. The "unsafe" data that does into the unmanaged /// are properties marked critical (PrintTicket and PrintQueue) /// on this class. The other data that enters the unmanaged /// API are values that are integer based and uninteresting so /// therefore are not critical (MinPage, MaxPage, and page range /// values. Any data that is created by this method that is /// considered unsafe is marked critical. There are 2 properties /// that are extracted from the unmanaged call that are not considered /// critical. These are _pageRange and _pageRangeSelection. We do not /// care if these are exposed since the data means nothing except to /// the code that is doing the printing. /// [SecurityCritical, SecurityTreatAsSafe] internal UInt32 ShowDialog() { UInt32 result = NativeMethods.PD_RESULT_CANCEL; // // Get the process main window handle // IntPtr owner = IntPtr.Zero; if ((System.Windows.Application.Current != null) && (System.Windows.Application.Current.MainWindow != null)) { System.Windows.Interop.WindowInteropHelper helper = new System.Windows.Interop.WindowInteropHelper(System.Windows.Application.Current.MainWindow); owner = helper.CriticalHandle; } // // Create a PrintDlgEx instance to invoke the Win32 Print Dialog // using (PrintDlgExMarshaler printDlgEx = new PrintDlgExMarshaler(owner, this)) { printDlgEx.SyncToStruct(); // // Display the Win32 print dialog // Int32 hr = UnsafeNativeMethods.PrintDlgEx(printDlgEx.UnmanagedPrintDlgEx); if (hr == MS.Win32.NativeMethods.S_OK) { result = printDlgEx.SyncFromStruct(); } } return result; } #endregion Internal methods #region Internal properties ////// Critical: Accesses critical data. /// internal PrintTicket PrintTicket { [SecurityCritical] get { return _printTicket; } [SecurityCritical] set { _printTicket = value; } } ////// Critical: Accesses critical data. /// internal PrintQueue PrintQueue { [SecurityCritical] get { return _printQueue; } [SecurityCritical] set { _printQueue = value; } } ////// Gets or sets the minimum page number allowed in the page ranges. /// internal UInt32 MinPage { get { return _minPage; } set { _minPage = value; } } ////// Gets or sets the maximum page number allowed in the page ranges. /// internal UInt32 MaxPage { get { return _maxPage; } set { _maxPage = value; } } ////// Gets or Sets the PageRangeSelection option for the print dialog. /// internal PageRangeSelection PageRangeSelection { get { return _pageRangeSelection; } set { _pageRangeSelection = value; } } ////// Gets or sets a PageRange objects used when the PageRangeSelection /// option is set to UserPages. /// internal PageRange PageRange { get { return _pageRange; } set { _pageRange = value; } } ////// Gets or sets a flag to enable/disable the page range control on the dialog. /// internal bool PageRangeEnabled { get { return _pageRangeEnabled; } set { _pageRangeEnabled = value; } } #endregion Internal properties #region Private data ////// Critical: This is the print ticket used for printing /// the current job. It is critical because it /// could contains some user sensitive data /// [SecurityCritical] private PrintTicket _printTicket; ////// Critical: This is an object that represents a print queue. /// Any code that has access to this object has the /// potential to print jobs to this printer so it is /// a critical system resource. /// [SecurityCritical] private PrintQueue _printQueue; private PageRangeSelection _pageRangeSelection; private PageRange _pageRange; private bool _pageRangeEnabled; private UInt32 _minPage; private UInt32 _maxPage; #endregion Private data } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- BindingListCollectionView.cs
- TextDataBindingHandler.cs
- XmlSchemaImport.cs
- XmlTypeAttribute.cs
- DefaultWorkflowLoaderService.cs
- ObjectView.cs
- BooleanFunctions.cs
- TextServicesLoader.cs
- CrossAppDomainChannel.cs
- SettingsPropertyIsReadOnlyException.cs
- WsatTransactionFormatter.cs
- ACE.cs
- SingleTagSectionHandler.cs
- AddIn.cs
- XmlSerializationWriter.cs
- PersonalizationState.cs
- SeparatorAutomationPeer.cs
- CellParaClient.cs
- SafeLibraryHandle.cs
- PointAnimation.cs
- LinkedResourceCollection.cs
- WebRequestModuleElementCollection.cs
- XamlToRtfWriter.cs
- VerificationException.cs
- SoapTypeAttribute.cs
- SqlDataReaderSmi.cs
- AssemblyResourceLoader.cs
- COSERVERINFO.cs
- ArrayTypeMismatchException.cs
- AttachmentService.cs
- HostProtectionException.cs
- Registry.cs
- TextCompositionEventArgs.cs
- CacheAxisQuery.cs
- String.cs
- WebPartMenu.cs
- AbsoluteQuery.cs
- CharacterString.cs
- DispatchWrapper.cs
- LineUtil.cs
- CatalogPartChrome.cs
- SafeEventHandle.cs
- XmlnsPrefixAttribute.cs
- DataGridViewImageColumn.cs
- ObjectDataProvider.cs
- PackageProperties.cs
- clipboard.cs
- ScriptingAuthenticationServiceSection.cs
- TCPListener.cs
- DynamicObjectAccessor.cs
- GlyphingCache.cs
- PerformanceCounterPermissionEntryCollection.cs
- EntitySqlException.cs
- ApplicationSecurityInfo.cs
- ImportContext.cs
- Rectangle.cs
- FixedHighlight.cs
- SQlBooleanStorage.cs
- ItemCheckedEvent.cs
- DeclarativeCatalogPart.cs
- Visual3DCollection.cs
- TdsParameterSetter.cs
- Aggregates.cs
- AutomationInteropProvider.cs
- OperationFormatStyle.cs
- StorageFunctionMapping.cs
- AutoFocusStyle.xaml.cs
- WebConfigurationManager.cs
- MbpInfo.cs
- figurelength.cs
- CompressEmulationStream.cs
- DocComment.cs
- _TransmitFileOverlappedAsyncResult.cs
- NonSerializedAttribute.cs
- DashStyle.cs
- HotSpotCollection.cs
- ZipIOCentralDirectoryDigitalSignature.cs
- HMACSHA256.cs
- QuerySubExprEliminator.cs
- ConsoleCancelEventArgs.cs
- RelationshipWrapper.cs
- SchemaImporterExtension.cs
- Int16.cs
- ParameterBuilder.cs
- _WebProxyDataBuilder.cs
- TypeDescriptionProvider.cs
- BamlStream.cs
- BoundsDrawingContextWalker.cs
- MaskedTextBox.cs
- WindowsFormsHost.cs
- PolyLineSegmentFigureLogic.cs
- StorageScalarPropertyMapping.cs
- TrackingParameters.cs
- ListDictionaryInternal.cs
- HwndStylusInputProvider.cs
- XamlValidatingReader.cs
- SimpleFieldTemplateUserControl.cs
- FontEmbeddingManager.cs
- ValueUtilsSmi.cs
- ObjectStateManager.cs