#include "StdAfx.h"
#include ".\inputlanguage.h"
CInputLanguage::CInputLanguage()
{
m_pILHead = NULL;
LoadInputLanguage();
}
CInputLanguage::~CInputLanguage()
{
Clear();
}
BOOL CInputLanguage::LoadInputLanguage()
{
HKEY hKey,hKey1;
DWORD cp=16;
char lp[15];
CString szID;
CString szKeyName,szKeyName1;
szKeyName = "Keyboard Layout\\Preload";
szKeyName1 = "System\\CurrentControlSet\\Control\\Keyboard Layouts\\";
int i=1;
szID.Format("%d",i);
DWORD lpT=REG_SZ;
if(::RegOpenKey(HKEY_CURRENT_USER,szKeyName,&hKey)==ERROR_SUCCESS )
{
while(::RegQueryValueEx(hKey,szID,NULL,&lpT,(LPBYTE)lp,&cp) == ERROR_SUCCESS )
{
CString szTempName;
szTempName = szKeyName1 + (LPCTSTR)(LPTSTR)lp;
if(RegOpenKey(HKEY_LOCAL_MACHINE,szTempName,&hKey1)==ERROR_SUCCESS )
{
char lpD[100];
DWORD lpS=100; //DataSize
if(RegQueryValueEx(hKey1,"Layout text",NULL,&lpT,(LPBYTE)lpD,&lpS)==ERROR_SUCCESS)
{
IL* p1,*p2;
p1 = m_pILHead;
p2 = new(IL);
strcpy(p2->ilID,lp);
strcpy(p2->szName,lpD);
p2->pNext = NULL;
if( p1 )
{
while( p1->pNext ){ p1 = p1->pNext ; }
p1->pNext = p2;
}
else
{
m_pILHead = p2;
}
}
}
::RegCloseKey(hKey1);
i++;
szID.Format("%d",i);
}
}
::RegCloseKey(hKey);
return (m_pILHead != NULL );
}
BOOL CInputLanguage::SelectInputLanguage(IL *pIL)
{
if( !pIL ) return FALSE;
HKL hkl;
hkl=LoadKeyboardLayout(pIL->ilID,KLF_ACTIVATE);//装载输入法
if(hkl==NULL) return FALSE;
else{
ActivateKeyboardLayout(hkl,KLF_SETFORPROCESS);//激活输入法
}
return TRUE;
}
void CInputLanguage::Clear()
{
IL* p1,*p2;
p1 = m_pILHead;
while( p1 )
{
p2 = p1;
p1 = p1->pNext;
delete(p2);
}
m_pILHead = NULL;
}
//获得输入法信息链表头结点指针。
IL* CInputLanguage::GetInputLanguageList()
{
return m_pILHead;
}
windows输入法切换



在Windows操作系统中,输入法切换是一项基础且重要的功能,它允许用户在不同的语言或输入方式之间自由切换,以适应不同的文字输入需求。本篇将详细阐述“windows输入法切换”的相关知识点,以及与之相关的“InputLanguage.cpp”和“InputLanguage.h”文件可能涉及的内容。 1. **Windows输入法框架**: Windows操作系统提供了内置的输入法引擎框架(Input Method Manager,IMM),用于管理各种输入法。用户可以通过任务栏右下角的语言栏或者键盘快捷键(通常是`Ctrl+Shift`或`Alt+Shift`)来切换不同的输入法。 2. **输入法注册与管理**: 在Windows中,每种输入法都有一个对应的动态链接库(DLL)文件,系统通过加载这些DLL来实现输入法的功能。开发者可以通过注册表或者其他配置文件来添加、删除或更改输入法。 3. **API接口**: “InputLanguage.cpp”和“InputLanguage.h”很可能包含了与Windows API交互的代码,尤其是与输入法相关的函数,如`ImmGetActiveIME`、`ImmAssociateContext`和`ImmGetCandidateListA/W`等。这些API用于获取当前活动的输入法、设置输入法上下文以及获取候选词列表等。 4. **自定义输入法**: 如果你正在开发一个自定义输入法,那么“InputLanguage.cpp”可能是实现输入法逻辑的核心代码,包括拼音处理、字形转换、候选词生成等。而“InputLanguage.h”则可能包含输入法类的声明和一些公共函数的原型定义。 5. **多语言支持**: Windows支持多种语言的输入,包括但不限于中文、英文、日文、韩文等。输入法切换不仅涉及到语言的选择,还包括了不同字符集的切换,如简体中文、繁体中文、GBK等。 6. **特殊情况处理**: 描述中提到的“编辑框对输入法有特殊要求时使用”,可能指的是特定应用程序或特定编辑环境下,需要对输入法进行限制或指定。这可能涉及到使用API如`ImmSetContext`来设置输入法上下文,以满足特定场景的输入需求。 7. **输入法切换快捷键**: 默认的输入法切换快捷键是`Ctrl+Shift`,但用户也可以根据自己的习惯通过控制面板进行修改。此外,`Alt+Shift`通常用于在已安装的输入语言之间切换。 8. **系统设置与配置**: 用户可以通过“控制面板”或“设置”中的“时间和语言”选项来管理输入法,包括添加、移除输入法,设置默认输入法,以及调整输入法的显示顺序。 9. **编程接口**: 对于程序员来说,Windows SDK提供了一系列接口,如`EnumInputContext`用于遍历当前窗口的所有输入法上下文,这对于编写需要控制输入法的程序非常有用。 10. **输入法状态监控**: 可以通过`ImmGetState`和`ImmGetOpenStatus`等API获取输入法的状态,例如是否打开,是否处于大写或全角模式等。 “windows输入法切换”涉及到的是Windows系统如何管理和切换不同输入法的机制,以及如何通过编程接口来控制和自定义这个过程。通过深入理解这些知识点,开发者可以创建更符合用户需求的输入法应用或工具。























- 1

- 粉丝: 137
- 资源: 12
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 毕业设计-基于安卓的共享按摩椅系统设计与实现.zip
- 毕业设计,基于php,mysql,html,css,js,jquery的VB论坛网站.zip
- 基于jsp+ssm设计的中国旅游网站管理系统
- 永磁同步模型电流预测控制结合滑模控制技术研究与实现:新型趋近律及预测算法的优化应用,永磁同步模型电流预测控制结合滑模控制策略:提升系统鲁棒性与稳态特性,永磁同步模型电流预测控制+滑模控制 1速
- 基于Vue3+Nodejs+MySQL设计的动漫网站(毕业设计).zip
- Matlab数字图像处理毕业设计课题赏析.zip
- dafuweng2_downcc.zip
- 基于 Rasa 设计的中文天气情况问询机器人(chatbot), 带 Web UI 界面.zip
- 基于JavaWeb设计模拟实现电商系统.zip
- 基于海光技术新增加解密插件的vpp高性能国密IPSec VPN数据转发平台设计源码
- 基于人工智能的 Android 写诗应用,无须联网随时随地写藏头诗.zip
- 家政项目(后台管理、小程序、安卓、支付).zip
- 基于HTML与CSS的丫丫书屋后宫小说分享基地设计源码
- 基于flask实现数据分析,显示在网页中.zip
- 基于javascript设计的2048小游戏.zip
- 基于TypeScript的fktv-webui点歌台设计源码



- 1
- 2
- 3
- 4
- 5
前往页