一直搞不懂ImmGetCandidateList()的运作方式,总是返回0,MSDN上也没说得很明白,GetLastError()也不提示错误,今天测试出了大概的运作方式(Win11上测试,微软拼音输入法)。
先插播一个大草事件,微软自己用这个函数的Demo也一样返回0,不能正常工作。
满足以下几点,这个应该就能正常工作了:
- 不渲染候选词弹窗,即当收到
WM_IME_SETCONTEXT消息时,lParam & ISC_SHOWUICANDIDATEWINDOW == 0 - 响应
WM_IME_SETCONTEXT时,一定要记得返回DefWindowProc()!!!
折腾这么久,吐了。