当前位置: 首页 > news >正文

Vista Sidebar Gadget (侧边栏小工具)开发教程 (3)

源自-开心就好- 2006年11月

话说从前,书接上回。开心已经向大家提出了一个需求,并且给出解决技术难题的思路,不知道有多少位朋友已经开始尝试编写自己的第一个非“Hello World”的Sidebar Gadget了。那么今天开始,我们就开始逐步介绍开发Sidebar Gadget的具体方式。

使用Gadget.xml来定义Sidebar Gadget

就像计算机语言都会有一个入口函数一样,Sidebar Gadget在启动时也会有一个主入口,而这个主入口文件呢就是Gadget.xml。但该文件你可以存放在多个区域,即Gadget的根目录,或者Gadget的地区语言(如zh-cn, en-us等)目录。按照我的理解,Gadget应该先会找最适合地区语言目录下的Gadget.xml,其次再找根目录中gadget.xml,而一个典型的Gadget.xml文件结构如下所示(Vista自带的时钟Gadget的描述文件,文档中红色文字为开心的注释文字,而注释中的数字标识与附图中的数字标识一一对应):

<?xml version="1.0" encoding="utf-8"?>
<gadget>
<name>时钟</name> 定义Gadget名称(1)
<namespace>microsoft.windows</namespace> 定义Gadget的命名空间,与JS交互
<version>1.0.0.0</version> 版本信息(2)
<author name="Microsoft Corporation"> 作者信息(3)
<info url="http://go.microsoft.com/fwlink/?LinkId=55696" text="www.gallery.microsoft.com"/> 作者网站的链接地址o_WindowsLiveWriter_SidebarGadget3_1301E_image0_thumb14.png(4)
<logo src="logo.png"/>作者的Logo信息(5)
</author>
<copyright>? 2006</copyright> 版权信息(6)
<description>查看您所在时区或全球任何城市的时钟。</description> 功能描述信息(7)
<icons>
<icon height="48" width="48" src="icon.png"/> 显示在小工具待选箱时的图标(8)
</icons>
<hosts>
<host name="sidebar">仅支持Sidebar,未来如果大一统了,可能Live.com或者Slideshow都会使用统一的方式
<base type="html" apiVersion="1.0.0" src="clock.html"/>type仅支持html,未来有可能会支持WPF,WPF/E或者AJAX;src用以指明主界面的HTML源文件
<permissions>full</permissions>目前仅可以设置Full,请参阅此文
<platform minPlatformVersion="1.0"/>
<defaultImage src="drag.png"/>在从小工具备选箱用鼠标拖到Sidebar时所显示的Logo
</host>
</hosts>
</gadget>

o_WindowsLiveWriter_SidebarGadget3_1301E_image0_thumb15.png 通过上面的信息,Sidebar可以得到Gadget中的相关信息,但一个Gadget还不止如此,比如上面的这个时钟显示在Sidebar当中时,应该如 左图所示。在这个截图中,我们注意到有一个小扳手式的图标,使用它可以选择自己心爱的钟表外型或者进行其它的自定义设置,那么此部分是如何反应在源代码中的?

还有,有一些Gadget,比如自带的RSS Reader,当单击某文章标题时,会自动在左侧弹出来一个Flyout窗口,这个窗口的设置如何在源代码中反应呢?

还有,系统自带的那个CPU以及内存使用量的Gadget,类似于汽车的转速表,它又是如何得到这种实时的系统信息的呢?

还有,当把一个Gadget从Sidebar拖到桌面时,其页面大小会发生改变,这又是为什么呢?

还有,Gadget中有很多透明效果,比如那个表的周围就是透明的,呈一个圆形,或者其它类型,而不是我们常见网页的矩形,这又是为什么呢?

还有,Gadget中的服务器端与客户端交互实现局部刷新却又没有使用ASP.NET AJAX框架,这又是为什么呢?

呵呵,如果你感兴趣,欢迎继续阅读本教程,今天就先到这儿吧。

相关文章:

  • C++中方法定义和调用需要注意的一个地方
  • 在局域网里上网时总是弹出宽带连接的窗口
  • ExtJS学习之ComboBox
  • 书签
  • 如何实现以root身份telnet连接rhel服务器?
  • mhdd应用详解-入门篇(图文教程)
  • 菜鸟学Linux之六:samba服务的搭建与部署
  • Netcat
  • 表达式求值组件Jeval
  • “U盘大盗”让你的U盘防不胜防###
  • 我的耳朵
  • [转载]【Java EE】Struts2.1.6+Spring2.5.6+Hibernate3.3.1框架 整合开发
  • 关于SQL SERVER 日志满的处理方法
  • CCNA系列课程(7)访问控制列表ACL
  • 微软的虚拟化
  • [deviceone开发]-do_Webview的基本示例
  • CentOS7简单部署NFS
  • fetch 从初识到应用
  • Java 最常见的 200+ 面试题:面试必备
  • Js实现点击查看全文(类似今日头条、知乎日报效果)
  • Laravel5.4 Queues队列学习
  • MySQL几个简单SQL的优化
  • 阿里云容器服务区块链解决方案全新升级 支持Hyperledger Fabric v1.1
  • 初识MongoDB分片
  • 互联网大裁员:Java程序员失工作,焉知不能进ali?
  • 精彩代码 vue.js
  • 目录与文件属性:编写ls
  • 小程序开发中的那些坑
  • 移动互联网+智能运营体系搭建=你家有金矿啊!
  • 用简单代码看卷积组块发展
  • 源码之下无秘密 ── 做最好的 Netty 源码分析教程
  • 阿里云重庆大学大数据训练营落地分享
  • ​ssh免密码登录设置及问题总结
  • #Js篇:单线程模式同步任务异步任务任务队列事件循环setTimeout() setInterval()
  • #我与Java虚拟机的故事#连载16:打开Java世界大门的钥匙
  • $emit传递多个参数_PPC和MIPS指令集下二进制代码中函数参数个数的识别方法
  • $refs 、$nextTic、动态组件、name的使用
  • (3)nginx 配置(nginx.conf)
  • (9)目标检测_SSD的原理
  • (C#)一个最简单的链表类
  • (LeetCode C++)盛最多水的容器
  • (附源码)ssm高校实验室 毕业设计 800008
  • (附源码)ssm基于jsp的在线点餐系统 毕业设计 111016
  • (附源码)ssm考生评分系统 毕业设计 071114
  • (附源码)计算机毕业设计SSM疫情社区管理系统
  • (亲测有效)解决windows11无法使用1500000波特率的问题
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级
  • ***汇编语言 实验16 编写包含多个功能子程序的中断例程
  • .NET delegate 委托 、 Event 事件,接口回调
  • .net framework4与其client profile版本的区别
  • .NET 实现 NTFS 文件系统的硬链接 mklink /J(Junction)
  • .NET 线程 Thread 进程 Process、线程池 pool、Invoke、begininvoke、异步回调
  • .NET精简框架的“无法找到资源程序集”异常释疑
  • .NET文档生成工具ADB使用图文教程
  • @Autowired多个相同类型bean装配问题