Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / wpf / src / Core / CSharp / System / Windows / Input / InputLanguageSource.cs / 1 / InputLanguageSource.cs
//---------------------------------------------------------------------------- // //// Copyright (C) Microsoft Corporation. All rights reserved. // // // // Description: The source of the input language of the thread. // // History: // 07/30/2003 : yutakas - ported from dotnet tree. // //--------------------------------------------------------------------------- using System.Security; using System.Security.Permissions; using System.Collections; using System.Globalization; using System.Windows.Threading; using System.Windows.Input; using System.Windows.Media; using System.Runtime.InteropServices; using System.Diagnostics; using MS.Win32; using MS.Utility; namespace System.Windows.Input { //----------------------------------------------------- // // InputLanguageSource class // //----------------------------------------------------- ////// This is an internal. The source for input languages. /// internal sealed class InputLanguageSource : IInputLanguageSource, IDisposable { //------------------------------------------------------ // // Constructors // //----------------------------------------------------- ////// This is an internal. The source for input languages. /// internal InputLanguageSource(InputLanguageManager inputlanguagemanager) { _inputlanguagemanager = inputlanguagemanager; // initialize the current input language. _langid = (short)NativeMethods.IntPtrToInt32(SafeNativeMethods.GetKeyboardLayout(0)); // store the dispatcher thread id. This will be used to call GetKeyboardLayout() from // other thread. _dispatcherThreadId = SafeNativeMethods.GetCurrentThreadId(); // Register source _inputlanguagemanager.RegisterInputLanguageSource(this); } //------------------------------------------------------ // // Public Methods // //------------------------------------------------------ #region Public Methods ////// Dispose method. /// public void Dispose() { if (_ipp != null) Uninitialize(); } ////// IIInputLanguageSource.Initialize() /// This creates ITfInputProcessorProfile object and advice sink. /// public void Initialize() { EnsureInputProcessorProfile(); } ////// IIInputLanguageSource.Uninitialize() /// This releases ITfInputProcessorProfile object and unadvice sink. /// public void Uninitialize() { if (_ipp != null) { _ipp.Uninitialize(); _ipp = null; } } #endregion Public Methods //----------------------------------------------------- // // Public Properties // //------------------------------------------------------ ////// returns the current input language of this win32 thread. /// public CultureInfo CurrentInputLanguage { get { return new CultureInfo(_CurrentInputLanguage); } set { _CurrentInputLanguage = (short)value.LCID; } } ////// returns the list of the available input languages of this win32 thread. /// public IEnumerable InputLanguageList { get { EnsureInputProcessorProfile(); if (_ipp == null) { ArrayList al = new ArrayList(); al.Add(CurrentInputLanguage); return al; } return _ipp.InputLanguageList; } } //----------------------------------------------------- // // Internal Methods // //----------------------------------------------------- ////// The input language change call back from the sink. /// internal bool OnLanguageChange(short langid) { if (_langid != langid) { // Call InputLanguageManager if its current source is this. if (InputLanguageManager.Current.Source == this) { return InputLanguageManager.Current.ReportInputLanguageChanging(new CultureInfo(langid), new CultureInfo(_langid)); } } return true; } ////// The input language changed call back from the sink. /// internal void OnLanguageChanged() { short langid = _CurrentInputLanguage; if (_langid != langid) { short prevlangid = _langid; _langid = langid; // Call InputLanguageManager if its current source is this. if (InputLanguageManager.Current.Source == this) { InputLanguageManager.Current.ReportInputLanguageChanged(new CultureInfo(langid), new CultureInfo(prevlangid)); } } } //----------------------------------------------------- // // Private Method // //------------------------------------------------------ ////// This creates ITfInputProcessorProfile object and advice sink. /// ////// Critical - calls unmanaged code (initializing input) /// TreatAsSafe - ok to call any number of times /// [SecurityCritical, SecurityTreatAsSafe] private void EnsureInputProcessorProfile() { // _ipp has been initialzied. Don't do this again. if (_ipp != null) return; // We don't need to initialize _ipp if there is onlyone keyboard layout. // Only one input language is available. if (SafeNativeMethods.GetKeyboardLayoutList(0, null) <= 1) return; Debug.Assert(_ipp == null, "_EnsureInputProcesoorProfile has been called."); InputLanguageProfileNotifySink lpns; lpns = new InputLanguageProfileNotifySink(this); _ipp= new InputProcessorProfiles(); if (!_ipp.Initialize(lpns)) { _ipp = null; } } //----------------------------------------------------- // // Private Properties // //------------------------------------------------------ ////// The current input language in LANGID of this win32 thread. /// private short _CurrentInputLanguage { get { // Return input language of the dispatcher thread. return (short)NativeMethods.IntPtrToInt32(SafeNativeMethods.GetKeyboardLayout(_dispatcherThreadId)); } set { EnsureInputProcessorProfile(); if (_ipp != null) { _ipp.CurrentInputLanguage = value; } } } //------------------------------------------------------ // // Private Fields // //----------------------------------------------------- #region Private Fields // the current input language in LANGID. private short _langid; // The dispatcher thread id. private int _dispatcherThreadId; // the connected input language manager. InputLanguageManager _inputlanguagemanager; // the reference to ITfInputProcessorProfile. InputProcessorProfiles _ipp; #endregion Private Fields } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. //---------------------------------------------------------------------------- // //// Copyright (C) Microsoft Corporation. All rights reserved. // // // // Description: The source of the input language of the thread. // // History: // 07/30/2003 : yutakas - ported from dotnet tree. // //--------------------------------------------------------------------------- using System.Security; using System.Security.Permissions; using System.Collections; using System.Globalization; using System.Windows.Threading; using System.Windows.Input; using System.Windows.Media; using System.Runtime.InteropServices; using System.Diagnostics; using MS.Win32; using MS.Utility; namespace System.Windows.Input { //----------------------------------------------------- // // InputLanguageSource class // //----------------------------------------------------- ////// This is an internal. The source for input languages. /// internal sealed class InputLanguageSource : IInputLanguageSource, IDisposable { //------------------------------------------------------ // // Constructors // //----------------------------------------------------- ////// This is an internal. The source for input languages. /// internal InputLanguageSource(InputLanguageManager inputlanguagemanager) { _inputlanguagemanager = inputlanguagemanager; // initialize the current input language. _langid = (short)NativeMethods.IntPtrToInt32(SafeNativeMethods.GetKeyboardLayout(0)); // store the dispatcher thread id. This will be used to call GetKeyboardLayout() from // other thread. _dispatcherThreadId = SafeNativeMethods.GetCurrentThreadId(); // Register source _inputlanguagemanager.RegisterInputLanguageSource(this); } //------------------------------------------------------ // // Public Methods // //------------------------------------------------------ #region Public Methods ////// Dispose method. /// public void Dispose() { if (_ipp != null) Uninitialize(); } ////// IIInputLanguageSource.Initialize() /// This creates ITfInputProcessorProfile object and advice sink. /// public void Initialize() { EnsureInputProcessorProfile(); } ////// IIInputLanguageSource.Uninitialize() /// This releases ITfInputProcessorProfile object and unadvice sink. /// public void Uninitialize() { if (_ipp != null) { _ipp.Uninitialize(); _ipp = null; } } #endregion Public Methods //----------------------------------------------------- // // Public Properties // //------------------------------------------------------ ////// returns the current input language of this win32 thread. /// public CultureInfo CurrentInputLanguage { get { return new CultureInfo(_CurrentInputLanguage); } set { _CurrentInputLanguage = (short)value.LCID; } } ////// returns the list of the available input languages of this win32 thread. /// public IEnumerable InputLanguageList { get { EnsureInputProcessorProfile(); if (_ipp == null) { ArrayList al = new ArrayList(); al.Add(CurrentInputLanguage); return al; } return _ipp.InputLanguageList; } } //----------------------------------------------------- // // Internal Methods // //----------------------------------------------------- ////// The input language change call back from the sink. /// internal bool OnLanguageChange(short langid) { if (_langid != langid) { // Call InputLanguageManager if its current source is this. if (InputLanguageManager.Current.Source == this) { return InputLanguageManager.Current.ReportInputLanguageChanging(new CultureInfo(langid), new CultureInfo(_langid)); } } return true; } ////// The input language changed call back from the sink. /// internal void OnLanguageChanged() { short langid = _CurrentInputLanguage; if (_langid != langid) { short prevlangid = _langid; _langid = langid; // Call InputLanguageManager if its current source is this. if (InputLanguageManager.Current.Source == this) { InputLanguageManager.Current.ReportInputLanguageChanged(new CultureInfo(langid), new CultureInfo(prevlangid)); } } } //----------------------------------------------------- // // Private Method // //------------------------------------------------------ ////// This creates ITfInputProcessorProfile object and advice sink. /// ////// Critical - calls unmanaged code (initializing input) /// TreatAsSafe - ok to call any number of times /// [SecurityCritical, SecurityTreatAsSafe] private void EnsureInputProcessorProfile() { // _ipp has been initialzied. Don't do this again. if (_ipp != null) return; // We don't need to initialize _ipp if there is onlyone keyboard layout. // Only one input language is available. if (SafeNativeMethods.GetKeyboardLayoutList(0, null) <= 1) return; Debug.Assert(_ipp == null, "_EnsureInputProcesoorProfile has been called."); InputLanguageProfileNotifySink lpns; lpns = new InputLanguageProfileNotifySink(this); _ipp= new InputProcessorProfiles(); if (!_ipp.Initialize(lpns)) { _ipp = null; } } //----------------------------------------------------- // // Private Properties // //------------------------------------------------------ ////// The current input language in LANGID of this win32 thread. /// private short _CurrentInputLanguage { get { // Return input language of the dispatcher thread. return (short)NativeMethods.IntPtrToInt32(SafeNativeMethods.GetKeyboardLayout(_dispatcherThreadId)); } set { EnsureInputProcessorProfile(); if (_ipp != null) { _ipp.CurrentInputLanguage = value; } } } //------------------------------------------------------ // // Private Fields // //----------------------------------------------------- #region Private Fields // the current input language in LANGID. private short _langid; // The dispatcher thread id. private int _dispatcherThreadId; // the connected input language manager. InputLanguageManager _inputlanguagemanager; // the reference to ITfInputProcessorProfile. InputProcessorProfiles _ipp; #endregion Private Fields } } // 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
- PromptBuilder.cs
- HostProtectionPermission.cs
- SelectionHighlightInfo.cs
- ContractSearchPattern.cs
- GroupBox.cs
- MergeLocalizationDirectives.cs
- NullableDecimalAverageAggregationOperator.cs
- TagPrefixCollection.cs
- PropertyConverter.cs
- PriorityBindingExpression.cs
- MutexSecurity.cs
- Overlapped.cs
- _Semaphore.cs
- CodeDOMUtility.cs
- EntityDescriptor.cs
- BackStopAuthenticationModule.cs
- MethodBody.cs
- HttpPostLocalhostServerProtocol.cs
- DateTimeFormatInfo.cs
- AutomationEvent.cs
- MergeFilterQuery.cs
- RangeValuePattern.cs
- _NegoStream.cs
- AnimatedTypeHelpers.cs
- MetadataItem_Static.cs
- MemoryMappedViewStream.cs
- TimeIntervalCollection.cs
- UnconditionalPolicy.cs
- CodeTypeMember.cs
- MobileUserControlDesigner.cs
- XmlReaderDelegator.cs
- __ComObject.cs
- NodeFunctions.cs
- NameSpaceEvent.cs
- ImageIndexEditor.cs
- regiisutil.cs
- ProfilePropertyNameValidator.cs
- ToolStripCustomTypeDescriptor.cs
- WebPartConnectionsConnectVerb.cs
- XmlSchemaSimpleTypeList.cs
- CellQuery.cs
- GuidelineCollection.cs
- RenderDataDrawingContext.cs
- X509ChainElement.cs
- TokenBasedSet.cs
- ByteStreamGeometryContext.cs
- PopupControlService.cs
- RewritingSimplifier.cs
- ColumnMapVisitor.cs
- OuterGlowBitmapEffect.cs
- TextElementCollection.cs
- MoveSizeWinEventHandler.cs
- XXXInfos.cs
- MenuStrip.cs
- ThrowHelper.cs
- EncryptedType.cs
- DesignerForm.cs
- CryptoHelper.cs
- WorkflowDispatchContext.cs
- FontUnit.cs
- OleAutBinder.cs
- StsCommunicationException.cs
- IgnoreSection.cs
- VersionConverter.cs
- ValueUtilsSmi.cs
- PlaceHolder.cs
- SQLDecimalStorage.cs
- XpsFilter.cs
- EndpointAddressMessageFilterTable.cs
- Boolean.cs
- DataGridViewComboBoxColumnDesigner.cs
- NotImplementedException.cs
- SQLSingle.cs
- QueryableDataSourceHelper.cs
- FrameworkElementFactoryMarkupObject.cs
- QueryOutputWriterV1.cs
- WindowHideOrCloseTracker.cs
- QuadraticBezierSegment.cs
- BindableAttribute.cs
- PagedDataSource.cs
- ModuleElement.cs
- RegisterInfo.cs
- MemberDescriptor.cs
- ValueProviderWrapper.cs
- MetadataAssemblyHelper.cs
- ListenerAdaptersInstallComponent.cs
- Point3DCollectionConverter.cs
- ScrollEventArgs.cs
- PngBitmapEncoder.cs
- GeometryDrawing.cs
- ToolStripPanelCell.cs
- NoResizeSelectionBorderGlyph.cs
- SqlDataReaderSmi.cs
- SqlDataSourceStatusEventArgs.cs
- WpfPayload.cs
- SqlClientWrapperSmiStream.cs
- CSharpCodeProvider.cs
- SspiNegotiationTokenAuthenticatorState.cs
- PrincipalPermission.cs
- CodeDelegateCreateExpression.cs