Press "Enter" to skip to content

Windows API——ImmGetCandidateList()返回0的问题

一直搞不懂ImmGetCandidateList()的运作方式,总是返回0,MSDN上也没说得很明白,GetLastError()也不提示错误,今天测试出了大概的运作方式(Win11上测试,微软拼音输入法)。

先插播一个大草事件,微软自己用这个函数的Demo也一样返回0,不能正常工作。

满足以下几点,这个应该就能正常工作了:

  1. 不渲染候选词弹窗,即当收到WM_IME_SETCONTEXT消息时,lParam & ISC_SHOWUICANDIDATEWINDOW == 0
  2. 响应WM_IME_SETCONTEXT时,一定要记得返回DefWindowProc() !!!

折腾这么久,吐了。