怎么指定输入法窗口出现的位置

andyzhshg 2009-12-14 04:10:56
请问怎么指定输入法在我的程序里出现的位置?

我的一个程序要有插入文字的功能,但是当输入中文时输入法总是出现在一个固定的位置,请问怎么才能让输入法窗口出现在我的插入光标的位置呢
...全文
341 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
MoXiaoRab 2009-12-14
  • 打赏
  • 举报
回复
LS的真快
vivvan 2009-12-14
  • 打赏
  • 举报
回复
用DX自绘Edit控件往往没有真是的EDIT窗口存在,所以输入法窗口无法跟随,这里给出一个解决方案

计算当前光标的位置
用API ImmSetCompositionWindow指定IME 窗口到当前光标位置
在WM_KEYDOWN消息中处理

以下是代码:

------------------------------------------------------------------------------------------------
int nSelStart = 0, nSelEnd = 0;
this->GetSel( nSelStart, nSelEnd );
CPoint pntCursor = this->PosFromChar( nSelEnd );

if ( pntCursor.x == -1)
{
nSelEnd -=1;
if ( nSelEnd < 0 )
{
nSelEnd = 0;
}
pntCursor = this->PosFromChar( nSelEnd );
}

HIMC hImc = ImmGetContext(m_hWnd);
COMPOSITIONFORM form;
form.dwStyle = CFS_RECT;
form.ptCurrentPos = CPoint(pntCursor.x,0);
form.rcArea = CRect(pntCursor.x,0,pntCursor.x+300,100);
ImmSetCompositionWindow(hImc,&form);

15,979

社区成员

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

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