一、涉及编写自己的自己的键盘
由于只使用英文字母跟数字等简单的字符而已,没有包括全角或者中文字符。所以直接使用跟手机的输入密码键盘一样的键盘即可。
遇到的问题:1、使用法keybd_event()的方式进行发送消息,不管发送大小写字母都是显示小写字母
2、键盘不能有焦点状态,否则使用的keybd_event则无法将字符发送给edit框。如果使用有焦点的状态则会导致edit控件跟我自己编写的键盘耦合性太大。
3、由于使用duilib的tilelayout而出现键盘的所有按键无法正常对齐。
解决方案:
1、使用keybd_event()则是模拟咱们在普通的键盘上的各种按键操作。要出现大写字母或者其他的"@#$%"等字符,则需要模拟键盘的输入 shift+对应的位置的字符。(这里我使用查表的方式,进行操作。当需要按shift键+其他按键才能实现的放在同一组,而另外的不许shift按键的以相同的顺序放在另一组。)(这里有一个技巧来获取每个字符对应的键值:编写一个能够获取键值的小软件,然后将每个按键的键值获取到。并通过刚才使用的查表方式对应的字符在第几个位置,从而发送该按键的键值)
1 #pragma once 2 3 namespace DuiLib { 4 5 class KeyValMag 6 { 7 public: 8 KeyValMag(void); 9 ~KeyValMag(void); 10 11 void SendMsg(int nVal); 12 13 private: 14 int FindSiftData(char cData); 15 int FindLowData(char cData); 16 }; 17 }