文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | 免费看大片 | WPS | 杀毒软件
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形处理 办公软件 媒体动画 精文荟萃 工具软件 网络编程 程序开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院工具软件文字输入在WinCE程序开发中使用软件输入面板
精品推荐
特别推荐
·输入法技巧放送:极点五笔技巧两则
·模拟键盘按键 自动输入文字
·你知道吗?IE地址栏中还能输入这些东西
·[韩服]韩文输入法教程
·Win 2000/XP系统输入法丢失解决方法
·极品五笔的安装方法
·拼音五笔输入法技巧集
·智能ABC输入法实用技巧
·五笔二级简码--五笔字型
·让打字更快!搜狗拼音输入法八大妙用
热点TOP10
·如何显示输入法图标(输入法图标消失)
·[图文]五笔字根表
·输入法技巧放送:极点五笔技巧两则
·IE7在vista下无法使用五笔输入(86)
·Word:轻松输入“日语问候语”
·极品五笔的安装方法
·C++中的文件输入/输出(4):检测输入/输出的状态标志
·让打字更快!搜狗拼音输入法八大妙用
·[图文]一级简码--五笔字型
·[组图]五笔字根拆分

在WinCE程序开发中使用软件输入面板

日期:2008年6月3日 作者: 查看:[大字体 中字体 小字体]


简介

  软件输入面板(Software Input Panel,简称SIP)是每个装备了WinCE系统的移动平台的一个基本功能。它提供给用户在PDA上进行数据输入的一种手段。当谈及SIP的时候,我们一般会想到两点:一是SIP本身,二是如何在程序中使用SIP。

  SIP是一个实现了IInputMethod或者IInputMethod2接口的COM对象。它应该被系统调入使用,所以你不能在C#中进行SIP开发。C或者C++是很好的开发语言。因为SIP本身也只是另外一个COM对象,ATL使得开发过程变得极为简单。这里我不想讨论SIP开发,SDK包里包含了一个很好的例程ATLDvoraksip,所以你可以去学习这个例程以获取更多的信息。 这里我想讨论的是如何在你自己的程序里管理SIP。这看起来很琐碎简单,但是如果因为屏幕不太够用,而你又想使得你的程序更加聪明更加方便用户使用,那SIP的管理就变成很重要的一个方面了。另外,如果你开发了很多用于不同场合的SIP(比如多语言,数字或者其他等等),你可能想在某个场合使用某个特定的SIP。这种能力使得你可以完成很多不同的任务:当用户只需要进行数字输入的时候,你可以展示一个大的数字键盘,这样他不用笔而只需要用手指就可以输入了。当然你也可以有自己的想法,这就看程序员该作些什么了。

  Win32 API

  SIP的API函数很简单,从sipapi.h中只可以看到只有极少几个函数:

DWORD WINAPI SipStatus();
BOOL WINAPI SipSetDefaultRect(RECT *);
BOOL WINAPI SipRegisterNotification(HWND);
BOOL WINAPI SipShowIM(DWORD);
BOOL WINAPI SipGetInfo(SIPINFO *);
BOOL WINAPI SipSetInfo(SIPINFO *);
int WINAPI SipEnumIM(IMENUMPROC);
BOOL WINAPI SipGetCurrentIM(CLSID *);
BOOL WINAPI SipSetCurrentIM(CLSID *);
  我把这些放在开始,是因为它同时支持Windows Mobile和CE.NET平台。如果你对Windows Mobile设备编程,那么aygshell.h文件提供给你更多的和SIP有关的函数供使用。当然选择哪个来使用就依赖于你自己的需求了,使用Windows Mobile上的SIP会使得工作更加完美一些。如果你使用了相同的OS版本,但是不同的build版本的时候,你可能会获得稍微不同的SIP行为。所以,一种方法并不一定像你所想的那样在所有的PDA上都会适用。

  列举可用的SIP

  第一步就是了解如何列举所有可用的SIP。可以使用如下的代码:

CTypedPtrMap<CMapStringToPtr,CString,CLSID*> g_SipMap;

int SipEnumIMProc(IMENUMINFO *pIMInfo)
{
 CLSID* pCLSID = new CLSID;
 memcpy(pCLSID,&pIMInfo->clsid,sizeof(CLSID));
 g_SipMap.SetAt(CString(pIMInfo->szName),pCLSID);

 TRACE(_T("%sn"),CString(pIMInfo->szName));

 return 1;
}

void CSIPDemoDlg::OnButtonEnum()
{
 SipEnumIM(SipEnumIMProc);

 CString sSipName;
 CLSID *pCLSID = NULL;
 for (POSITION pos = g_SipMap.GetStartPosition(); pos; )
 {
  g_SipMap.GetNextAssoc(pos,sSipName,pCLSID);
  m_SipList.AddString(sSipName);
 }
}
  代码所作的就是填充一个全局的map,它包含了"SIP名"/CLSID对。这个例子和其他的都用到了MFC,当然你也可以使用熟悉的Win32 API或者其他的框架。以下是我的Dell Axim x50上的显示效果:

在WinCE程序开发中使用软件输入面板

  如何选择,显示和隐藏特定的SIP

  当你知道某个SIP的CLSID,你可以选择它。同时,当前选择的SIP也可以被获得:

void CSIPDemoDlg::OnButtonEnum()
{
 SipEnumIM(SipEnumIMProc);

 CLSID CurrSip;
 SipGetCurrentIM(&CurrSip);

 int nCurrSip = LB_ERR, nSipCount = 0;
 CString sSipName, sCurrSipName;
 CLSID *pCLSID = NULL;
 for (POSITION pos = g_SipMap.GetStartPosition(); pos; )

[1] [2] [3] 下一页 




上一篇:编程语言的昨天、今天和明天

下一篇:小组开发环境搭建(五)

相关文章:
·Windows系统漏洞修复软件大比拼
·为什么iexplore.exe在打开网页时CPU使用会100%?
·vista分区软件
·溯雪使用说明
·键盘的使用与指法训练
·如何显示输入法图标(输入法图标消失)
·大智慧股票软件Level-2入门手册
·GHOST使用方法(图解)
·Firefox 使用常见问题和解决方法
·注册表应用100例—注册表使用全攻略之十一
相关软件:
·黑客视频教程 VMware虚拟机的安装和使用
·C语言程序设计
·中国少年儿童智力开发百科全书(上中下)高清PDF全彩图书
·黑客视频教程-灰鸽子远控使用教程
·孙鑫VC++从入门到精通开发详解视频教程FLASH版
·使用GPMC随心所欲管理组策略
·WisMencoder(视频压缩、转换软件)V1.99 正式版
·Adobe Photoshop CS 2 简体中文使用指南
·整形模拟软件_非常face V1.0
·手机SIM卡备份一卡多号(手机魔卡)万能读写软件V9.0

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.vipcn.net
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.vipcn.net All Rights Reserved. 鄂ICP备05000083号Powered by:viphot