bsp; if(RegQueryValueEx(hk1,"Layout text",NULL,&lpT,lpD,&lpS)!=ERROR_SUCCESS)
MessageBox("Query error",(LPCTSTR)lpD);
m_cb1.AddString((LPCTSTR)lpD);
delete lpD;
}
else MessageBox("open error");
RegCloseKey(hk1);
}
::RegCloseKey(hk);
m_cb1.SetCurSel(0);
在OnSetfocusEdit1()加入如下代码: CString temp;
temp=m_cb1.GetCurSel()!=CB_ERR?lst[m_cb1.GetCurSel()]:"00000409";
HKL hkl;
hkl=LoadKeyboardLayout(temp,KLF_ACTIVATE);//装载输入法
if(hkl==NULL) OnOK();
ActivateKeyboardLayout(hkl,KLF_SETFORPROCESS);//激活输入法
在OnSelchangeCombo1()加入如下代码: m_edt1.SetFocus();
即可编译运行。
5、注意:win2000下有所不同。注册表HKEY_USERS:".DEFAULT\keyboard layout\preload没有子键只有以数字为名的项,值为输入法代号(keyboard layout)。在示例代码中不仅提供了WIN 9X下的代码,也提供了2000下的相应代码段,具体请参考示例工程。