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
- EventLogTraceListener.cs
- SqlDataSourceStatusEventArgs.cs
- QuaternionKeyFrameCollection.cs
- CatalogPartChrome.cs
- HashMembershipCondition.cs
- WorkflowRuntimeBehavior.cs
- ContainerCodeDomSerializer.cs
- Table.cs
- TrackingWorkflowEventArgs.cs
- ImageBrush.cs
- XPathDocument.cs
- EmbeddedObject.cs
- BinaryFormatter.cs
- PermissionRequestEvidence.cs
- WebPartEditVerb.cs
- HttpStreamXmlDictionaryWriter.cs
- WebEncodingValidator.cs
- ConnectionOrientedTransportManager.cs
- SystemBrushes.cs
- ProtocolViolationException.cs
- WebPartDescription.cs
- DashStyles.cs
- LogConverter.cs
- StringCollectionEditor.cs
- XmlSchemaAll.cs
- CurrentChangingEventArgs.cs
- LinqExpressionNormalizer.cs
- WinEventHandler.cs
- MediaElement.cs
- ChtmlSelectionListAdapter.cs
- RouteData.cs
- ExpressionVisitor.cs
- DataSourceCache.cs
- FilterElement.cs
- HttpAsyncResult.cs
- SiteMapPath.cs
- DataTableExtensions.cs
- TimestampInformation.cs
- Int32Collection.cs
- SymDocumentType.cs
- SqlUDTStorage.cs
- FileIOPermission.cs
- SdlChannelSink.cs
- regiisutil.cs
- VisualTreeUtils.cs
- ValueProviderWrapper.cs
- PropertyEmitter.cs
- TextComposition.cs
- TextWriter.cs
- AdornerDecorator.cs
- StateDesigner.Layouts.cs
- UIElementHelper.cs
- EditorAttribute.cs
- DataGridViewTextBoxEditingControl.cs
- MessageHeaderDescriptionCollection.cs
- Error.cs
- Command.cs
- TerminateDesigner.cs
- StorageBasedPackageProperties.cs
- AppDomainProtocolHandler.cs
- ObjectConverter.cs
- ModelItemDictionaryImpl.cs
- DataObjectPastingEventArgs.cs
- SynchronizationContext.cs
- SortKey.cs
- HttpFormatExtensions.cs
- TimeSpanOrInfiniteConverter.cs
- CapabilitiesState.cs
- ControlPropertyNameConverter.cs
- DbgUtil.cs
- CompilerGlobalScopeAttribute.cs
- ListBoxItemAutomationPeer.cs
- D3DImage.cs
- OracleColumn.cs
- wmiprovider.cs
- FileNotFoundException.cs
- XmlKeywords.cs
- RegexGroupCollection.cs
- ParenthesizePropertyNameAttribute.cs
- HtmlInputReset.cs
- LogWriteRestartAreaAsyncResult.cs
- TextServicesCompartment.cs
- GeneratedView.cs
- DataBindingCollection.cs
- InvalidComObjectException.cs
- XslNumber.cs
- ISAPIRuntime.cs
- ClientSection.cs
- Boolean.cs
- XmlSchemaFacet.cs
- DataGridTextColumn.cs
- mil_sdk_version.cs
- ScrollEventArgs.cs
- RoleProviderPrincipal.cs
- DescendantBaseQuery.cs
- UiaCoreProviderApi.cs
- BindingEntityInfo.cs
- DynamicValueConverter.cs
- FontDialog.cs
- DataControlFieldCollection.cs