using System;
using System.Runtime.InteropServices;
using System.Windows.Forms;
namespace SmartPhone
{
/// <summary>
///InputModeEditor的摘要说明。
/// </summary>
public class InputModeEditor
{
public InputModeEditor()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
[DllImport("coredll.dll", EntryPoint="GetCapture")]
private static extern IntPtr GetCapture();
[DllImport("coredll.dll", EntryPoint="GetWindow")]
private static extern IntPtr GetWindow(IntPtr hWnd, int uCmd);
[DllImport("coredll.dll", EntryPoint="SendMessage")]
private static extern uint SendMessage(IntPtr hWnd, uint msg, uint wParam, uint lParam);
const uint EM_SETINPUTMODE = 0x00DE;
const int GW_CHILD = 5;
const uint LB_SETCURSEL = 0x0186;
public static void SetInputMode(Control ctrl, InputMode mode)
{
ctrl.Capture = true;
IntPtr h = GetCapture();
ctrl.Capture = false;
IntPtr hEditbox = GetWindow(h, GW_CHILD);
SendMessage(hEditbox, EM_SETINPUTMODE, 0, (uint)mode);
}
public enum InputMode
{
EIM_SPELL = 0,//英文
EIM_AMBIG = 1,//拼音
EIM_NUMBERS = 2,//数字
EIM_TEXT = 3,//拼音
}
}
}
要注意的是 OpenNETCF.org的工具包的WindowsCE.Forms以及Microsoft.WindowsCE.Forms,都只能用于Poacket PC 2003和Windows Mobile 5.0,其他版本的操作系统必须按照上述写法来书写代码才能调试通过