使用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);
本文作者:dearsj001 来源:网络http://www.cnblogs.com/dearsj001/a
CIO之家 www.ciozj.com 微信公众号:imciow