行者修一
让输入法跟随你指定的位置
用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
修一居士
阅读(2588)
评论(0)
编辑
收藏
引用
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
网站导航:
博客园
IT新闻
BlogJava
博问
Chat2DB
管理
导航
C++博客
首页
新随笔
联系
聚合
管理
<
2007年5月
>
日
一
二
三
四
五
六
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
统计
随笔 - 15
文章 - 0
评论 - 39
引用 - 0
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
(3)
给我留言
查看公开留言
查看私人留言
随笔档案
2017年11月 (1)
2012年9月 (1)
2007年7月 (2)
2007年5月 (2)
2007年3月 (2)
2007年2月 (2)
2007年1月 (2)
2006年12月 (3)
搜索
最新评论
1. re: 利用匿名管道在父子进程间传递数据[未登录]
看不懂为什么在CreatePipe之后要DuplicateHandle然后CloseHandle原来由CreatePipe创建的通道。
--riverqh
2. re: 初探ogre 事实胜于雄辨
火炬之光也是用的OGRE引擎,你懂的,那么好的游戏,你觉得引擎如果不优秀,会入得了他们的法眼吗?
--annoymous
3. re: Dump调用堆栈的原理以及异常信息的反馈
评论内容较长,点击标题查看
--南斗
4. re: Unicode字符串转换成ANSI字符串
_tsetlocale(LC_ALL,_T(""));
这里的LC_ALL还要包含什么头文件吗?
我编译提示未定义的符号 LC_ALL
--fycom200
5. re: 初探ogre
您好,我想請問關於HightMap問題
地形載入後邊緣會有"鋸齒狀" 該如何消除它的邊緣化??
我使用的是ST_EXTERIOR_CLOSE...
--妍
阅读排行榜
1. 讨厌的 Socket TIME_WAIT 问题(9054)
2. 初探ogre(8816)
3. 利用匿名管道在父子进程间传递数据(7740)
4. Dump调用堆栈的原理以及异常信息的反馈(5269)
5. Windbg调试Release版exe .dll .ocx 等(4798)
评论排行榜
1. 初探ogre(20)
2. Dump调用堆栈的原理以及异常信息的反馈(7)
3. 利用匿名管道在父子进程间传递数据(4)
4. 用汇编调用成员函数(3)
5. 讨厌的 Socket TIME_WAIT 问题(2)