• MFC 用Imm类库实现输入法修改输入模式


    1.导入Imm类库,电脑里都有

    #include 
    #pragma comment(lib, "imm32.lib")
    

    2.在想要的地方增加代码

    HIMC himc = ImmGetContext(m_hWnd);
    	if (himc != NULL) {
    		ImmSetOpenStatus(himc, TRUE);
    		ImmNotifyIME(himc, NI_COMPOSITIONSTR, CPS_CANCEL, 0);
    		DWORD dwConvMode, dwSentMode;
    		if (!ImmGetConversionStatus(himc, &dwConvMode, &dwSentMode)) {
    			AfxMessageBox(_T("无法获取当前转换状态"));
    		} else {
    			// 尝试设置为平假名模式
    			// 对搜狗输入法无效 对谷歌日语输入法有效
    			if (!ImmSetConversionStatus(himc, IME_CMODE_NATIVE, dwSentMode)) {
    				AfxMessageBox(_T("设置平假名模式失败"));
    			} else {
    				//AfxMessageBox(_T("成功设置为平假名模式"));
    			}
    		}
    		ImmReleaseContext(m_hWnd, himc);
    	}
    

    这里是对这三个函数调用的作用进行解释:
    ImmSetOpenStatus(hIMC, TRUE);
    作用:该函数用于设置输入上下文(Input Context)的打开状态。 参数: hIMC:输入上下文的句柄。
    TRUE:表示将输入上下文打开,允许输入法处理器进行输入处理。 注意:打开输入法上下文后,输入法处理器将被启用并可以处理输入。
    ImmNotifyIME(hIMC, NI_COMPOSITIONSTR, CPS_CANCEL, 0);
    作用:该函数用于向输入法处理器发送通知消息,取消正在进行的输入组合字符串(Composition String)的处理。 参数:
    hIMC:输入上下文的句柄。 NI_COMPOSITIONSTR:通知类型,表示取消组合字符串的操作。
    CPS_CANCEL:指定取消当前组合字符串的方式。 0:额外参数,通常可以设为0。
    注意:在切换输入法输入模式时,可能需要取消当前的组合字符串,以清空输入状态。
    ImmSetConversionStatus(hIMC,IME_CMODE_NATIVE, dwSentMode);
    作用:该函数用于设置输入法的转换状态,指定输入法的模式。 参数: hIMC:输入上下文的句柄。
    IME_CMODE_NATIVE:表示切换到日语平假名的输入模式。 dwSentMode:转换模式标志,通常可以设为0。
    注意:通过这个函数,您可以设置输入法的转换状态,例如切换到日语平假名、片假名输入模式等。
    这些函数通常用于与输入法处理器进行交互,控制输入法的状态和输入模式。在使用这些函数时,请确保了解其参数含义并根据需要进行正确配置,以实现您所需的输入法操作。

  • 相关阅读:
    RPA的优势和劣势是什么,RPA能力边界在哪里?
    网络安全--对称加密
    在 Amazon SageMaker 上使用 ESMFold 语言模型加速蛋白质结构预测
    Linux ubuntun 手动安装配置OpenJDK1.8
    对抗生成网络总结
    HTTP/1.1协议的状态码
    GoFrame v2.5 版本发布,企业级 Golang 开发框架
    最新CleanMyMac X4.12.1中文版Mac系统优化清理工具
    [附源码]java毕业设计学生量化考核管理系统
    ProSci 14-3-3(磷酸 Ser58)抗体说明书
  • 原文地址:https://blog.csdn.net/weixin_46047677/article/details/139267641