让输入法跟随你指定的位置

用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);

posted on 2007-05-11 00:16 修一居士 阅读(1863) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


导航

<2007年2月>
28293031123
45678910
11121314151617
18192021222324
25262728123
45678910

统计

常用链接

留言簿(3)

随笔档案

搜索

最新评论

阅读排行榜

评论排行榜