一、涉及编写自己的自己的键盘

由于只使用英文字母跟数字等简单的字符而已,没有包括全角或者中文字符。所以直接使用跟手机的输入密码键盘一样的键盘即可。

遇到的问题: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 }
View Code

相关文章:

  • 2021-04-09
  • 2022-02-28
  • 2022-02-28
  • 2021-06-29
  • 2021-11-29
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-07-05
  • 2021-05-22
  • 2021-09-10
  • 2022-12-23
  • 2022-12-23
  • 2021-06-01
  • 2022-12-23
相关资源
相似解决方案