?? inputlanguage.cpp
字號:
#include "StdAfx.h"
#include ".\inputlanguage.h"
CInputLanguage::CInputLanguage(void)
: ime_x(0)
{
m_pILHead = NULL;
LoadInputLanguage();
}
CInputLanguage::~CInputLanguage(void)
{
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);
ime_x++;
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;
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -