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
- DataFieldEditor.cs
- HttpRequest.cs
- FontSourceCollection.cs
- HttpContextWrapper.cs
- FixedSOMImage.cs
- XmlNodeWriter.cs
- MissingMemberException.cs
- LinkClickEvent.cs
- DoubleCollection.cs
- CreateUserWizard.cs
- BamlLocalizerErrorNotifyEventArgs.cs
- StylusPointProperties.cs
- DateTimeSerializationSection.cs
- Error.cs
- OutputCacheProfileCollection.cs
- GetFileNameResult.cs
- Environment.cs
- ILGenerator.cs
- Expressions.cs
- TargetInvocationException.cs
- xsdvalidator.cs
- ByteBufferPool.cs
- XmlSchemaChoice.cs
- TcpTransportSecurityElement.cs
- CompatibleIComparer.cs
- AutomationIdentifierGuids.cs
- WindowsHyperlink.cs
- FocusTracker.cs
- CodeAttributeDeclaration.cs
- BuildDependencySet.cs
- Decimal.cs
- RuntimeWrappedException.cs
- ButtonAutomationPeer.cs
- OrderingExpression.cs
- ParserContext.cs
- X509ChainPolicy.cs
- FullTrustAssembly.cs
- ToolStripPanelSelectionGlyph.cs
- COM2Enum.cs
- CodeMethodReturnStatement.cs
- IsolatedStorageFileStream.cs
- WindowsGraphicsWrapper.cs
- DataBindingCollectionConverter.cs
- ConfigurationValidatorAttribute.cs
- AutoScrollHelper.cs
- FormViewAutoFormat.cs
- HttpApplication.cs
- PagedDataSource.cs
- StylusEventArgs.cs
- XmlWrappingWriter.cs
- LinkedResource.cs
- DebugInfoExpression.cs
- Bezier.cs
- EntityViewGenerationConstants.cs
- GeometryGroup.cs
- QuadraticBezierSegment.cs
- Utils.cs
- ChangeNode.cs
- BaseCAMarshaler.cs
- StrongNameKeyPair.cs
- WebBrowserEvent.cs
- FixedSOMLineCollection.cs
- RegexCompiler.cs
- SafeNativeMethods.cs
- IMembershipProvider.cs
- IdleTimeoutMonitor.cs
- CurrentChangedEventManager.cs
- SynchronizedRandom.cs
- NotSupportedException.cs
- SqlNotificationRequest.cs
- BamlRecordWriter.cs
- SessionStateSection.cs
- HMACRIPEMD160.cs
- RightNameExpirationInfoPair.cs
- LocalFileSettingsProvider.cs
- LogAppendAsyncResult.cs
- HtmlInputImage.cs
- peersecuritysettings.cs
- CopyCodeAction.cs
- ColorKeyFrameCollection.cs
- Graphics.cs
- WindowsSecurityTokenAuthenticator.cs
- ProjectionCamera.cs
- DynamicMethod.cs
- TraceContext.cs
- ToolStripItemImageRenderEventArgs.cs
- DataSourceNameHandler.cs
- SqlUserDefinedAggregateAttribute.cs
- BrowserCapabilitiesCompiler.cs
- ImplicitInputBrush.cs
- SQLMoneyStorage.cs
- OutputCacheSettings.cs
- WebEventTraceProvider.cs
- HtmlElement.cs
- XsltException.cs
- AuthenticationModulesSection.cs
- MetadataPropertyAttribute.cs
- FlowNode.cs
- NegationPusher.cs
- WebBrowserDesigner.cs