C++ 在Windows Mobile上更改键盘布局

C++ 在Windows Mobile上更改键盘布局,c++,windows-mobile,C++,Windows Mobile,在应用程序中有一个对话框,其中只有数字字符串条目有效。因此,我想设置数字键盘布局 有人知道如何模拟键盘上的按键或任何其他方法来更改键盘布局吗 谢谢 您可以使用InputModeEditor: InputModeEditor.SetInputMode(textBox1,InputMode.Numeric); 你不需要 与完整窗口一样,您可以将编辑控件设置为仅数字输入。您可以执行此操作,也可以在编辑控件属性的对话框编辑器中执行 当仅数字编辑控件进入焦点时,SIP应自动显示数字键盘 只有一种方法可以

在应用程序中有一个对话框,其中只有数字字符串条目有效。因此,我想设置数字键盘布局

有人知道如何模拟键盘上的按键或任何其他方法来更改键盘布局吗


谢谢

您可以使用InputModeEditor:

InputModeEditor.SetInputMode(textBox1,InputMode.Numeric);
你不需要

与完整窗口一样,您可以将编辑控件设置为仅数字输入。您可以执行此操作,也可以在编辑控件属性的对话框编辑器中执行


当仅数字编辑控件进入焦点时,SIP应自动显示数字键盘

只有一种方法可以做到这一点(编辑:这是指非智能手机Windows Mobile中的SIP,因此我不确定它是否与您的问题相关),它确实涉及模拟鼠标点击123按钮。然而,这只是问题的一半,因为您还需要知道键盘是否已经处于数字模式。这样做的方法是在键盘左上角附近偷看一个像素——如果你看看123按钮是如何工作的,你会看到它是windows背景上的系统文本,然后在数字模式下反转(因此像素只有在数字模式下才是系统文本颜色)。为了保证它在所有设备上都能正常工作,你还需要做一点奇怪的事情(你也必须在键盘上画一个像素)


幸运的是,我有一个易于使用的代码示例,可以完成所有这些。不幸的是,它是C#,但我认为它至少应该为您指明正确的方向。

可以通过发送带有以下参数的消息来实现结果:SendMessage(EM_SETINPUTMODE,0,EIM_number);你在运行智能手机吗?你在用什么设备?这是一台袖珍电脑(HTC TyTN II)