0

参考TSF 的 Get the candicate list的文章(对不起,是日文写的),我开发了一个 C++ Component of Windows Store App
但是当我测试这个组件的时候,有一个奇怪的现象:如果我把输入法变成“微软输入法”,代码

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