IME 输入法的一个问题,多谢达人

chenzhou35 2004-01-12 01:09:46
偶对IME不熟悉,现在有一个窗口像编辑器一样有caret,希望输入法能够对此caret进行跟随,应该怎么处理?IME会发送一个消息过来查询么?

谢谢了。
...全文
69 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenzhou35 2004-02-02
  • 打赏
  • 举报
回复
都差点忘了自己还留了个问题在这里了。

问题解决了,在windowProc里截获WM_IME_STARTCOMPOSITION时调用ImmSetCompositionWindow可实现。


LRESULT CXXWnd::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
if(message == WM_IME_STARTCOMPOSITION)
{

HIMC hImc = ImmGetContext(GetSafeHwnd());
COMPOSITIONFORM cfs;

cfs.dwStyle = CFS_POINT;
cfs.ptCurrentPos.x = 1;
cfs.ptCurrentPos.y = 5;
if(ImmSetCompositionWindow(hImc, &cfs))
{
int x = 0;
}
ImmReleaseContext(GetSafeHwnd(), hImc);

}
return CWnd::WindowProc(message, wParam, lParam);
}

分不太好给,我就大致分一下吧。
DotLSong 2004-01-13
  • 打赏
  • 举报
回复
呵呵,回复一个,以后好查看
zhangcrony 2004-01-13
  • 打赏
  • 举报
回复
哇﹐這么多分呀﹐樓主好富啊﹗
zhangcrony 2004-01-13
  • 打赏
  • 举报
回复
在MSDN里輸入WM_IME_查詢一下﹐不是很多。
checkyvc6 2004-01-13
  • 打赏
  • 举报
回复
那就看看WM_IME_COMPOSITION 和WM_IME_CHAR
CounterHack 2004-01-13
  • 打赏
  • 举报
回复
up!
papaya_stone 2004-01-12
  • 打赏
  • 举报
回复
在你的窗口中处理输入法的消息。
输入法的消息都是以:WM_IME_开头的,可以查MSDN。
chenzhou35 2004-01-12
  • 打赏
  • 举报
回复
不好意思,没有突出重点,我的窗口不是一个Edit,Edit自己完成了这些东东(应该不是输入法做的),当然不用我们再操心了,不过非Edit的窗口该怎么弄呢。
checkyvc6 2004-01-12
  • 打赏
  • 举报
回复
找到IME的窗口句柄然后在OnChange里面给该窗口发送消息。或者SetWindowPos

其实好多输入法可以自动实现你的功能象紫光就可以

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧