欢迎来到天天文库
浏览记录
ID:15127036
大小:580.00 KB
页数:11页
时间:2018-08-01
《开发windows mobile今日插件》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、开发WindowsMobile今日插件 本篇文章讲解的是开发WindowsMobile上的今日插件。关于是今日插件,在PPC或者SPSDK的帮助文档中有相关的章节介绍,在网络上也有一些帖子和资源讲解。在这里简要回顾一下。今日插件就是在windowsmobile的桌面上显示的条目,例如系统提供的“日历”(Calendar),主人信息,以及许多第三方开发的今日插件等等。由于桌面是开机后的第一个屏幕,所以插件显示在屏幕上将会得到用户最多的浏览时间。这里我们主要讲解的是用户自定义插件的开发。自定义插件如
2、下图所示: 一个插件就是一个位于屏幕上的窗口,每个插件负责自己的绘制和对用户输入的响应。插件可以通过给自己的父窗口(桌面窗口)发送TODAYM_DRAWWATERMARK消息,委托父窗口为自己绘制背景,也就是通过把自己的HDC传递给shell来完成的,这样插件就看起来好像是“透明”的效果。同时,shell也负责在相邻的插件之间绘制一条分割线。 通常,PPC最多允许加载12个插件。最大插件数量是由K_cTodayItemsMax定义的。 对于自定义的插件,要求开发
3、者提供一个DLL函数并注册到注册表:HKLMSoftewareMicrosoftTodayItems; 如下图,我们使用远程注册表查看工具打开一个插件的在注册表中的位置: 在下面包含了所有今日插件的键。每个插件将含有下列的值: ◆Type(DWORD); 对自定义插件来说,等于4。它是SDK中的插件类型枚举中的一个值(tlitCustom)。 typedefenum_TODAYLISTITEMTYPE{ t
4、litOwnerInfo=0, tlitAppointments, tlitMail, tlitTasks, tlitCustom,//自定义插件=4 tlitNil }TODAYLISTITEMTYPE; ◆Enabled; 插件是否启用。用户能够在设置-今日-项目中进行启用或禁用。 ◆Options; 是否含有设置对话框。也就
5、是设置-今日-项目中插件被选中时的“选项按钮”的Enabled状态。 ◆DLL: 插件dll的路径。 ◆Selectability; 可选项,插件是否可以被选中(用户在屏幕上按导航键时)。通常为1,表示允许被选中。当允许选中时,用户按上下方向键,被选中的插件背景会高亮。如果不能选中,就会跳过该插件。 ◆Order; 可选项,插件显示循序的排序值。缺省时由系统自动设置。 下面我们再介绍插件的协议,也就是插件的DLL应当满足以下要求。
6、 (1)要求dll导出序号为240的以下函数,以初始化和创建插件窗口; #defineORDINAL_INITIALIZEITEM 240 typedefHWND(*PFNCUSTOMINITIALIZEITEM)(TODAYLISTITEM*,HWND); 参数1:TODAYLISTITEM结构的指针,包含了该插件在系统中注册的相关信息。 参数2:桌面窗口的句柄,它将成为插件窗口的父窗口。 (2)如果插件具有设置对话框,则要求dll导出序
7、号为241的以下函数,作为设置对话框的窗口过程; #defineORDINAL_OPTIONSDIALOGPROC 241 typedefBOOL(*PFNCUSTOMOPTIONSDLGPROC)(HWND,UINT,UINT,LONG); 同时要求dll提供资源ID为500的一个对话框资源作为设置对话框的模板。(可以通过手工修改resource.h中的定义) (3)shell将向插件窗口发送以下信息,要求插件处理这些消息; WM_TODAYCUST
8、OM_CLEARCACHE 告知插件正在被从显示中卸载,要求插件清理自己所维护的数据缓存。 WM_TODAYCUSTOM_QUERYREFRESHCACHE 此消息在桌面显示期间以每2秒钟一次的频率周期性对所有插件发送。询问插件是否需要进行更新。 在插件首次加载时,还要求插件告知系统插件的高度以对插件窗口进行布局。由于插件窗口被上下垂直分布,所以宽度对于系统属于已知的。如果返回TRUE,表示要求进行更
此文档下载收益归作者所有