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
- FixedSOMPageElement.cs
- TripleDES.cs
- keycontainerpermission.cs
- ListBoxItem.cs
- OleDbWrapper.cs
- ADMembershipProvider.cs
- DataGridViewRowPrePaintEventArgs.cs
- StringHelper.cs
- CodeVariableDeclarationStatement.cs
- AutomationPattern.cs
- OdbcParameterCollection.cs
- DbInsertCommandTree.cs
- CompiledXpathExpr.cs
- OperandQuery.cs
- RegexParser.cs
- ConcurrentBag.cs
- CheckableControlBaseAdapter.cs
- ProcessInfo.cs
- ErasingStroke.cs
- SoapReflectionImporter.cs
- DataRowComparer.cs
- SuppressIldasmAttribute.cs
- InternalReceiveMessage.cs
- Manipulation.cs
- DecimalFormatter.cs
- LiteralControl.cs
- MetaModel.cs
- HwndTarget.cs
- ADRole.cs
- ToolboxItem.cs
- DataGridTextBox.cs
- Zone.cs
- HttpModuleActionCollection.cs
- DrawingContextDrawingContextWalker.cs
- EditorPartCollection.cs
- XmlQueryRuntime.cs
- TimeSpanValidatorAttribute.cs
- IdnElement.cs
- Icon.cs
- AggregationMinMaxHelpers.cs
- KeyBinding.cs
- smtppermission.cs
- EmptyEnumerator.cs
- WebPartDisplayMode.cs
- EdmFunctionAttribute.cs
- MetadataItemEmitter.cs
- TextBox.cs
- ButtonPopupAdapter.cs
- DateTimeOffset.cs
- AssemblyCollection.cs
- ValidationError.cs
- X500Name.cs
- ObservableCollectionDefaultValueFactory.cs
- DocumentReference.cs
- FileDetails.cs
- JavaScriptString.cs
- XpsS0ValidatingLoader.cs
- AspNetPartialTrustHelpers.cs
- VScrollBar.cs
- X509Chain.cs
- SafeRightsManagementPubHandle.cs
- PersistenceTypeAttribute.cs
- NetTcpSecurityElement.cs
- RelationshipEndMember.cs
- BooleanConverter.cs
- RectangleConverter.cs
- XPathEmptyIterator.cs
- CharAnimationUsingKeyFrames.cs
- AppLevelCompilationSectionCache.cs
- AuthenticationManager.cs
- FileLogRecordStream.cs
- ProcessMonitor.cs
- ProcessRequestArgs.cs
- RuleProcessor.cs
- GuidelineCollection.cs
- RuntimeEnvironment.cs
- FileDialog_Vista_Interop.cs
- activationcontext.cs
- DesignerSerializationVisibilityAttribute.cs
- ClassImporter.cs
- FieldNameLookup.cs
- SoapCodeExporter.cs
- EventLogTraceListener.cs
- WindowAutomationPeer.cs
- PolyBezierSegment.cs
- XmlAttributeAttribute.cs
- BitmapEditor.cs
- DataBindingHandlerAttribute.cs
- AnalyzedTree.cs
- SetterTriggerConditionValueConverter.cs
- UnmanagedMemoryStreamWrapper.cs
- ResolveDuplex11AsyncResult.cs
- HeaderedItemsControl.cs
- Point3DAnimationUsingKeyFrames.cs
- Utils.cs
- Emitter.cs
- Version.cs
- LinearGradientBrush.cs
- EncryptedReference.cs
- ObjectQueryProvider.cs