以下是微软TSF输入法取坐标的方法,从里面扒出来的

int 取坐标(ITfContext *pContext, TfEditCookie ec, ITfComposition* pRangeComposition){
	long x = 0;
	long y = 0; 
	HRESULT hr = S_OK;
	BOOL isClipped = TRUE;
	ITfContextView* pContextView = nullptr;
	ITfRange* _pRangeComposition;
	RECT rc;
	ITfRange* pRange = nullptr;
	pRangeComposition->GetRange(&pRange);
	

	hr = pContext->GetActiveView(&pContextView);//获取上下文的活动视图
	if (FAILED(hr)){
		return 0;//获取失败
	}
	pContextView->GetTextExt(ec, pRange, &rc, &isClipped);
	
	x = rc.left;
	y = rc.top;
	pContextView->Release();
	pRange->Release();
	HWND hwnd = FindWindowEx(NULL, NULL, L"cppLog", NULL);
	LPRECT lpRect=nullptr;
	GetWindowRect(hwnd, lpRect);
	MoveWindow(hwnd, x, y, lpRect->right - lpRect->left, lpRect->bottom - lpRect->top, TRUE);
	return S_OK;
}
//获取客户端矩形
BOOL CBaseWindow::_GetClientRect(_Inout_ LPRECT lpRect)
{
    if (_wndHandle != nullptr)
    {
        return GetClientRect(_wndHandle, lpRect);
    }
    else
    {
        *lpRect = _RectOfVirtualWnd;
        return TRUE;
    }
}


相关推荐

输入法开发之:疑难杂症

套娃开始:当键盘事件被触发时,获得的参数是ITfContext。但是ITfContext并不能直接修改内容添加文字等,需要调用RequestEditSession,传入一个ITfEditSession

微软输入法TSF SampleIME 源码分析(转载)

类:CCandidateWindow,候选字窗口CCompositionPricessorEngine,拼写引擎CSampleIME,主程序CStringRange, 一个特殊的字符串类 见于 Sam

输入法的注册、安装和卸载

注册输入法输入法的安装和普通应用程序有一个大的区别是,除了复制文件到安装目录、做一些必要的设置外,还需要向Windows系统注册这个输入法。我们前期一篇博文 TSF(Text Service Fram

逗比的输入法实现(二):基础概念和常用接口

为什么叫 Meow?因为这是给猫用的输入法。。。目录(一):基本情况(二):基础概念和常用接口(三):整体构架(四):编辑和候选(五):界面管理和无界面模式(六):词库和候选算法(七):皮肤的实现(八

Windows IMM-IME汉字输入法

1.IMM与IMEIMM是Input Method Manage(输入法管理器)的缩写,IME是Input Method Editor(输入法编辑器)的缩写。微软公司在Windows 95/98/NT

TSF(Text Services Framework)和输入法

1.TSF输入接口IMM-IME架构成熟,稳定,易于实现,在Windows中被广泛使用,甚至在Linux曾大量使用的中文输入接口SCIM中也可以看到IMM-IME的影子。但是由于IMM-IME在操作权

[输入法]TSF框架中预先上屏的字符管理和控制

在TSF框架中有时候我们需要通过框架上屏一些占位字符来进行定位,这时候我们就需要对预先上屏的字符进行管理,以微软的输入法为例图中红框框选出来的部分就是预先上屏的字符。在TSF框架中通过ITfRange

快速搭建一款输入法(封装输入法引擎)

输入法最核心的是输入法引擎,输入法引擎负责加载和管理输入法配置和输入法的词库,输入法引擎对用户输入的拼音字符串进行处理并返回对应的候选列表。通过引入输入法引擎我们就可以将我们输入法的拼音串转换成对应的

输入法TSF框架候选栏定位研究

在开发输入法应用的时候,我们需要让候选栏时刻跟踪输入光标的位置,来进行输入。但候选栏定位不准,一直会困扰输入法的开发者。windows老的输入法框架imm在部分场景下比如chrome应用中会定位不准,

[输入法]Qt实现软键盘

在使用输入法的时候,为了输入一些特殊字符我们往往会用到软键盘和符号大全。符号大全和软件盘是一类程序,主要实现的就是通过界面点击向目标程序输出对应的符号。这里介绍一下如何通过QT编写软键盘类程序,实现软