void CreateContext() { ClearContext(); // clear old context if necessary if (!textArea.Options.EnableImeSupport) { return; } hwndSource = (HwndSource)PresentationSource.FromVisual(this.textArea); if (hwndSource != null) { //currentContext = ImeNativeWrapper.ImmCreateContext(); //previousContext = ImeNativeWrapper.AssociateContext(hwndSource, currentContext); currentContext = ImeNativeWrapper.GetContext(hwndSource); hwndSource.AddHook(WndProc); // UpdateCompositionWindow() will be called by the caret becoming visible var threadMgr = ImeNativeWrapper.GetTextFrameworkThreadManager(); if (threadMgr != null) { // Even though the docu says passing null is invalid, this seems to help // activating the IME on the default input context that is shared with WPF threadMgr.SetFocus(IntPtr.Zero); } } }
void CreateContext() { if (this.textArea == null) { return; } //Dirkster99 BugFix if (this.textArea.Options == null) { return; } if (!textArea.Options.EnableImeSupport) { return; } hwndSource = (HwndSource)PresentationSource.FromVisual(this.textArea); if (hwndSource != null) { currentContext = ImeNativeWrapper.GetContext(hwndSource); previousContext = ImeNativeWrapper.AssociateContext(hwndSource, currentContext); // ImeNativeWrapper.SetCompositionFont(hwndSource, currentContext, textArea); hwndSource.AddHook(WndProc); } }