首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络游戏 >

用D3D写文本框控件处理输入的字符一般用不用DirectInput?该如何处理

2012-03-08 
用D3D写文本框控件处理输入的字符一般用不用DirectInput?我在用D3D写编辑框控件,就像游戏里的聊天框一样,

用D3D写文本框控件处理输入的字符一般用不用DirectInput?
我在用D3D写编辑框控件,就像游戏里的聊天框一样,处理用户输入的字符。

我发现,如果要用DirectInput的键盘扫描码来判断用户输入了一个什么字符(比如小写的a或是大写的P)的话,
需要做以下几个步骤:
1:将DirectInput扫描码转换成ASCII码。
2:作如下判断:
  1:CapsLock未被锁定,并且Shift未被按下:小写
  2:CapsLock被锁定,并且Shift被按下:小写
  3:CapsLock被锁定,并且Shift未被按下:大写
  4:CapsLock未被锁定,并且Shift被按下:大写
这样我才能最终确定用户输入了一个什么字符!

结果渲染这个字符的性能非常差。


而如果用windows的消息来处理的话,直接把窗口函数的wParam值转换成字符就可以了。一个函数都不调用。

另外对于用户输入的汉字,我是用IME相关API来处理的,同样要用windows的窗口函数。

那这样的话,就用不着DirectInput了?

我是感觉这么多东西全用窗口函数来处理的话,会不会影响到D3D的渲染速度??
一般是如何做的?


[解决办法]
就用Windows的消息吧,感觉要好些
[解决办法]
楼主终于作出了明智的选择。祝你成功!
[解决办法]
如果消息循环结构写的好的话,不会发生降低效率的问题
建议每次主循环都先处理一遍消息,再调用渲染函数。
渲染函数不要写在else内,因为渲染不需要条件,每次主循环至少要渲染一次
[解决办法]
如果是纯键盘输入,而不需要游戏手柄的话,处理输入用DirectInput比Windows消息模式几乎没有任何优势。

在GameDev和MSDN上有两篇比较DI和WM的文章。
具体见:
http://www.gamedev.net/community/forums/mod/journal/journal.asp?jn=300672&reply_id=3074105
http://msdn.microsoft.com/en-us/library/ee418864(VS.85).aspx

热点排行