请教大家:
如何在CRichEditView中得到当前系统正在使用什么输入法?
谢谢!

解决方案 »

  1.   

    #include <wingdi.h>    //枚举字体用
    char* fName="";//定义一个变量用来保存输入法信息int CALLBACK mEnumFontFamExProc(ENUMLOGFONTEX *lpelfe,NEWTEXTMETRICEX *lpntme,unsigned long FontType,long lParam)//回调函数
    {
     strcat(fName, (char*)lpelfe->elfFullName);
     strcat(fName,"\r\n"); return 1;

    }
    void GetCharset()//获得输入法的函数
    {
      HWND hW=::GetFocus();
      HDC hdc=::GetDC(hW);
      LOGFONT lf;
      memset(&lf,0,sizeof(lf));
      lf.lfCharSet = DEFAULT_CHARSET; //如果该值为 CHINESEBIG5_CHARSET将会列出所有字体
      lf.lfFaceName[0] ='\0';
      lf.lfPitchAndFamily = 0;
      ::EnumFontFamiliesEx(hdc,&lf,(FONTENUMPROC)mEnumFontFamExProc,0,0);           MessageBox(fName);//显示字体名称 
    }
      

  2.   

    楼上大虾,我的意思是我想知道当前输入法的信息。比如是中文,还是ACS码。还是俄文的。
    我通过截WM_INPUTLANGCHANGE消息可知输入法切换的消息。但是一打开窗口时,(没人切换
    输入法)就不知道当前输入法了。
    楼上大虾,请在帮我一次
      

  3.   

    你是想得到当前的输入法是吧?
    我总结了一下.
    先用GetKeyboardLayoutName()可以轻松地得到输入法的ID
    然后在注册表的
    HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Control\\Keyboard Layouts\里得到这个ID所对应的中文的输入法的名称.我写了两个函数:
    void GetLayouName()//直接调用此函数将显示出当前的输入法
    {
        CString disp;//用来保存名称
        CString ID;  //用来保存ID
        GetKeyboardLayoutName(ID.GetBuffer(ID.GetLength()));
        ID.ReleaseBuffer();
        disp=LoadIMEInfo2000(ID);//通过ID得到名称的函数,在下面
        MessageBox(disp);        //显示
    }CString CMydilog::LoadIMEInfo2000(CString p)//得到当前使用的输入法名称
    {
    HKEY hk;

    CString str;
    CString value;

    str="System\\CurrentControlSet\\Control\\Keyboard Layouts\\";//keyboardlayoutLayout
    str+=p;
    DWORD type=REG_SZ;
    if(::RegOpenKey(HKEY_LOCAL_MACHINE,str,&hk)==ERROR_SUCCESS)//打开键
    {

    LPBYTE lpD=new BYTE[80];//DataValue
    DWORD lpS=80;    //DataSize
    if(RegQueryValueEx(hk,"Layout text",NULL,&type,lpD,&lpS)!=ERROR_SUCCESS)
    AfxMessageBox("Query error");
    else
    {
    value=lpD;
    }

    delete lpD;
    }
    else 
    AfxMessageBox("open error");
    ::RegCloseKey(hk);

    return value;}
    OK了,试试看,当你运行一次GetLayouName() 就会显示出当前的输入法名称了.