お世話になります。
TSFを利用してテキストボックス擬きを作成しています。
当Forumで質問させていただいている通り、まだ問題はありますが、一応キーボード入力を表示させることまでできています。
環境:Win7(64bit) VC++ 2005 IME=Office IME 2010
コンポジションはテキストサービスが管理していますが、アプリ(テキストストア実装側)でも管理できないでしょうか?
やりたいことはフォーム上にソフトキーボードを用意し、その入力も管理したいのです。
InsertTextAtSelectionで文字を入力し、StartCompositionすると
OnStartCompositionが呼ばれたすぐ後にOnEndCompositionが呼ばれてコンポジションが終わってしまいます。
以下はDoEditSessionメソッド内のソースです。
// mContext はメンバ変数のITfContext
// ec はDoEditSessionの引数のTfEditCookie
ITfCompositionPtr aComposition;
ITfContextCompositionPtr aContextComposition;
hr = mContext->QueryInterface(&aContextComposition);
if (SUCCEEDED(hr))
{
ITfInsertAtSelectionPtr aInsert;
hr = mContext->QueryInterface(&aInsert);
if (SUCCEEDED(hr))
{
ITfRangePtr aRange;
hr = aInsert->InsertTextAtSelection(ec, 0, L"あ", 1, &aRange);
if (SUCCEEDED(hr))
{
hr = aContextComposition->StartComposition(ec, aRange, NULL, &aComposition);
if (SUCCEEDED(hr))
{
//ごにょごにょ
}
}
}
}
どのようにすればアプリケーション側からコンポジションを開始できるようになるでしょうか?
どなたかご教示のほど、よろしくお願いいたします。