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
- ImageCodecInfoPrivate.cs
- AnonymousIdentificationModule.cs
- ConstructorBuilder.cs
- SignatureDescription.cs
- TrackingProvider.cs
- SpellerInterop.cs
- ApplicationHost.cs
- TraceProvider.cs
- UnknownBitmapDecoder.cs
- DiscoveryViaBehavior.cs
- DotAtomReader.cs
- UrlPath.cs
- KnownTypes.cs
- safelink.cs
- FreezableOperations.cs
- ColorMatrix.cs
- XmlILModule.cs
- TextBox.cs
- AuthenticationModuleElementCollection.cs
- PageCatalogPart.cs
- InkCanvasSelectionAdorner.cs
- InstanceContext.cs
- UrlUtility.cs
- ComplexLine.cs
- ElementProxy.cs
- ToolStripRenderEventArgs.cs
- FileSystemEventArgs.cs
- AppDomainGrammarProxy.cs
- XmlReaderDelegator.cs
- Int32CAMarshaler.cs
- AnonymousIdentificationModule.cs
- NamedElement.cs
- BitmapEffectDrawingContextWalker.cs
- CommonRemoteMemoryBlock.cs
- DateTimeSerializationSection.cs
- ManagementObjectSearcher.cs
- DbQueryCommandTree.cs
- AuthenticateEventArgs.cs
- DebugController.cs
- PolyBezierSegment.cs
- WSUtilitySpecificationVersion.cs
- AssociationSetEnd.cs
- FontCollection.cs
- SafeNativeMethods.cs
- ArrayItemReference.cs
- SystemParameters.cs
- WindowsRichEdit.cs
- ImmutableObjectAttribute.cs
- IFormattable.cs
- AliasExpr.cs
- ClientFormsAuthenticationMembershipProvider.cs
- ToolStripProfessionalLowResolutionRenderer.cs
- SelectingProviderEventArgs.cs
- XmlTextReaderImplHelpers.cs
- SqlCachedBuffer.cs
- RangeBase.cs
- WebPartZone.cs
- BinaryNode.cs
- ObjectDesignerDataSourceView.cs
- TextStore.cs
- DrawingContextDrawingContextWalker.cs
- ContextMenuService.cs
- ToolStrip.cs
- Thickness.cs
- WaitHandleCannotBeOpenedException.cs
- PasswordTextNavigator.cs
- ParseNumbers.cs
- ManagedIStream.cs
- NavigatorInput.cs
- ControlCollection.cs
- CipherData.cs
- ISAPIWorkerRequest.cs
- InternalConfigEventArgs.cs
- WebPartEditorCancelVerb.cs
- ToolStripManager.cs
- basecomparevalidator.cs
- OdbcErrorCollection.cs
- MailBnfHelper.cs
- PointConverter.cs
- DataGridViewCellStyleContentChangedEventArgs.cs
- SHA384.cs
- LocalValueEnumerator.cs
- DriveInfo.cs
- CursorConverter.cs
- BitmapImage.cs
- ChannelBuilder.cs
- ConnectionStringEditor.cs
- ConfigurationSettings.cs
- StatusBarAutomationPeer.cs
- SqlRemoveConstantOrderBy.cs
- MenuAutomationPeer.cs
- EarlyBoundInfo.cs
- StandardCommands.cs
- PartialCachingAttribute.cs
- BaseAsyncResult.cs
- SecUtil.cs
- SerialStream.cs
- OperatingSystem.cs
- TypeResolvingOptions.cs
- DataGridLinkButton.cs