SideShow的Gadget分为两类,一类是本地Gadget,一类是常规Gadget。所谓的本地Gadget就是编译SideShow工程时,直接集成到该工程的组件。如下图所示,这些组件不像常规Gadget,它无需连接PC,就天生俱有。
不过这种Gadget普通用户可能无法编写(需要下载SideShow SDK,修改其中的OEM工程),一般由提供SideShow设备的厂家定制。而我们常说的Gadget就是在Vista控制面板中SideShow Gadget,如下图所示。
本章暂不介绍常规Gadget的开发方法,对此有兴趣的朋友可以先看看网上的同类文章《开始学习编写用于 Windows SideShow 设备的小工具》。
在说本地Gadget之前,先说一下SideShow的宿主平台,最早SideShow是运行在.Net Micro Framework平台之上的(可以说SideShow是MF最值得称傲的典型应用),不过经过SideShow开发团队的努力,目前SideShow已经移植到Windows Mobile平台上来了,相关文章请参见:《Windows SideShow for Windows Mobile尝鲜》。
我所说的本地Gadget就是基于.Net Micro Framework平台之上的Gadget。其实本地Gadget和常规Gadget有本质区别,常规Gadget有些类似网页,SideShow设备从PC机下载基于简单内容格式 (SCF)协议的数据,然后在设备上呈现相关画面(类似HTTP),并且可以和PC上的Gadget Server进行交互。而本地Gadget其实说白了就是一段实现规定接口的.Net Micro Framework的C#应用程序。
我们知道在.Net Micro Framework仅且仅能运行一个应用程序,SideShow就是这么一个应用程序,所以留给本地Gadget的也只能是该应用程序的一个实现指定接口的DLL了(怎么有些拗口?!)。
我以前为MF编写的俄罗斯方块程序,由于主体程序都不需要改写,仅实现相关接口即可,所以我花了不到一个小时的时间,就把该程序移植到SideShow上了(如下图所示)。
(主菜单,选中时变大,并显示相关信息)
(操作界面)
(程序菜单)
下边就说一下实现过程。
首先程序类必须要实现IDeviceApplication接口,只有实现类该接口,SideShow主程序才能正确加载该DLL。
public interface IDeviceApplication
{
ApplicationForm GetForm();
GlanceData GetGlanceData();
void Install(IApplicationCache cache);
void SetShellAttributes(ShellAttributes attributes);
void Uninstall();
}
此外程序窗体必须派生于ApplicationForm类,该类负责为应用程序提供绘图场景,相对应的接口代码如下:
public ApplicationForm GetForm()
{
if (form == null)
{
form = new ElsForm();
}
return form;
}
至于Install和Uninstall接口可以根据需要添加相关代码即可,也可以为空函数。
1、 图标设置
细心的网友也许已经发现Gagget至少需要提供三套图标才能完成相关界面配置,主界面菜单需要两个图标(一大一小),大的48×48,选中时显示,小的32×32,未选中时显示,另一个16×16的图标,就是程序标题条上的图标。
这些图标不是ICON格式,就是普通BMP格式的图片。相关接口代码如下:
public void SetShellAttributes(ShellAttributes attributes)
{
attributes.Name = "Tetris"; //标题
attributes.Icon16Data = Resources.GetBytes(Resources.BinaryResources.ICON_16);
attributes.Icon32Data = Resources.GetBytes(Resources.BinaryResources.ICON_32);
attributes.Icon48Data = Resources.GetBytes(Resources.BinaryResources.ICON_48);
}
//主菜单上信息显示
public GlanceData GetGlanceData()
{
GlanceData glance = new GlanceData();
glance.Primary = "YeFan's Tetris";
if (ElsGame.bGameRunFlag)
{
glance.Secondary = new string[] {"[Run]"};
}
return glance;
}
2、 绘图区设置
程序窗体派生ApplicationForm类后,会自动为你的窗体添加标题条等等信息,不过你的窗体也可以全屏显示,这需要设置窗体的类型
public enum Style
{
Default = 0,
TitleBar = 1,
FullScreen = 2,
SizeToContent = 4,
Frame = 8,
Centered = 16,
DimBackground = 32,
}
//图形绘制和MF普通程序一样
public override void OnRender(DrawingContext dc)
{
base.OnRender(dc);
els.Draw(dc);
}
3、 菜单实现
//添加菜单项
public override ArrayList GetMenuItems()
{
ArrayList list = new ArrayList();
list.Add(new MenuItem("New game", 0));
list.Add(new MenuItem("Replay game", 1));
return list;
}
//菜单处理函数
public override void ExecuteMenuItem(MenuItem selected)
{
switch (selected.Id)
{
case 0:
ElsGame.bGameRunFlag = false;
els.Init(); //初始化
return;
case 1:
GameTimer.Start();
return;
case 2:
this.GoBack();
return;
}
}
如果你以前有MF图形开发的经验,开发这个一定会觉得很简单。好了,本地Gadget先介绍到这,有时间再介绍一下常规Gadget的开发。
分享到:
相关推荐
Vista Media Center SideShow Gadget x86
Sideshow
开源项目-sideshow-apns2.zip,Push notifications from Go with Apple's new HTTP/2 APNS protocol
为了一如既往地推动创新移动应用的发展,飞思卡尔半导体(NYSE:FSL, FSL.B)日前宣布推出面向Microsoft Windows Vista SideShow平台、.NET Micro Framework及用户定义应用的高性能开发工具包。i.MXS开发工具包可以...
关于vista sideshow&sidebar gadget设计的。感觉这方面资料很少。希望对大家有所帮助。pdf格式。
Vista SideShow Code 需要以下附件: SideShow模拟器,SideShow.DLL(微软正版才能下载)VS2005 C#
IOS开发推送通知模拟测试,PushMeBaby 推送通知新版
SideShow 小工具,无线网络监测V3.0,支持VISTA.WIN7
teenpatti-parel
在那里或在 /u/-sideshow- 联系@onelivesleft,在那里或在 /u/TheShadowZero 或在@theshadowzero 这是为运行 mod_python 的 apache 制作的,所以你需要它才能工作(尽管为其他一些 python 引擎重写并不难)。 ...
– 5大GPU通用计算平台原生支持(AMD OpenCL1、AMD CAL/STREAM、NVIDIA OpenCL1、NVIDIA CUDA、DirectX 11 Compute Shader/DirectCompute)。 – 4大图形平台原生支持 (DirectX 9、DirectX 10/10.1、DirectX 11、...
main.Person{FirstName:"Sideshow", LastName:"Bob", HairColor:"red"} main.Person{FirstName:"Homer", LastName:"Simpson", HairColor:"n/a"} main.Person{FirstName:"Lisa", LastName:"Simpson", HairColor:...
APNS / 2 APNS / 2是一个go软件包,旨在使用新的HTTP / 2 Push provider API在iOS,OSX... 安装apns2:go get -u github.com/sideshow/apns2 如果您正在运行测试套件,则还需要安装testify: go get -u github.com/str
On the topic of system upgrades Lucas writes, "Sever upgrades can make even seasoned sysadmins wish that they had a simpler job, such as performing as a carnival sideshow, stuffing weasels into their...