Help us understand the problem. What is going on with this article?

IMEを使う(Windows.UI.Text.Core編)

More than 3 years have passed since last update.

はい。
Windowsだけで3つ目のIME APIです。

Windows.UI.Text.Core

Universal Windows Platform(UWP)でIMEを扱う場合のAPIです。
C++もどきでも使えるのですが、C#を使わない理由がないのでC#で使ってます。
(Visual Studio上でC++との連携がわりと楽にできるので困らない)

TSFに比べ使いやすくなっていますが、できることが減っています。
主に縦書きが指定できなくなっているのが……。

実装

非常にわかりやすいので、Visual Studioの補完機能に従っていけばほとんどの実装が完了します。
内部には最低限、テキストと選択範囲を保持します。
テキストや選択範囲を適宜変更して、ディスプレイ上のテキストのレイアウト情報を把握できればOKです。

  1. CoreTextServicesManager.GetForCurrentView()CoreTextServicesManagerのインスタンスを取得する
    • 必要ならInputLanguageChangedに登録する
  2. textServicesManager.CreateEditContext()CoreTextEditContextのインスタンスを作成する
    • イベントに登録してIMEからの要求に応える
      • テキストの取得・変更
      • 選択範囲の取得・変更
      • レイアウトの取得
      • 未確定文字列の開始・終了
      • 未確定文字列の装飾情報
    • メソッドを呼んでアプリケーション側での変更を伝える
      • フォーカス情報
      • テキストの変更
      • 選択範囲の変更
      • レイアウトの変更

おわりに

特筆することがない。
縦書きに対応されてないとはこういうことですね。

Windows.UI.Text.CoreはUWP版のTATEditorを作るときに使います。
(IME APIの挙動とオンメモリビットマップの描画までは確認済み)

明日はmacOSの闇のIME APIについてです。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした