我正在开发一个输入法,请问怎样用WIN32API来开发输入法程序。要求写当单击它时,别的程序不会失去焦点。

解决方案 »

  1.   

    从static派生一个类,这要当你生成一个实例的时候,它是不会夺去其它窗口的焦点的,这是在9x的方法,如果在2k,或xp下,窗口有一种noactive的风格,如果窗口有了这种风格也不会得到焦点,第一种方法一样适用。
      

  2.   

    http://www.vckbase.com/vckbase/vckbase11/vc/nonctrls/system_30/1130005.htm
      

  3.   

    RegOpenKey:打开注册表一键
    RegQueryValue:查询一键值
    RegQueryValueEx:同上
    RegCloseKey:关闭打开的键LoadKeyboardLayout:装载输入法
    ActivateKeyboardLayout:激活输入法2、IME信息在注册表中的位置在HKEY_USERS:".DEFAULT\keyboard layout\preload"放的是已安装的输入法,下有几个以数字为名的子键,内容是输入法代号(keyboard layout),如"e0040804",其中左4位是设备代码(device identifier),右4位是语言代码(language identifier)。例如上面:左e004指智能ABC,右0804指大陆中文。(详见MSDN)
    在HKEY_LOCAL_MACHINE:"System\CurrentControlSet\Control\Keyboard Layouts\"放的是已注册的输入法。他的子键名为输入法代号(keyboard layout),内容为该输入法的ime文件,名称等信息。 3、主要思路我们可先把已装的输入法枚举出来(从注册表),用户选择其一后,再激活该输入法。
    两关键函数:
    HKL LoadKeyboardLayout(LPCTSTR pwszKLID,UINT Flags);
    第一个参数是待打开的输入法代号,如"e0040804"(智能ABC);
    第二个参数是标志位,如KLF_ACTIVATE(激活)。HKL ActivateKeyboardLayout(HKL hkl,UINT Flags);
    第一个参数是打开的输入法句柄(由LoadKeyboardLayout返回);
    第二个参数是标志位,如KLF_SETFORPROCESS。(详见MSDN)
      

  4.   

    wwwllg(wwwllg)你好。我试过以下语句,但还是不得啊
    ShowWindow (hWnd, SW_SHOWNOACTIVATE);请指教。