使用vs2005开发的输入法在64位的windows下必须先由32位的程序调用后64位程序调用才正常

  1. 使用vs2005开发的windows下的输入法程序。
  2. 在以前的32位windows系统下完全正常。
  3. 在64位windows系统下32位应用程序去调它,完全正常。
  4. 在64位windows系统下,安装完成之后, 用64位程序去调用该输入法输入,选字窗口软键盘等出不来。 必须先由32位的程序调用后,64位程序调用才能正常使用。
  5. 查日志发现,选择窗口等不出来时等使用不正常时 是系统未去调用窗口注册时的函数:“wc.lpfnWndProc"对应的函数
  6. 为何在新系统中,刚刚装好时,使用64位程序调用, 此wc.lpfnWndProc对应的函数不执行?
  7. 使用过32位程序是能执行的,而且一旦使用32位程序调用过输入法,64位程序再调试也一切正常了。
  8. ps,还有个问题,在用户程序切换输入法的输入法列表中,win7前此输入法显示程序中的资源图标,win8及以后的系统就只显示“简体”二字。

图片说明
图片说明

vs2005太老的系统了,可能都不支持64bit,建议你用vs2015,x64模式编译看看
关于图标的问题,传入结构体的 hBmpItem https://docs.microsoft.com/en-us/windows/win32/api/imm/ns-imm-imemenuiteminfow

我建议换一下版本,因为像这样的问题我们家电脑也出现过。