CEGUI中回车键,退格键的响应

简介:

前面做的那个程序,回车键和退格键用不了。

后来查了下资料发现

injectKeyDown()这个函数传入的是扫描码,而windows消息机制按键出来的是虚拟键码,两个码不一样。

后来无意中看到一个函数。

UINT VirtualKeyToScanCode(WPARAM wParam, LPARAM lParam) 

if(HIWORD(lParam) & 0x0F00) 

UINT scancode = MapVirtualKey(wParam, 0); 
return scancode | 0x80; 
}
 
else 

return HIWORD(lParam) & 0x00FF; 
}
 
}

 

断点调试了下,主要是红色部分的代码在起作用。

翻越了下MSDN

WM_KEYDOWN:

wParam
Specifies the virtual-key code of the nonsystem key.
lParam
16-23
Specifies the scan code. The value depends on the OEM.

大家注意,从16到23位就是扫描码了。

所以那个函数提取高2位然后在 & 0x00FF屏蔽掉前面右移的(以防万一)。

最后得到的就是扫描码了。

在CEGUI windows消息响应机制中添加如下就好。

case WM_CHAR:
CEGUI::System::getSingleton().injectChar((CEGUI::utf32)wParam);
break;
case WM_KEYDOWN:
CEGUI::System::getSingleton().injectKeyDown((CEGUI::utf32)(VirtualKeyToScanCode(wParam, lParam))); 
break;
case WM_KEYUP:
CEGUI::System::getSingleton().injectKeyUp((CEGUI::utf32)(VirtualKeyToScanCode(wParam, lParam))); 
break;
目录
相关文章
C程序需要按下回车键才能读取字符
C程序需要按下回车键才能读取字符
70 0
PAT乙级(散列) PAT.B1033——旧键盘打字
PAT乙级(散列) PAT.B1033——旧键盘打字
91 0
|
Linux
Xshell远程连接Linux按删除键、方向键、退格键是出现乱码——解决方法
Xshell远程连接Linux按删除键、方向键、退格键是出现乱码——解决方法
15 0
Xshell远程连接Linux按删除键、方向键、退格键是出现乱码——解决方法
|
开发工具 C++ Ubuntu
使用vi是方向键变乱码 退格键不能使用的解决方法
一、编辑/etc/vim/vimrc.tiny 由于/etc/vim/vimrc.tiny的拥有者是root用户,所以要在root的权限下对这个文件进行修改。很简单,这个文件里面的倒数第二句话是“set compatible”,如下所示:                                            将“compatible”改成“nocompatible”非兼容模式就可以解决方向键变ABCD的问题了。
1426 0
|
Ubuntu 开发工具
解决vi编辑器不能使用方向键和退格键问题的两种方法
方法1.使用vi命令时,不能正常编辑文件,使用方向键时老是出现很多字母?   在Ubuntu中,进入vi命令的编辑模式,发现按方向键不能移动光标,而是会输出ABCD,以及退格键也不能正常删除字符。这是由于Ubuntu预装的是vim-tiny,而我们需要使用vim-full。
3753 0

热门文章

最新文章