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
- GridView.cs
- basecomparevalidator.cs
- ExpressionsCollectionEditor.cs
- VScrollBar.cs
- HMACSHA1.cs
- CodeTypeParameter.cs
- WebPart.cs
- LayoutEditorPart.cs
- AssemblyNameProxy.cs
- GeometryHitTestParameters.cs
- FixedElement.cs
- ProfileInfo.cs
- Error.cs
- EntitySqlQueryState.cs
- InternalSafeNativeMethods.cs
- StringResourceManager.cs
- IListConverters.cs
- StringInfo.cs
- AttachmentService.cs
- CompatibleIComparer.cs
- IDQuery.cs
- ChtmlTextBoxAdapter.cs
- CollectionDataContractAttribute.cs
- glyphs.cs
- SchemaMerger.cs
- SingleAnimation.cs
- AccessViolationException.cs
- ListViewGroupItemCollection.cs
- PerformanceCounterPermissionEntry.cs
- FormClosedEvent.cs
- GZipStream.cs
- DependencyObjectPropertyDescriptor.cs
- MethodCallExpression.cs
- DesignerLoader.cs
- GiveFeedbackEventArgs.cs
- LoginView.cs
- ActivityWithResult.cs
- OletxResourceManager.cs
- XmlQualifiedNameTest.cs
- CommonDialog.cs
- CodeIdentifier.cs
- ConstructorExpr.cs
- DesignerMetadata.cs
- ItemDragEvent.cs
- MenuItemStyleCollectionEditor.cs
- SchemaImporterExtensionsSection.cs
- WebDisplayNameAttribute.cs
- ControlDesigner.cs
- ProviderUtil.cs
- SqlSupersetValidator.cs
- ObjectContextServiceProvider.cs
- UriWriter.cs
- BypassElementCollection.cs
- SRGSCompiler.cs
- Activation.cs
- DependencyObjectValidator.cs
- CodeVariableDeclarationStatement.cs
- SamlSubject.cs
- HtmlPageAdapter.cs
- ListCommandEventArgs.cs
- SharedTcpTransportManager.cs
- DocumentViewerAutomationPeer.cs
- ComponentEditorForm.cs
- WasEndpointConfigContainer.cs
- TypeExtensionSerializer.cs
- SHA384.cs
- TextEndOfParagraph.cs
- BindingList.cs
- StrongName.cs
- followingquery.cs
- MenuStrip.cs
- HostedTransportConfigurationBase.cs
- MobileListItemCollection.cs
- SystemUdpStatistics.cs
- SetStateEventArgs.cs
- Vector3D.cs
- CodeMethodReturnStatement.cs
- GrammarBuilderDictation.cs
- BufferBuilder.cs
- DynamicObject.cs
- DataGridColumnCollection.cs
- SessionStateItemCollection.cs
- MatchingStyle.cs
- Interfaces.cs
- CompModSwitches.cs
- ProtocolsConfigurationHandler.cs
- ParameterBinding.cs
- ColumnCollection.cs
- DataGridTemplateColumn.cs
- EventLogPermissionAttribute.cs
- ListContractAdapter.cs
- TableProviderWrapper.cs
- HtmlInputReset.cs
- ProfileGroupSettingsCollection.cs
- XhtmlCssHandler.cs
- FrameAutomationPeer.cs
- Stack.cs
- CookielessHelper.cs
- TextEditorParagraphs.cs
- GregorianCalendar.cs