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 / InterOp / HwndSourceKeyboardInputSite.cs / 1 / HwndSourceKeyboardInputSite.cs
using System;
using System.Windows.Input;
using System.Collections;
using MS.Win32;
using System.Windows.Media;
using System.Windows.Threading;
using SR=MS.Internal.PresentationCore.SR;
using SRID=MS.Internal.PresentationCore.SRID;
using System.Security ;
using MS.Internal.PresentationCore;
namespace System.Windows.Interop
{
internal class HwndSourceKeyboardInputSite : IKeyboardInputSite
{
public HwndSourceKeyboardInputSite(HwndSource source, IKeyboardInputSink sink)
{
if(source == null)
{
throw new ArgumentNullException("source");
}
if(sink == null)
{
throw new ArgumentNullException("sink");
}
if(!(sink is UIElement))
{
throw new ArgumentException(SR.Get(SRID.KeyboardSinkMustBeAnElement), "sink");
}
_source = source;
_sink = sink;
_sink.KeyboardInputSite = this;
_sinkElement = sink as UIElement;
}
#region IKeyboardInputSite
///
/// Unregisters a child KeyboardInputSink from this sink.
///
///
/// Requires unmanaged code permission.
///
///
/// Critical - calls CriticalUnregister.
/// TreatAsSafe: - Interface declaration demands unrestricted UI permission
///
[ SecurityCritical,SecurityTreatAsSafe ]
void IKeyboardInputSite.Unregister()
{
CriticalUnregister();
}
///
/// Unregisters a child KeyboardInputSink from this sink.
///
///
/// Critical - calls CriticalUnregisterKeyboardInputSink
///
[ SecurityCritical ]
internal void CriticalUnregister()
{
if(_source != null && _sink != null)
{
_source.CriticalUnregisterKeyboardInputSink(this);
_sink.KeyboardInputSite = null;
}
_source = null;
_sink = null;
}
///
/// Returns the sink associated with this site (the "child", not
/// the "parent" sink that owns the site). There's no way of
/// getting from the site to the parent sink.
///
IKeyboardInputSink IKeyboardInputSite.Sink
{
get
{
return _sink;
}
}
///
/// Components call this when they want to move focus ("tab") but
/// have nowhere further to tab within their own component. Return
/// value is true if the site moved focus, false if the calling
/// component still has focus and should wrap around.
///
bool IKeyboardInputSite.OnNoMoreTabStops(TraversalRequest request)
{
bool traversed = false;
if(_sinkElement != null)
{
traversed = _sinkElement.MoveFocus(request);
}
return traversed;
}
#endregion IKeyboardInputSite
private HwndSource _source;
private IKeyboardInputSink _sink;
private UIElement _sinkElement;
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
using System;
using System.Windows.Input;
using System.Collections;
using MS.Win32;
using System.Windows.Media;
using System.Windows.Threading;
using SR=MS.Internal.PresentationCore.SR;
using SRID=MS.Internal.PresentationCore.SRID;
using System.Security ;
using MS.Internal.PresentationCore;
namespace System.Windows.Interop
{
internal class HwndSourceKeyboardInputSite : IKeyboardInputSite
{
public HwndSourceKeyboardInputSite(HwndSource source, IKeyboardInputSink sink)
{
if(source == null)
{
throw new ArgumentNullException("source");
}
if(sink == null)
{
throw new ArgumentNullException("sink");
}
if(!(sink is UIElement))
{
throw new ArgumentException(SR.Get(SRID.KeyboardSinkMustBeAnElement), "sink");
}
_source = source;
_sink = sink;
_sink.KeyboardInputSite = this;
_sinkElement = sink as UIElement;
}
#region IKeyboardInputSite
///
/// Unregisters a child KeyboardInputSink from this sink.
///
///
/// Requires unmanaged code permission.
///
///
/// Critical - calls CriticalUnregister.
/// TreatAsSafe: - Interface declaration demands unrestricted UI permission
///
[ SecurityCritical,SecurityTreatAsSafe ]
void IKeyboardInputSite.Unregister()
{
CriticalUnregister();
}
///
/// Unregisters a child KeyboardInputSink from this sink.
///
///
/// Critical - calls CriticalUnregisterKeyboardInputSink
///
[ SecurityCritical ]
internal void CriticalUnregister()
{
if(_source != null && _sink != null)
{
_source.CriticalUnregisterKeyboardInputSink(this);
_sink.KeyboardInputSite = null;
}
_source = null;
_sink = null;
}
///
/// Returns the sink associated with this site (the "child", not
/// the "parent" sink that owns the site). There's no way of
/// getting from the site to the parent sink.
///
IKeyboardInputSink IKeyboardInputSite.Sink
{
get
{
return _sink;
}
}
///
/// Components call this when they want to move focus ("tab") but
/// have nowhere further to tab within their own component. Return
/// value is true if the site moved focus, false if the calling
/// component still has focus and should wrap around.
///
bool IKeyboardInputSite.OnNoMoreTabStops(TraversalRequest request)
{
bool traversed = false;
if(_sinkElement != null)
{
traversed = _sinkElement.MoveFocus(request);
}
return traversed;
}
#endregion IKeyboardInputSite
private HwndSource _source;
private IKeyboardInputSink _sink;
private UIElement _sinkElement;
}
}
// 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
- SessionStateContainer.cs
- CodeObject.cs
- ModuleConfigurationInfo.cs
- SizeConverter.cs
- QuaternionIndependentAnimationStorage.cs
- HwndHost.cs
- PropertyContainer.cs
- MemberAssignmentAnalysis.cs
- BinaryMethodMessage.cs
- QueryCursorEventArgs.cs
- SafeFindHandle.cs
- ProjectedWrapper.cs
- X509Certificate2Collection.cs
- URLIdentityPermission.cs
- DefaultParameterValueAttribute.cs
- XslUrlEditor.cs
- XmlBufferReader.cs
- DrawingGroupDrawingContext.cs
- TypeConstant.cs
- TemplateBamlTreeBuilder.cs
- PrivilegeNotHeldException.cs
- TableRowCollection.cs
- SqlPersonalizationProvider.cs
- MediaElement.cs
- RoleServiceManager.cs
- CapabilitiesSection.cs
- AdornerDecorator.cs
- LabelDesigner.cs
- WorkflowCreationContext.cs
- GridEntry.cs
- AttributedMetaModel.cs
- WmlValidatorAdapter.cs
- SchemaElementLookUpTable.cs
- List.cs
- PtsContext.cs
- BuildManager.cs
- FixedTextView.cs
- DragDrop.cs
- Rect3DValueSerializer.cs
- ResourcesBuildProvider.cs
- SerializationException.cs
- DockPanel.cs
- StateInitializationDesigner.cs
- HitTestWithGeometryDrawingContextWalker.cs
- CreateUserErrorEventArgs.cs
- Mapping.cs
- StringUtil.cs
- StringSource.cs
- StringExpressionSet.cs
- TreeView.cs
- Calendar.cs
- PageThemeParser.cs
- HttpCookieCollection.cs
- MultiAsyncResult.cs
- HostVisual.cs
- MediaElementAutomationPeer.cs
- LineInfo.cs
- KeyValuePairs.cs
- MULTI_QI.cs
- ValueChangedEventManager.cs
- Events.cs
- AssociatedControlConverter.cs
- PeerNearMe.cs
- SqlClientPermission.cs
- Type.cs
- TypeUnloadedException.cs
- DataGridViewTopRowAccessibleObject.cs
- PageVisual.cs
- GeneralTransform3D.cs
- UpdatableWrapper.cs
- Environment.cs
- ImageDrawing.cs
- Rect3D.cs
- ClientSession.cs
- PageAsyncTaskManager.cs
- X509ServiceCertificateAuthenticationElement.cs
- PartialTrustVisibleAssembliesSection.cs
- Symbol.cs
- ParseChildrenAsPropertiesAttribute.cs
- RequestTimeoutManager.cs
- CustomWebEventKey.cs
- CollectionChangeEventArgs.cs
- Bezier.cs
- WebPartUtil.cs
- TheQuery.cs
- ResourcePermissionBase.cs
- _DisconnectOverlappedAsyncResult.cs
- UdpSocket.cs
- SafeLocalMemHandle.cs
- ElapsedEventArgs.cs
- CustomBinding.cs
- ValueUtilsSmi.cs
- VectorAnimationUsingKeyFrames.cs
- TypeDelegator.cs
- XPathPatternParser.cs
- XmlEnumAttribute.cs
- AddDataControlFieldDialog.cs
- WsdlInspector.cs
- DNS.cs
- DuplicateWaitObjectException.cs