问题描述
我正在尝试将合成窗口强制放置在某个位置。 ImmSetCandidateWindow 可以正常工作,但 ImmSetCompositionWindow 不能正常工作。
我已经捕获了以下IME消息:
这是示例代码:
void Sample::ForcedIMEWindow(const POINT &ptwindow,HWND hwnd)
{
HIMC himc = ImmGetContext(hwnd);
if (himc == NULL) return;
CANDIDATEFORM cdf;
cdf.dwIndex = 0;
cdf.dwStyle = CFS_CANDIDATEPOS;
cdf.ptCurrentPos.x = ptwindow.x;
cdf.ptCurrentPos.y = ptwindow.y;
ImmSetCandidateWindow(himc,&cdf); // This is OK
COMPOSITIONFORM cpf;
ImmGetCompositionWindow(himc,&cpf);
cpf.dwStyle = CFS_FORCE_POSITION;
cpf.ptCurrentPos.x = ptwindow.x;
cpf.ptCurrentPos.y = ptwindow.y;
ImmSetCompositionWindow(himc,&cpf); // No Composition window shown
ImmReleaseContext(hwnd,himc);
}
我有什么想念的吗?
TIA
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)