Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / wpf / src / Core / CSharp / System / Windows / Media / MediaContextNotificationWindow.cs / 1 / MediaContextNotificationWindow.cs
//------------------------------------------------------------------------------ // //// Copyright (c) Microsoft Corporation. All rights reserved. // // // Description: // A wrapper for a top-level hidden window that is used to process // messages broadcasted to top-level windows only (such as DWM's // WM_DWMCOMPOSITIONCHANGED). If the WPF application doesn't have // a top-level window (as it is the case for XBAP applications), // such messages would have been ignored. // //----------------------------------------------------------------------------- using System; using System.Windows.Threading; using System.Collections; using System.Diagnostics; using System.Windows.Media.Animation; using System.Windows.Media.Composition; using Microsoft.Win32; using Microsoft.Internal; using MS.Internal; using MS.Win32; using System.Security; using System.Security.Permissions; using SR=MS.Internal.PresentationCore.SR; using SRID=MS.Internal.PresentationCore.SRID; using UnsafeNativeMethods=MS.Win32.PresentationCore.UnsafeNativeMethods.MilCoreApi; using SafeNativeMethods=MS.Win32.PresentationCore.SafeNativeMethods; namespace System.Windows.Media { ////// The MediaContextNotificationWindow structure provides its owner /// MediaContext with the ability to receive and forward window /// messages broadcasted to top-level windows. /// internal struct MediaContextNotificationWindow { //+--------------------------------------------------------------------- // // Internal Methods // //--------------------------------------------------------------------- #region Internal Methods ////// Sets the owner MediaContext and creates the notification window. /// ////// Critical - Creates an HwndWrapper and adds a hook. /// TreatAsSafe: The _hwndNotification window is critical and this function is safe to call /// [SecurityCritical, SecurityTreatAsSafe] internal void CreateNotificationWindow(MediaContext ownerMediaContext) { // Remember the pointer to the owner MediaContext that we'll forward the broadcasts to. _ownerMediaContext = ownerMediaContext; // Create a top-level, invisible window so we can get the WM_DWMCOMPOSITIONCHANGED // and other DWM notifications that are broadcasted to top-level windows only. HwndWrapper hwndNotification; hwndNotification = new HwndWrapper(0, NativeMethods.WS_POPUP, 0, 0, 0, 0, 0, "MediaContextNotificationWindow", IntPtr.Zero, null); _hwndNotificationHook = new HwndWrapperHook(MessageFilter); _hwndNotification = new SecurityCriticalDataClass(hwndNotification); _hwndNotification.Value.AddHook(_hwndNotificationHook); } /// /// Critical - Calls dispose on the critical hwnd wrapper. /// TreatAsSafe: It is safe to dispose the wrapper /// [SecurityCritical, SecurityTreatAsSafe] internal void DisposeNotificationWindow() { if (_hwndNotification != null) _hwndNotification.Value.Dispose(); _hwndNotificationHook = null; _hwndNotification = null; _ownerMediaContext = null; } #endregion Internal Methods //+---------------------------------------------------------------------- // // Private Methods // //--------------------------------------------------------------------- #region Private Methods ////// If any of the interesting broadcast messages is seen, forward them to the owner MediaContext. /// private IntPtr MessageFilter(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled) { Debug.Assert(_ownerMediaContext != null); if (msg == NativeMethods.WM_DWMCOMPOSITIONCHANGED) { _ownerMediaContext.OnDWMCompositionChanged(); } return IntPtr.Zero; } #endregion Private Methods //+---------------------------------------------------------------------- // // Private Fields // //---------------------------------------------------------------------- #region Private Fields // The owner MediaContext private MediaContext _ownerMediaContext; // A top-level hidden window. private SecurityCriticalDataClass_hwndNotification; // The message filter hook for the top-level hidden window. private HwndWrapperHook _hwndNotificationHook; #endregion Private Fields } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ // // // Copyright (c) Microsoft Corporation. All rights reserved. // // // Description: // A wrapper for a top-level hidden window that is used to process // messages broadcasted to top-level windows only (such as DWM's // WM_DWMCOMPOSITIONCHANGED). If the WPF application doesn't have // a top-level window (as it is the case for XBAP applications), // such messages would have been ignored. // //----------------------------------------------------------------------------- using System; using System.Windows.Threading; using System.Collections; using System.Diagnostics; using System.Windows.Media.Animation; using System.Windows.Media.Composition; using Microsoft.Win32; using Microsoft.Internal; using MS.Internal; using MS.Win32; using System.Security; using System.Security.Permissions; using SR=MS.Internal.PresentationCore.SR; using SRID=MS.Internal.PresentationCore.SRID; using UnsafeNativeMethods=MS.Win32.PresentationCore.UnsafeNativeMethods.MilCoreApi; using SafeNativeMethods=MS.Win32.PresentationCore.SafeNativeMethods; namespace System.Windows.Media { ////// The MediaContextNotificationWindow structure provides its owner /// MediaContext with the ability to receive and forward window /// messages broadcasted to top-level windows. /// internal struct MediaContextNotificationWindow { //+--------------------------------------------------------------------- // // Internal Methods // //--------------------------------------------------------------------- #region Internal Methods ////// Sets the owner MediaContext and creates the notification window. /// ////// Critical - Creates an HwndWrapper and adds a hook. /// TreatAsSafe: The _hwndNotification window is critical and this function is safe to call /// [SecurityCritical, SecurityTreatAsSafe] internal void CreateNotificationWindow(MediaContext ownerMediaContext) { // Remember the pointer to the owner MediaContext that we'll forward the broadcasts to. _ownerMediaContext = ownerMediaContext; // Create a top-level, invisible window so we can get the WM_DWMCOMPOSITIONCHANGED // and other DWM notifications that are broadcasted to top-level windows only. HwndWrapper hwndNotification; hwndNotification = new HwndWrapper(0, NativeMethods.WS_POPUP, 0, 0, 0, 0, 0, "MediaContextNotificationWindow", IntPtr.Zero, null); _hwndNotificationHook = new HwndWrapperHook(MessageFilter); _hwndNotification = new SecurityCriticalDataClass(hwndNotification); _hwndNotification.Value.AddHook(_hwndNotificationHook); } /// /// Critical - Calls dispose on the critical hwnd wrapper. /// TreatAsSafe: It is safe to dispose the wrapper /// [SecurityCritical, SecurityTreatAsSafe] internal void DisposeNotificationWindow() { if (_hwndNotification != null) _hwndNotification.Value.Dispose(); _hwndNotificationHook = null; _hwndNotification = null; _ownerMediaContext = null; } #endregion Internal Methods //+---------------------------------------------------------------------- // // Private Methods // //--------------------------------------------------------------------- #region Private Methods ////// If any of the interesting broadcast messages is seen, forward them to the owner MediaContext. /// private IntPtr MessageFilter(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled) { Debug.Assert(_ownerMediaContext != null); if (msg == NativeMethods.WM_DWMCOMPOSITIONCHANGED) { _ownerMediaContext.OnDWMCompositionChanged(); } return IntPtr.Zero; } #endregion Private Methods //+---------------------------------------------------------------------- // // Private Fields // //---------------------------------------------------------------------- #region Private Fields // The owner MediaContext private MediaContext _ownerMediaContext; // A top-level hidden window. private SecurityCriticalDataClass_hwndNotification; // The message filter hook for the top-level hidden window. private HwndWrapperHook _hwndNotificationHook; #endregion Private Fields } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
![Network programming in C#, Network Programming in VB.NET, Network Programming in .NET](/images/book.jpg)
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- HGlobalSafeHandle.cs
- xmlglyphRunInfo.cs
- RotateTransform3D.cs
- ViewGenResults.cs
- WebPermission.cs
- KeysConverter.cs
- InvokeSchedule.cs
- DataGridViewCellContextMenuStripNeededEventArgs.cs
- RowBinding.cs
- InputScope.cs
- TextBreakpoint.cs
- DeviceContexts.cs
- WebAdminConfigurationHelper.cs
- DataChangedEventManager.cs
- GacUtil.cs
- OperatingSystem.cs
- ImageListStreamer.cs
- RotateTransform.cs
- QuadraticBezierSegment.cs
- HtmlSelect.cs
- DateTimeOffsetConverter.cs
- RecommendedAsConfigurableAttribute.cs
- EmptyStringExpandableObjectConverter.cs
- CharStorage.cs
- EncodingFallbackAwareXmlTextWriter.cs
- WindowsEditBoxRange.cs
- AccessKeyManager.cs
- JumpItem.cs
- SubMenuStyleCollection.cs
- KnownTypes.cs
- BitmapVisualManager.cs
- AuthorizationContext.cs
- AbstractDataSvcMapFileLoader.cs
- MatrixKeyFrameCollection.cs
- ForEachAction.cs
- OleStrCAMarshaler.cs
- WindowsListView.cs
- TemplateControlParser.cs
- DataGridColumnCollection.cs
- ExtendedProtectionPolicyElement.cs
- StorageComplexPropertyMapping.cs
- ControlPaint.cs
- ParameterReplacerVisitor.cs
- BufferedGenericXmlSecurityToken.cs
- Int32Converter.cs
- CombinedGeometry.cs
- ScriptManager.cs
- SignedInfo.cs
- XmlCodeExporter.cs
- MultiPageTextView.cs
- ListBoxItemWrapperAutomationPeer.cs
- WebRequestModuleElement.cs
- WsdlBuildProvider.cs
- IncrementalReadDecoders.cs
- DetailsViewDeleteEventArgs.cs
- FlowDocument.cs
- InstanceContext.cs
- CodeIterationStatement.cs
- CompleteWizardStep.cs
- SqlTypesSchemaImporter.cs
- CodeDelegateInvokeExpression.cs
- LocalizableResourceBuilder.cs
- CuspData.cs
- SafeSecurityHandles.cs
- AssemblyNameProxy.cs
- XslTransform.cs
- DetailsViewInsertedEventArgs.cs
- HtmlControl.cs
- LineSegment.cs
- XmlDigitalSignatureProcessor.cs
- StickyNoteHelper.cs
- MenuItem.cs
- InertiaExpansionBehavior.cs
- SourceFileBuildProvider.cs
- _NegoStream.cs
- EventHandlerList.cs
- CombinedTcpChannel.cs
- BackStopAuthenticationModule.cs
- NamespaceInfo.cs
- WorkflowTransactionService.cs
- TextElement.cs
- bidPrivateBase.cs
- SmiSettersStream.cs
- Int64Storage.cs
- MenuCommand.cs
- ReadOnlyDataSource.cs
- TextParagraphView.cs
- WindowsGraphics.cs
- CircleHotSpot.cs
- FormatVersion.cs
- ThreadExceptionEvent.cs
- MatrixAnimationUsingKeyFrames.cs
- Renderer.cs
- SqlConnectionFactory.cs
- XmlDictionaryReaderQuotas.cs
- XPathItem.cs
- OdbcCommand.cs
- ProtocolElementCollection.cs
- EditorZoneBase.cs
- _SingleItemRequestCache.cs