Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Core / CSharp / System / Windows / InterOp / HwndPanningFeedback.cs / 1305600 / HwndPanningFeedback.cs
//---------------------------------------------------------------------------- // // Copyright (C) Microsoft Corporation. All rights reserved. // //--------------------------------------------------------------------------- using System; using System.Diagnostics; using System.Runtime.InteropServices; using System.Security; using System.Windows.Interop; using System.Windows.Media; using System.Windows.Threading; using MS.Win32; namespace System.Windows.Interop { ////// Helper class to provide window feedback that panning has hit an edge. /// internal class HwndPanningFeedback { ////// Instantiates a new instance of this class. /// /// The HWND on which to provide feedback. ////// SecurityCritical: Accesses HwndSource. /// TreatAsSafe: Information is not given out. /// [SecurityCritical, SecurityTreatAsSafe] public HwndPanningFeedback(HwndSource hwndSource) { if (hwndSource == null) { throw new ArgumentNullException("hwndSource"); } _hwndSource = hwndSource; } private static bool IsSupported { get { return OperatingSystemVersionCheck.IsVersionOrLater(OperatingSystemVersion.Windows7); } } ////// Returns the handle of the current window. /// ////// SecurityCritical: Handles _hwndSource /// SecurityCritical: Handles and exposes HwndSource.Handle /// private HandleRef Handle { [SecurityCritical] get { if (_hwndSource != null) { IntPtr handle = _hwndSource.CriticalHandle; if (handle != IntPtr.Zero) { return new HandleRef(_hwndSource, handle); } } return new HandleRef(); } } ////// Moves the window by the offset. /// Used to provide feedback that panning has hit an edge. /// /// The total offset relative to the original location. /// Whether the edge was hit due to inertia or the user panning. ////// SecurityCritical: Changes the on-screen position of a window. /// SecurityCritical: Accesses Handle. /// [SecurityCritical] public void UpdatePanningFeedback(Vector totalOverpanOffset, bool inInertia) { if ((_hwndSource != null) && IsSupported) { if (!_isProvidingPanningFeedback) { _isProvidingPanningFeedback = UnsafeNativeMethods.BeginPanningFeedback(Handle); } if (_isProvidingPanningFeedback) { var deviceOffset = _hwndSource.TransformToDevice((Point)totalOverpanOffset); _deviceOffsetX = (int)deviceOffset.X; _deviceOffsetY = (int)deviceOffset.Y; _inInertia = inInertia; if (_updatePanningOperation == null) { _updatePanningOperation = _hwndSource.Dispatcher.BeginInvoke(DispatcherPriority.Background, new DispatcherOperationCallback(OnUpdatePanningFeedback), this); } } } } ////// SecurityCritical: Changes the on-screen position of a window. /// SecurityCritical: Accesses Handle. /// [SecurityCritical] private object OnUpdatePanningFeedback(object args) { HwndPanningFeedback panningFeedback = (HwndPanningFeedback)args; _updatePanningOperation = null; UnsafeNativeMethods.UpdatePanningFeedback(panningFeedback.Handle, panningFeedback._deviceOffsetX, panningFeedback._deviceOffsetY, panningFeedback._inInertia); return null; } private int _deviceOffsetX; private int _deviceOffsetY; private bool _inInertia; private DispatcherOperation _updatePanningOperation; ////// Moves the window back to its original position. /// Used to provide feedback that panning has hit an edge. /// /// Whether to animate or snap back to the original position ////// SecurityCritical: Changes the on-screen position of a window. /// SecurityCritical: Accesses _handle. /// TreatAsSafe: Returns the window to its original position, which is safe. /// [SecurityCritical, SecurityTreatAsSafe] public void EndPanningFeedback(bool animateBack) { if (_hwndSource != null && _isProvidingPanningFeedback) { _isProvidingPanningFeedback = false; if (_updatePanningOperation != null) { _updatePanningOperation.Abort(); _updatePanningOperation = null; } UnsafeNativeMethods.EndPanningFeedback(Handle, animateBack); } } ////// Whether panning feedback is currently in progress. /// private bool _isProvidingPanningFeedback; ////// The HwndSource being manipulated. /// ////// SecurityCritical: Access to the window. /// [SecurityCritical] private HwndSource _hwndSource; } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. //---------------------------------------------------------------------------- // // Copyright (C) Microsoft Corporation. All rights reserved. // //--------------------------------------------------------------------------- using System; using System.Diagnostics; using System.Runtime.InteropServices; using System.Security; using System.Windows.Interop; using System.Windows.Media; using System.Windows.Threading; using MS.Win32; namespace System.Windows.Interop { ////// Helper class to provide window feedback that panning has hit an edge. /// internal class HwndPanningFeedback { ////// Instantiates a new instance of this class. /// /// The HWND on which to provide feedback. ////// SecurityCritical: Accesses HwndSource. /// TreatAsSafe: Information is not given out. /// [SecurityCritical, SecurityTreatAsSafe] public HwndPanningFeedback(HwndSource hwndSource) { if (hwndSource == null) { throw new ArgumentNullException("hwndSource"); } _hwndSource = hwndSource; } private static bool IsSupported { get { return OperatingSystemVersionCheck.IsVersionOrLater(OperatingSystemVersion.Windows7); } } ////// Returns the handle of the current window. /// ////// SecurityCritical: Handles _hwndSource /// SecurityCritical: Handles and exposes HwndSource.Handle /// private HandleRef Handle { [SecurityCritical] get { if (_hwndSource != null) { IntPtr handle = _hwndSource.CriticalHandle; if (handle != IntPtr.Zero) { return new HandleRef(_hwndSource, handle); } } return new HandleRef(); } } ////// Moves the window by the offset. /// Used to provide feedback that panning has hit an edge. /// /// The total offset relative to the original location. /// Whether the edge was hit due to inertia or the user panning. ////// SecurityCritical: Changes the on-screen position of a window. /// SecurityCritical: Accesses Handle. /// [SecurityCritical] public void UpdatePanningFeedback(Vector totalOverpanOffset, bool inInertia) { if ((_hwndSource != null) && IsSupported) { if (!_isProvidingPanningFeedback) { _isProvidingPanningFeedback = UnsafeNativeMethods.BeginPanningFeedback(Handle); } if (_isProvidingPanningFeedback) { var deviceOffset = _hwndSource.TransformToDevice((Point)totalOverpanOffset); _deviceOffsetX = (int)deviceOffset.X; _deviceOffsetY = (int)deviceOffset.Y; _inInertia = inInertia; if (_updatePanningOperation == null) { _updatePanningOperation = _hwndSource.Dispatcher.BeginInvoke(DispatcherPriority.Background, new DispatcherOperationCallback(OnUpdatePanningFeedback), this); } } } } ////// SecurityCritical: Changes the on-screen position of a window. /// SecurityCritical: Accesses Handle. /// [SecurityCritical] private object OnUpdatePanningFeedback(object args) { HwndPanningFeedback panningFeedback = (HwndPanningFeedback)args; _updatePanningOperation = null; UnsafeNativeMethods.UpdatePanningFeedback(panningFeedback.Handle, panningFeedback._deviceOffsetX, panningFeedback._deviceOffsetY, panningFeedback._inInertia); return null; } private int _deviceOffsetX; private int _deviceOffsetY; private bool _inInertia; private DispatcherOperation _updatePanningOperation; ////// Moves the window back to its original position. /// Used to provide feedback that panning has hit an edge. /// /// Whether to animate or snap back to the original position ////// SecurityCritical: Changes the on-screen position of a window. /// SecurityCritical: Accesses _handle. /// TreatAsSafe: Returns the window to its original position, which is safe. /// [SecurityCritical, SecurityTreatAsSafe] public void EndPanningFeedback(bool animateBack) { if (_hwndSource != null && _isProvidingPanningFeedback) { _isProvidingPanningFeedback = false; if (_updatePanningOperation != null) { _updatePanningOperation.Abort(); _updatePanningOperation = null; } UnsafeNativeMethods.EndPanningFeedback(Handle, animateBack); } } ////// Whether panning feedback is currently in progress. /// private bool _isProvidingPanningFeedback; ////// The HwndSource being manipulated. /// ////// SecurityCritical: Access to the window. /// [SecurityCritical] private HwndSource _hwndSource; } } // 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
- StaticExtensionConverter.cs
- RecognitionEventArgs.cs
- TextTrailingWordEllipsis.cs
- ProjectionPathSegment.cs
- FrameworkRichTextComposition.cs
- infer.cs
- Convert.cs
- GenerateTemporaryTargetAssembly.cs
- CellIdBoolean.cs
- WsdlEndpointConversionContext.cs
- UdpDiscoveryEndpoint.cs
- NamedPipeConnectionPool.cs
- TextOutput.cs
- DateTimeConverter2.cs
- Panel.cs
- UrlPath.cs
- HatchBrush.cs
- CryptoApi.cs
- KeyFrames.cs
- LoadWorkflowByInstanceKeyCommand.cs
- FormsAuthenticationConfiguration.cs
- TreeViewEvent.cs
- SystemResourceKey.cs
- ActiveDocumentEvent.cs
- AdjustableArrowCap.cs
- WebPartCatalogAddVerb.cs
- MultiView.cs
- WebFormDesignerActionService.cs
- AnnotationResourceCollection.cs
- Subset.cs
- FormViewUpdatedEventArgs.cs
- ClientConvert.cs
- XmlWriterTraceListener.cs
- DataRecordObjectView.cs
- DrawItemEvent.cs
- Brush.cs
- propertytag.cs
- SingleStorage.cs
- MaskInputRejectedEventArgs.cs
- IntegrationExceptionEventArgs.cs
- TypedTableBaseExtensions.cs
- ConnectionConsumerAttribute.cs
- StorageModelBuildProvider.cs
- VisualTreeUtils.cs
- PenThreadPool.cs
- DbConnectionPoolGroup.cs
- MarkerProperties.cs
- WinCategoryAttribute.cs
- DataObjectPastingEventArgs.cs
- IndexingContentUnit.cs
- TreeView.cs
- TemplateControlBuildProvider.cs
- CodeTypeReferenceExpression.cs
- prefixendpointaddressmessagefilter.cs
- Bidi.cs
- WebPartVerb.cs
- IResourceProvider.cs
- JsonByteArrayDataContract.cs
- ImmutableObjectAttribute.cs
- FlowchartDesignerCommands.cs
- MailMessageEventArgs.cs
- UIElement3DAutomationPeer.cs
- SessionEndedEventArgs.cs
- StorageInfo.cs
- PropertyEntry.cs
- ApplicationInterop.cs
- XsltInput.cs
- DeclaredTypeElement.cs
- DifferencingCollection.cs
- FileRecordSequenceHelper.cs
- CompilationUtil.cs
- SpecialFolderEnumConverter.cs
- ReadOnlyHierarchicalDataSource.cs
- InputLangChangeRequestEvent.cs
- GAC.cs
- LocalizableResourceBuilder.cs
- PassportPrincipal.cs
- MgmtConfigurationRecord.cs
- ClockController.cs
- regiisutil.cs
- SmtpException.cs
- ModuleBuilderData.cs
- QilStrConcat.cs
- FirstMatchCodeGroup.cs
- PositiveTimeSpanValidator.cs
- ProfileGroupSettings.cs
- TypedTableBaseExtensions.cs
- ProgressBarBrushConverter.cs
- EncoderFallback.cs
- ToolStripItemRenderEventArgs.cs
- GPPOINTF.cs
- EnumType.cs
- TextReader.cs
- IndexOutOfRangeException.cs
- ListSortDescription.cs
- COAUTHIDENTITY.cs
- PointF.cs
- OneOfScalarConst.cs
- CommonDialog.cs
- DataGridViewCellCollection.cs