我有一个带有Windows Mobile 6.5操作系统的智能设备,我想通过.Net CF 3.5和C#语言为这个设备编写一个应用程序。这个设备的keybpad看起来像这张图片:
如右上图所示,文本和数字放在同一个键上。例如,如果我们想要写一些以'A'开头的东西,我们需要输入一次键2,那么2有“ABC”。如果我们想输入'B',按键2两次,然后输入'C'三次。
Q1 即可。我不能用这个键盘输入英文字母,我只能输入数字。我想在文本框中输入英文字母(以及波斯文字母)。我可以通过keybd_event()
函数extern
来完成这项工作吗?
Q2 即可。我有3个输入字符的方法,同时必须启用其中一个方法:
另一方面如何在三种方法之间切换
Q3 即可。如何根据描述的3种输入方法之一,通过适当的字符 显示 键盘? (一次用英语,另一次用波斯语,另一次用数字)
此致
答案 0 :(得分:1)
如果仅在一个应用程序(Compact Framework)中需要特殊键解释,则可能使用SDF(SmartDeviceFramework)是coice。请参阅http://www.hjgode.de/wp/2012/09/20/windows-mobile-cf-how-to-catch-f1-and-f2-in-weh/
上的KeyTest3AKsdf在消息处理程序中,您需要管理键盘平面(数字,英文字母,波斯语字母)以及可能的按键超时,以便能够决定是否在一段时间内多次按下某个键(以生成这些ABC可选输出)。
定义要在平面之间切换的键或组合。
观看进来的消息并决定要做什么。您可以更改消息的副本,将其发布到消息队列并返回true以让Windows系统知道您已处理消息。
您可以将keybd_event用于winuser.h和winuserm.h中定义的简单密钥。但是对于扩展字符,这将变得复杂(找到正确的值序列)。我会使用PostMessage和WM_CHAR来扩展符号和字母。
此外,您可能需要安装带有波斯字形的trueype字体。默认的英文操作系统fimrware通常只支持unicode字形的子集。另请参阅http://www.hjgode.de/wp/2011/04/06/mobile-development-a-simple-unicode-character-map/