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

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

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

你可能感兴趣的:(让输入法跟随你指定的位置)