http://blog.csdn.net/doubleblue/archive/2009/04/14/4073618.aspx
Windows Mobile 今日插件开发
一、概述
Windows Mobile 今日插件,主要是用 C++ 或 VC++ 实现的。在 microsoft 的 msdn 上有关于今日插件的开发样例,该样例其实是 CF 调用 C++ 写的类 , 通过网页来实现的。
有以下几个缺点 :
1. 不能把今日插件设置成透明的;
2. 控件定位十分困难;
3. 部署的时候比较麻烦。
该样例代码可到: http://msdn2.microsoft.com/en-us/library/ms839442.aspx 下载。
本文主要介绍 ChrisTec 今日插件,该插件用 C# 语言实现。该插件特点是开发简单,仅仅开发出一个自定义用户控件就可实现。下面将介绍如何通过该插件实现今日提醒。
二、开发环境
vs2005+windows mobile6.0 。
三、开发步骤
1 、下载 ChrisTec 今日插件框架包
该插件的下载地址:
http://managedtodayscreen.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=10947 ;
ManagedTodayScreenItem-Alpha2.zip 文件里包含三个文件,分别是 ChrisTec 的 dll 、框架包 cab 及样例 cab 文件。
ManagedTodayScrenItem-src-Alpha2.zip 文件是 ChrisTec 源代码文件夹,里面包含 dll 、框架包 cab 及样例包 cab 工程。
2 、创建今日插件工程
打开 vs2005 ( vs2008 没有测试过),选择“新建 -> 项目 -> 智能设备 ->WM6->control library ” , 输入工程名“ Today ”,点击“确定”按钮创建工程,如下图所示。
3 、创建今日插件用户控件
1 )在初始化方法 InitializeComponent() 里,
修改用户控件大小: this .Size = new System.Drawing.Size (240, 20);
添加重绘事件:
this .Paint += new System.Windows.Forms.PaintEventHandler(this .UserControl1 _Paint);
2 )添加资源文件
右击“ Today ”工程,选择“添加 -> 新建项 -> 资源文件”,输入资源文件名称“ Resource ”,创建完毕后,双击“ Resouce ”,添加图像文件“ search ”。
3 )在 UserControl1 类里
添加 UserControl1_Paint 重绘方法:
private void CurrentTimeCtl_Paint(object sender, PaintEventArgs e)
{
Graphics graphics = e.Graphics;
using (Brush brush = new SolidBrush (Color .White))
{
// Resource.search 是一个待显示的bmp 图像,定义在Resource 资源文件里
graphics.DrawImage(Resource.search, 3, 3);
//text 待显示的文件
graphics.DrawString(text, Font, brush, textRect);
}
}
添加鼠标点击事件方法:
protected override void OnMouseUp(MouseEventArgs e)
{
//base.OnMouseUp(e);
Point pt = new Point (e.X, e.Y);
if (this .ClientRectangle.Contains(pt))
{
MessageBox .Show(" 今日插件测试" );
}
Invalidate();
}
4 )添加引用及注解
添加“ Christec.WindowsMobile.TodayScreen.dll ”引用:
在 UserControl1 类引用该 dll : using ChrisTec.WindowsMobile.TodayScreen;
添加注解:
在 UserControl1 类定义上面定义注解,该注解与 dll 文件定义的 TodayScreenItem 相对应,该注解不可缺少。
[TodayScreenItem ("UserControl1" )]
public partial class UserControl1 : UserControl
{
}
4 、创建今日插件 cab 工程
1 )给 Today 工程创建 cab 工程,输入工程名“ TodayTest ”
2 )添加输出
右击“ TodayTest ”工程,选择“添加 -> 项目输出”,在弹出的“添加项目输出组”里,选择“主输出”,点击“确定”按钮。
3 )给主输出添加文件夹
双击“主输出来自 Today (活动)”选项. 在弹出的选项卡里 添加文件目录“ %CE1%/Managed Today Screen Framework” ,该文件目录与 ChrisTec 框架 cab 包的安装目录保持一直。
4 )给 Managed Today Screen Framework 文件夹添加文件
添加文件: ChrisTec.WindowsMobile.TodayScreen.dll ;
5 )修改主输出文件目录
右击“主输出来自 Today (活动)”选项,选择“属性”,在属性的 Folder 选项里,选择“ Managed Today Screen Framework ”。
编译 Today 及 TodayTest 工程,生成 TodayTest.cab 安装包。
5 、安装 ChrisTec.WindowsMobile.TodayScreen-Framework.CAB 和 TodayTest.cab 包
1 )将 ChrisTec.WindowsMobile.TodayScreen-Framework.CAB 和 TodayTest.cab 包拷贝到真机或模拟器上;
2 )安装 ChrisTec.WindowsMobile.TodayScreen-Framework.CAB ;
3 )安装 TodayTest.cab ;
4 )重置模拟器或真机。
本样例在模拟器上的显示结果如下图所示:
6 、结论
本文主要介绍今日插件的简单用法,有错误的地方,请指正。另外,本文样例仅仅是在模拟器上经过验证,在真机上没验证。在模拟器上的结果图:
源代码下载地址:http://download.csdn.net/source/1210620
7 、参考资料
1 ) http://www.christec.co.nz/blog/archives/279 ;
2 ) http://hi.baidu.com/ny_dsc/blog/item/0add58559cdac950d00906f8.html ;
3 ) http://topic.csdn.net/u/20070610/09/33ccbf4c-b841-488b-be70-0824e2e1935b.html ;
4 ) http://managedtodayscreen.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=10947