原帖由 谢振斌 于 2008-6-17 12:30 发表 
我感觉一般输入法,要取得文档光标位置基本是没问题,但是要取得文档当前的字体字号,却很困难,除非拦截了很多API接口才能实现,不知你有没有办法?
要取得文档光标位置对于EDIT控件来说不难,用lpIMC->cfCompForm.ptCurrentPos直接提取就行,但对于非EDIT类的文档就不灵了,只能用GetCareagePos()。同理,取得文档当前字体字号,对于EDIT控件的文档来说,也是容易得很:
lpIMC->lfFont,非EDIT类的文档分两步,第一步取得当前字体的句柄:
hFont = (HFONT)SendMessage(lpIMC->hWnd,WM_GETFONT,0,0);
第二步通过字体句柄获取字体的信息,这一步费了不少的时间,主要是找不到相应的API函数,网上搜了很久也没有找到相关的信息,MFC的倒是有,但不适用,估计谢兄的IME也不是用MFC写的,没办法只能对Get开头的API函数一个个的查,最后终于找到了它:GetObject()
HFONT hFont;
LOGFONT lf;
hFont = (HFONT)SendMessage(lpIMC->hWnd,WM_GETFONT,0,0);
GetObject(hFont,sizeof(LOGFONT),&lf);
常用的软件我试过都没问题,谢兄抽时间对各种软件试一下,看看灵不灵。 |