0

Get the Candicate List by TSFの記事 (日本語ですみません) を参考に、Windows Store Appの C++ Component を開発しました。
しかし、コンポーネントをテストすると、奇妙な現象が発生します。インプット メソッドを「Microsoft IME」にすると、コードが

hr = m_reconversion_cp->QueryRange(selections[0].range, &range_cp, &is_converted);  

出力パラメータ「range_cp」では常に NULL を返しますが、入力メソッドを「Google 日本語入力」にすると、「range_cp」は正しい結果を返し、ITfFnReconversion::GetReconversion によって候補リストを取得できます。
誰かが同じ問題に遭遇しましたか? または、Microsoft IME の一部の設定が抜けていませんか?

この問題のコードの一部があります。

ReconvTextStore m_text_store_cp;
ITfContext m_context_cp;
ITfFnReconversion m_reconversion_cp

if (m_text_store_cp->LockDocument(TS_LF_READ))
{
    hr = m_context_cp->GetSelection(
        m_edit_cookie,
        TF_DEFAULT_SELECTION,
        numberof(selections),
        selections,
        &fetched_count
        );

    m_text_store_cp->UnlockDocument();

    if (FAILED(hr))
    {
        break;
    }
}

// ↓↓↓ When the Microsoft IME, range_cp returns NULL ↓↓↓
hr = m_reconversion_cp->QueryRange(selections[0].range, &range_cp, &is_converted);
if (FAILED(hr) || range_cp == NULL)
{
    break;
}

hr = m_reconversion_cp->GetReconversion(selections[0].range, &cand_list_cp);
if (FAILED(hr) || cand_list_cp == NULL)
{
    break;
}

あなたが提供できる助けに本当に感謝します。

4

0 に答える 0