在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:蜂窝仿真器中的信息

时间: 2024-09-07 04:27:09

在Windows Mobile上实现自动拼写和匹配建议的相关文章

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

    使用Windows Mobile手机的朋友,应该有一个体会,那就是要查找某个联系人,在输入目标联系人名字的过程中,系统会实时按照所输入的内容来筛选,呈现在列表中,供用户选择.同样,如果我们要直接拨打电话,在输入电话号码的过程中,系统也会实时地将输入的号码和联系人库进行比较,将匹配的联系人显示在列表中,供用户选择.     大家不要小看了这一个功能,其实,在设备小巧.需要花费大力气来处理输入和输出的嵌入式设备上,用户对UI的体验是至关重要的.在我看来,这个自动拼写建议是非常有用的,至少目前

关于在windows mobile上创建一个.xml数据库文件时出错

问题描述 代码如下:usingSystem;usingSystem.Linq;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Text;usingSystem.Windows.Forms;usingSystem.Data.SqlClient;usingSystem.Data.SqlServerCe;usingSystem.Xml;

Windows Mobile 6开发环境的配置过程

需要的文件列表: 1.Visual Studio 2005 Professional及更高的版本(Visual Studio 2005 Express目前并不支持智能设备开发)(推荐用迅雷或者电骡下). 2.Visual Studio 2005 的补丁SP1 (推荐用迅雷或者电骡下) 3. ActiveSync版本4.5 (http://download.microsoft.com/download/7/e/c/7ecbd388-7fb5-4e3e-b57f-12eaf7eb6136/setup

开发Windows Mobile今日插件 -- 内存电量,桌面便笺,桌面记单词

      本篇文章讲解的是开发 Windows Mobile 上的今日插件.关于是今日插件,在 PPC 或者 SP SDK 的帮助文档中有相关的章节介绍,在网络上也有一些帖子和资源讲解.在这里简要回顾一下.今日插件就是在windows mobile的桌面上显示的条目,例如系统提供的"日历"(Calendar),主人信息,以及许多第三方开发的今日插件等等.由于桌面是开机后的第一个屏幕,所以插件显示在屏幕上将会得到用户最多的浏览时间.这里我们主要讲解的是用户自定义插件的开发.自定义插件如

在PC上显示和操作Windows Mobile

简介 在Windows Mobile和Wince开发中,直接在PC上操控相关设备是必不可少的步骤.本文讲述在PC上显示和操作Windows Mobile的方法,包括使用ActiveSync Remote Display和MyMobiler两种方法. 安装ActiveSync 不管那种方法,安装ActiveSync是必须的,请到下面链接进行下载安装ActiveSync 4.5. ActiveSync Remote Display ActiveSync Remote Display是MS提供的远程显

艾伟_转载:在PC上显示和操作Windows Mobile

简介 在Windows Mobile和Wince开发中,直接在PC上操控相关设备是必不可少的步骤.本文讲述在PC上显示和操作Windows Mobile的方法,包括使用ActiveSync Remote Display和MyMobiler两种方法. 安装ActiveSync 不管那种方法,安装ActiveSync是必须的,请到下面链接进行下载安装ActiveSync 4.5. ActiveSync Remote Display ActiveSync Remote Display是MS提供的远程显

Windows Mobile游戏被植木马 自动拨打长途

4月12日消息,据国外媒体报道,英国互联网安全公司Sophos高级技术顾问格拉汉姆·克鲁利(Graham Cluley)日前提醒Windows Mobile手机用户,某些手机游戏已经被黑客植入特洛伊木马. 据克鲁利称,大量手机用户报告,在玩<3D反恐行动>(3D Anti-terrorist action)游戏时手机被木马感染,使手机自动拨打费用昂贵的国际长途. 对此,克鲁利说:"有俄罗斯黑客在<3D反恐行动>游戏中植入了特洛伊木马,并上传到Windows Mobile下

Windows Mobile中如何建立GPRS连接以便Socket能正常通信

最近编写一个医疗项目的程序,需要用 Windows Mobile 来做通信处理,需要将手机端的数据通过GPRS传送至公网上的一个服务器上.数据传输我采用的是socket,用数据线+ActiveSync调试通过,数据传输正常,在准备将软件提交给质检部门的时候,用真正的GPRS来做通信测试时,问题出来了,连接始终建立不了,但用手机的IE浏览器却能正常打开网页,而且奇怪的是只要用IE浏览器成功访问过一次网页,我的 socket 就能正常进行数据通信,看来传说中的GPRS常连接被我误解了. 手机开通GP

Windows Mobile 6.5中使用手势

这个语言参考部分包含了对触摸事件.手势.以及手势动画等编程元素的描述. 触摸API分为两个部分,管理触摸输入的手势API,和控制显示区域如何对用户触摸作出反应的手势物理引擎API. 触摸函数.消息.以及结构体是与鼠标共享的,因为应用程序像处理鼠标左键单击一样处理手写笔事件.想了解其他触摸参考信息,请转到鼠标参考. 索引 触摸手势 介绍窗口触摸,并讨论如何在你的应用程序中实现触摸接口. 手势参考(DTK) 这个API允许你的程序监视触摸输入并对触摸输入进行编程. 物理引擎概览 介绍了物理引擎,以及