艾伟:在Windows Mobile上实现自动拼写和匹配建议

简介: 使用Windows Mobile手机的朋友,应该有一个体会,那就是要查找某个联系人,在输入目标联系人名字的过程中,系统会实时按照所输入的内容来筛选,呈现在列表中,供用户选择。同样,如果我们要直接拨打电话,在输入电话号码的过程中,系统也会实时地将输入的号码和联系人库进行比较,将匹配的联系人显示在列表中,供用户选择。

    使用Windows Mobile手机的朋友,应该有一个体会,那就是要查找某个联系人,在输入目标联系人名字的过程中,系统会实时按照所输入的内容来筛选,呈现在列表中,供用户选择。同样,如果我们要直接拨打电话,在输入电话号码的过程中,系统也会实时地将输入的号码和联系人库进行比较,将匹配的联系人显示在列表中,供用户选择。

    大家不要小看了这一个功能,其实,在设备小巧、需要花费大力气来处理输入和输出的嵌入式设备上,用户对UI的体验是至关重要的。在我看来,这个自动拼写建议是非常有用的,至少目前很多软件(诸如各类输入法等)都有这个功能。那么,如何来实现这个功能呢?如何在自己的应用程序中添加这个Feature呢?大家看过christec的两篇Blog之后(这两篇Blog的链接我放在文章的最后),应该就会很清楚了。

    首先,我们需要了解的就是SHSetInputContext函数。为了在托管环境中使用,我们需要进行P/Invoke,具体代码如下:

Code
using System.Runtime.InteropServices;

private enum SHIC_FEATURE : uint
{
 RESTOREDEFAULT 
= 0,

 AUTOCORRECT 
= 1,

 AUTOSUGGEST 
= 2,

 HAVETRAILER 
= 3,

 CLASS 
= 4
};


[DllImport(
"aygshell.dll")]

private static extern int SHSetInputContext(IntPtr hwnd,SHIC_FEATURE dwFeature,[MarshalAs(UnmanagedType.Bool)]ref bool lpValue);

 

    然后,在使用的时候,只要传布尔值给这个函数,如下面的代码,就是禁止auto suggestion

bool  value  =   false ;
SHSetInputContext(textbox1.Handle,SHIC_FEATURE.AUTOSUGGEST,
ref  value);

为了做一个形象的说明,我们可以来试试。首先,新建两个联系人,如下图1所示:

1:新建两个联系人

    然后,将模拟器和蜂窝仿真器建立联系,具体可以参考《Ring Tone Manager on Windows Mobile》。

    接着,启动我们的应用程序,给出的例子是这样的,我们可以发送短信息给某个朋友,在输入其姓名的过程中,系统会和联系人库进行比较,将匹配的人显示出来,供用户选择。如下图2所示:在Recipient中,我只输入了头一个字母“s”,在输入法的上方就出现了联系人中匹配的信息。

2:输入联系人的自动建议

    同样,在输入信息的内容(Message)时,系统也会给出自动拼写建议,如下图3所示:

3:输入信息内容的自动拼写建议

    另外,我们还可以选择是否将电池续航能力的信息发送给对方,如下图4所示:

4:是否包含电池信息选项

    点击发送“send”,我们可以在蜂窝仿真器中看到信息,如下图5所示:

 

5:蜂窝仿真器中的信息

目录
相关文章
|
Java Windows
使用 windows bat 脚本命令一键实现快速配置JDK 环境变量
使用 windows bat 脚本命令一键实现快速配置JDK 环境变量
681 0
使用 windows bat 脚本命令一键实现快速配置JDK 环境变量
|
消息中间件 安全 API
C#实现操作Windows窗口句柄:SendMessage/PostMessage发送系统消息、事件和数据【窗口句柄总结之二】
SendMessage/PostMessage API 可以实现发送系统消息,这些消息可以定义为常见的鼠标或键盘事件、数据的发送等各种系统操作......
5669 1
C#实现操作Windows窗口句柄:SendMessage/PostMessage发送系统消息、事件和数据【窗口句柄总结之二】
|
4月前
|
开发框架 JavaScript .NET
【Azure 应用服务】Azure Mobile App (NodeJS) 的服务端部署在App Service for Windows中出现404 Not Found
【Azure 应用服务】Azure Mobile App (NodeJS) 的服务端部署在App Service for Windows中出现404 Not Found
|
API C# Windows
C#实现操作Windows窗口句柄:常用窗口句柄相关API、Winform中句柄属性和Process的MainWindowHandle问题【窗口句柄总结之三】
本篇主要介绍一些与窗口句柄相关的一些API,比如设置窗口状态、当前激活的窗口、窗口客户区的大小、鼠标位置、禁用控件等,以及介绍Winform中的句柄属性,便于直接获取控件或窗体句柄,以及不推荐...
3197 0
C#实现操作Windows窗口句柄:常用窗口句柄相关API、Winform中句柄属性和Process的MainWindowHandle问题【窗口句柄总结之三】
|
Ubuntu 安全 Linux
【过关斩将般的一步步实现】windows本机通过xftp/xshell连接Ubuntu虚拟机服务器
【过关斩将般的一步步实现】windows本机通过xftp/xshell连接Ubuntu虚拟机服务器
1007 1
【过关斩将般的一步步实现】windows本机通过xftp/xshell连接Ubuntu虚拟机服务器
|
API C# Windows
C#实现操作Windows窗口句柄:遍历、查找窗体和控件【窗口句柄最全总结之一】
C#对Windows窗口或窗口句柄的操作,都是通过 P/Invoke Win32 API 实现的,DllImport引入Windows API操作窗口(句柄),可以实现枚举已打开的窗口、向窗口...
3803 0
C#实现操作Windows窗口句柄:遍历、查找窗体和控件【窗口句柄最全总结之一】
|
JSON Java API
C#winforms实现windows窗体人脸识别
C#winforms实现windows窗体人脸识别
340 0
|
Linux iOS开发 开发者
实现在windows、linux下上传ios app到App Store
实现在windows、linux下上传ios app到App Store
实现在windows、linux下上传ios app到App Store
|
JSON JavaScript 安全
基于Windows微信实现实时收发微信消息App
基于Windows微信实现实时收发微信消息App
1407 0
基于Windows微信实现实时收发微信消息App
|
Web App开发 前端开发 JavaScript
【我的前端】CSS在Windows下实现Mac浏览器滚动条
众所周知,Windows 和 macOS 浏览器的滚动条在默认情况下是不一致的,最为显著的是 macOS 的滚动条是不占据屏幕尺寸的,macOS 的滚动条如下:
【我的前端】CSS在Windows下实现Mac浏览器滚动条