扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:周毅 来源:yesky 2007年11月16日
关键字: Visual C++ 编程 控制 输入法
struct IL{ char ilID[15]; //输入法代号。 char szName[100];//输入法的说明文字。 IL* pNext; }; |
//此函数只针对Windows2000以上版本,如要在Windows98版本的代码请与笔者联系。 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; } |
CInputLanguage::CInputLanguage() |
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者