2021SC@SDUSC
文章目录
TSF的构架图
从上面构架图可以看到,TSF提供一个位于应用和输入法实现的间接层(一个Text service/TIP可以是一个输入法,或语音识别,TIP就是一个输入法提供的一个服务,比如百度输入法提供“语音、手写、键盘”输入,那就是3个Tip,但是一般我们都是用键盘输入,所以可以简单认为Tip是一种输入法)。所以,TSF的优点在于,它是一个设备无关,语言中立,可扩展的系统;同时给用户提供一致的输入体验。任何TSF-enabled应用程序都能从任何text service接受文字输入,而不用考虑Text source的具体细节。
TFS代码实例
#include <windows.h>
#include <msctf.h>
int _tmain(int argc, TCHAR* argv[])
{
CoInitialize(0);
HRESULT hr = S_OK;
//PunCha:创建Profiles接口被
ITfInputProcessorProfiles *pProfiles;
hr = CoCreateInstance( CLSID_TF_InputProcessorProfiles,
NULL,
CLSCTX_INPROC_SERVER,
IID_ITfInputProcessorProfiles,
(LPVOID*)&pProfiles);
if(SUCCEEDED(hr))
{
IEnumTfLanguageProfiles* pEnumProf = 0;
//PunCha:枚举所有输入法咯
hr = pProfiles->EnumLanguageProfiles(0x804, &pEnumProf);
if (SUCCEEDED(hr) && pEnumProf)
{
TF_LANGUAGEPROFILE proArr[2];
ULONG feOut = 0;
//PunCha:其实proArr这里应该写成 &proArr[0],因为里面只需要一个TF_LANGUAGEPROFILE变量!而且,proArr[1]都没用到过!
while (S_OK == pEnumProf->Next