libsdl输入中文时输入法不显示,将WM_IME_SETCONTEXT事件处理给注释即可。

WM_IME_SETCONTEXT

If the application draws the composition window, the default IME window does not have to show its composition window. In this case, the application must clear the ISC_SHOWUICOMPOSITIONWINDOW value from the lParam parameter before passing the message to DefWindowProc or ImmIsUIMessage. To display a certain user interface window, an application should remove the corresponding value so that the IME will not display it.

修改SDL_windowskeyboard.c找到IME_HandleMessage函数改为以下代码即可。

SDL_bool
IME_HandleMessage(HWND hwnd, UINT msg, WPARAM wParam, LPARAM *lParam, SDL_VideoData *videodata)
{
SDL_bool trap = SDL_FALSE;
HIMC himc = 0;
if (!videodata->ime_initialized || !videodata->ime_available || !videodata->ime_enabled)
return SDL_FALSE; switch (msg) {
case WM_INPUTLANGCHANGE:
IME_InputLangChanged(videodata);
break;
//输入法候选框不显示
//case WM_IME_SETCONTEXT:
// *lParam = 0;
// break;
case WM_IME_STARTCOMPOSITION:
trap = SDL_TRUE;
break;
case WM_IME_COMPOSITION:
trap = SDL_TRUE;
himc = ImmGetContext(hwnd);
if (*lParam & GCS_RESULTSTR) {
IME_GetCompositionString(videodata, himc, GCS_RESULTSTR);
IME_SendInputEvent(videodata);
}
if (*lParam & GCS_COMPSTR) {
if (!videodata->ime_uiless)
videodata->ime_readingstring[0] = 0; IME_GetCompositionString(videodata, himc, GCS_COMPSTR);
IME_SendEditingEvent(videodata);
}
ImmReleaseContext(hwnd, himc);
break;
case WM_IME_ENDCOMPOSITION:
videodata->ime_composition[0] = 0;
videodata->ime_readingstring[0] = 0;
videodata->ime_cursor = 0;
SDL_SendEditingText("", 0, 0);
break;
case WM_IME_NOTIFY:
switch (wParam) {
case IMN_SETCONVERSIONMODE:
case IMN_SETOPENSTATUS:
IME_UpdateInputLocale(videodata);
break;
case IMN_OPENCANDIDATE:
case IMN_CHANGECANDIDATE:
if (videodata->ime_uiless)
break; trap = SDL_TRUE;
IME_ShowCandidateList(videodata);
himc = ImmGetContext(hwnd);
if (!himc)
break; IME_GetCandidateList(himc, videodata);
ImmReleaseContext(hwnd, himc);
break;
case IMN_CLOSECANDIDATE:
trap = SDL_TRUE;
IME_HideCandidateList(videodata);
break;
case IMN_PRIVATE:
{
DWORD dwId = IME_GetId(videodata, 0);
IME_GetReadingString(videodata, hwnd);
switch (dwId)
{
case IMEID_CHT_VER42:
case IMEID_CHT_VER43:
case IMEID_CHT_VER44:
case IMEID_CHS_VER41:
case IMEID_CHS_VER42:
if (*lParam == 1 || *lParam == 2)
trap = SDL_TRUE; break;
case IMEID_CHT_VER50:
case IMEID_CHT_VER51:
case IMEID_CHT_VER52:
case IMEID_CHT_VER60:
case IMEID_CHS_VER53:
if (*lParam == 16
|| *lParam == 17
|| *lParam == 26
|| *lParam == 27
|| *lParam == 28)
trap = SDL_TRUE;
break;
}
}
break;
default:
trap = SDL_TRUE;
break;
}
break;
}
return trap;
}

  

libsdl中文输入法候选列表不显示解决方案的更多相关文章

  1. 解决Webstom 2017中,输入法候选框无法显示问题

    一.问题: 如题,IDE编辑界面内,输入法的候选框没法显示,有时需要打中文注释,非常麻烦. 原因:IDE自带的OpenJDK与输入法存在冲突 二.解决: (1)在编辑界面,双shift,搜索:swit ...

  2. Ubuntu16.04搜狗拼音输入法候选栏无法显示中文(英文乱码)

    输入中文时,若候选栏显示英文乱码.无法显示中文,如下图所示,可按如下方式处理: cd ~/.config rm -rf SogouPY* sogou* 然后注销重新登录即可.

  3. 中文输入法在vs2010中失效解决方案

    这样你就可以用切换输入法的方式,输入中文咯.     后来用了2次发现还是有问题,后来我就直接把输入法的切换改成ctrl+1,后来使用就一直没有问题.总之,解决方案视具体情况解决.

  4. 转 Mac 下自带的中文输入法不显示汉字提示问题

    原文 https://blog.csdn.net/moxi_wang/article/details/50721326 当时聊天的时候不知道那个手指头按错了什么键 导致Mac自带的中文输入法不能提示显 ...

  5. Ubuntu中sublime和Foxit Reader不能使用中文输入法解决方案

    虽然Ubuntu下面很多软件同windows下一样,但是经常会出现各种各样的小问题,其中最让人头疼的是软件中的输入法问题. sublime作为一个跨平台的编辑软件,可以支持win,linux和mac系 ...

  6. 修复intellij idea 2017.2中文输入法无候选框,亲测可以用

    注:要说用搜狗拼音8.6版本不会出现这问题.使用拼音的可以去下载安装试一下.用五笔的就可以使用本方法修复,本人就是使用五笔的. 完美解决中文输入法的问题.出现bug的原始是jb自己编译的openjdk ...

  7. Ubuntu14.04安装中文输入法以及解决Gedit中文乱码问题

    1 设置中文显示环境 1. 打开System Settings 2. 打开Personal-> Language Support. 会弹出如下对话框,提示你“语言支持没安装完整”. 点击“Rem ...

  8. 速成KeePass全局自动填表登录QQ与迅雷(包括中文输入法状态时用中文用户名一键登录)

    原文:http://bbs.kafan.cn/thread-1637531-1-1.html 使用目的:1 网页和本地客户端登录一站式解决2 通过KeePss修改密码和登录更方便,可以复制粘贴,省了输 ...

  9. 【原创】在RT1050 LittleVgl GUI中嵌入中文输入法框架

    时隔一年多终于又冒泡了,哎,随着工作越来越忙,自己踏实坐下来写点东西真是越来越费劲,这篇文章也是准备了好久好久才打算发表出来(不瞒大家,东西做完好久了,文章憋了一年了,当真"高产" ...

随机推荐

  1. HW5.5

    import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner i ...

  2. 经典 Linux & VIM 教程

    简明 Vim 练级攻略: http://coolshell.cn/articles/5426.html VIM快捷键: http://coolshell.cn/wp-content/uploads/2 ...

  3. PHP写日志什么时候需要加锁?

    先分析fwrite,直接找到PHP源代码: static size_t _php_stream_write_buffer(php_stream *stream, const char *buf, si ...

  4. cluster模块实现多进程-让我的代理服务速度飞起来了

    cluster模块实现多进程 现在的cluster已经可以说完全做到的负载均衡,在做代理服务和http服务器的时候能够讲服务器性能发挥到最大.来看一下具体的实现吧 var cluster = requ ...

  5. $.post()请求 ation请求,jsp获取的处理结果

    public void write(String content, String charset) { getHttpResponse().setCharacterEncoding(charset); ...

  6. spring4使用websocket

    看到spring4的介绍上说已经支持websocket了,尝试了一下之后各种坑,不如servlet简单,写篇文章来讲解一下自己遇到的坑. 环境:tomcat8+spring4.1.6+jdk8+ngi ...

  7. navicate恢复数据

    恢复psc文件,出现记录数为0 不要使用事务,选用遇到错误继续

  8. SQL Server 阻止了对组件 'Ole Automation Procedures' 的 过程 'sys.sp_OACreate' 的访问

    sqlserver2008导入excel到数据库的时候报错: SQL Server 阻止了对组件 'Ole Automation Procedures' 的 过程 'sys.sp_OACreate' ...

  9. 批处理:循环解压不同文件夹下的zip压缩包

    结构如下 A文件夹: A1文件.zip A2文件.zip A3文件.zip B文件夹: B1文件.zip B2文件.zip B3文件.zip ...... 批处理文件:rezip.bat如下 @ech ...

  10. java10 WeakHashMap

    WeakHashMap: 对象所占用的区域是不能直接操作的,都是通过引用来操作. 引用分类: .强引用(StrongReference):gc(垃圾回收机制)运行时不回收.例如字符串常量池.字符串虽然 ...