Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Core / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- Rotation3DKeyFrameCollection.cs
- ConsoleKeyInfo.cs
- LoginUtil.cs
- GeometryHitTestParameters.cs
- VisualTransition.cs
- FragmentQueryKB.cs
- UnicodeEncoding.cs
- ToolStripPanelSelectionGlyph.cs
- DataGridCellClipboardEventArgs.cs
- ContentElement.cs
- CompilerInfo.cs
- CryptoApi.cs
- ComboBoxRenderer.cs
- Assembly.cs
- AttachedPropertyBrowsableForChildrenAttribute.cs
- Internal.cs
- DbConnectionClosed.cs
- ObjectConverter.cs
- InvalidChannelBindingException.cs
- PageRanges.cs
- LoadGrammarCompletedEventArgs.cs
- ShaperBuffers.cs
- FillErrorEventArgs.cs
- TreeViewImageIndexConverter.cs
- SchemaCompiler.cs
- ClientSponsor.cs
- XmlILStorageConverter.cs
- Pair.cs
- ServiceObjectContainer.cs
- Light.cs
- PaginationProgressEventArgs.cs
- FormViewDeletedEventArgs.cs
- XamlWriter.cs
- LocatorManager.cs
- EditorPart.cs
- DataGridRelationshipRow.cs
- Vector3DKeyFrameCollection.cs
- XmlSecureResolver.cs
- SmiTypedGetterSetter.cs
- FilePrompt.cs
- DiagnosticTraceSchemas.cs
- NotificationContext.cs
- ContainerSelectorGlyph.cs
- NoResizeSelectionBorderGlyph.cs
- PersonalizationDictionary.cs
- DataObjectSettingDataEventArgs.cs
- ControlValuePropertyAttribute.cs
- Vector3DConverter.cs
- TouchDevice.cs
- SafeRightsManagementHandle.cs
- DataGridColumn.cs
- WindowsRichEdit.cs
- FormViewInsertEventArgs.cs
- DictionaryEditChange.cs
- DirectoryNotFoundException.cs
- TokenizerHelper.cs
- MembershipSection.cs
- UserNameServiceElement.cs
- linebase.cs
- Timeline.cs
- HttpFileCollection.cs
- RecipientInfo.cs
- AppDomainAttributes.cs
- CustomCredentialPolicy.cs
- ListControl.cs
- NominalTypeEliminator.cs
- QueryCreatedEventArgs.cs
- DateTimeFormat.cs
- ModifyActivitiesPropertyDescriptor.cs
- FirstMatchCodeGroup.cs
- XmlBuffer.cs
- XmlSerializableServices.cs
- CellIdBoolean.cs
- EntityViewGenerator.cs
- Deserializer.cs
- ReliabilityContractAttribute.cs
- HwndProxyElementProvider.cs
- ErrorStyle.cs
- Encoder.cs
- RootDesignerSerializerAttribute.cs
- QueryConverter.cs
- Rotation3DAnimationBase.cs
- InternalConfigSettingsFactory.cs
- ExecutionEngineException.cs
- SessionIDManager.cs
- AddInSegmentDirectoryNotFoundException.cs
- versioninfo.cs
- WCFServiceClientProxyGenerator.cs
- ManipulationCompletedEventArgs.cs
- ColorComboBox.cs
- ZipIOExtraField.cs
- StructuredTypeEmitter.cs
- InkCanvas.cs
- Formatter.cs
- SafeArrayRankMismatchException.cs
- SettingsProperty.cs
- QueryAccessibilityHelpEvent.cs
- CodeCatchClause.cs
- GlyphRunDrawing.cs
- remotingproxy.cs