使用OpenNetCF为Windows CE/Windows Mobile添加任务栏图标

本文转自:http://blog.csdn.net/porscheyin/archive/2009/12/08/4960518.aspx

 

由于项目需要,需要为在 WinCE 5.0 的系统中开发的程序加上一个任务栏图标,以实现单击或者双击图标即可使最小化的程序复原。由于 .NET Compact Framework 不支持完整版 .NET 的 NotifyIcon 类。所以我准备采用 P/Invoke 来调用系统的 dll 来实现,当在网络上搜集到一些资料后,发现采用此方法可能会导致程序结束后任务栏图标位置左移的弊端。于是决定采用 OpenNetCF 推出的 Smart Device Framework ( SDF )类库中的 NotifyIcon 类来完成。

OpenNetCF 的官方网址是 http://www.opennetcf.com/ ,你可以点击这个地址 http://www.opennetcf.com/Products/SmartDeviceFramework/tabid/65/Default.aspx 下载 Smart Device Framework ( SDF )最新版本 2.3 ,它分为社区版(免费),标准版( $50 ),专业版( $500 ),后两个版本只支持 Visual Studio 2008 ,而免费的社区版同时还支持 Visual Studio 2005 。社区版与收费版本最大的区别我认为是没有设计时支持,而 SDF 中只有少量的控件类,所以设计时支持也显得不是那么必要了,在我看来社区版已经足够用了,如果你有充足的资金,可以选择标准版或专业版,你将会得到更好的开发体验。     


文件很小,只有 1.99M ,下载后进行安装,然后在 Visual Studio 中添加对 OpenNETCF.Windows.Forms.dll 的引用,路径为··· /Smart Device Framework/Bin 。(如下图)(在 Smart Device Framework 目录下还有一个 Samples 文件夹,里面有很多优秀的例子以供学习。)

           


添加引用后,在 VS 解决方案资源管理器的引用节点内会出现 OpenNETCF.Windows.Forms 。

     


实现的代码很简单,就像在 .NET Framework 中使用 NotifyIcon 类一样:

view plaincopy to clipboardprint?
01.using OpenNETCF.Windows.Forms;  
02./// <summary>  
03./// 设置任务栏图标。  
04./// </summary>  
05./// <param name="notifyIcon">通过引用传入一个NotifyIcon实例。</param>  
06.private void InitNotifyIcon(NotifyIcon notifyIcon)  
07.{  
08.// 你可以任意使用单击或者双击事件,为了和WinCE系统保持一致,我选择了双击。  
09.    notifyIcon.DoubleClick += new EventHandler(notifyIcon_DoubleClick);  
10.    notifyIcon.Icon = this.Icon; // 这里通过引用窗体的图标对Icon属性赋值。  
11.    notifyIcon.Text = "你想在托盘图标被按住时显示的提示性文字。";  
12.    notifyIcon.Visible = true;  
13.        }  
14.void notifyIcon_DoubleClick(object sender, EventArgs e)  
15.{  
16.    this.Show();    // 显示主窗体。  
17.} 
using OpenNETCF.Windows.Forms;
/// <summary>
/// 设置任务栏图标。
/// </summary>
/// <param name="notifyIcon">通过引用传入一个NotifyIcon实例。</param>
private void InitNotifyIcon(NotifyIcon notifyIcon)
{
// 你可以任意使用单击或者双击事件,为了和WinCE系统保持一致,我选择了双击。
    notifyIcon.DoubleClick += new EventHandler(notifyIcon_DoubleClick);
    notifyIcon.Icon = this.Icon; // 这里通过引用窗体的图标对Icon属性赋值。
    notifyIcon.Text = "你想在托盘图标被按住时显示的提示性文字。";
    notifyIcon.Visible = true;
        }
void notifyIcon_DoubleClick(object sender, EventArgs e)
{
    this.Show();    // 显示主窗体。
}
 

这样使用即可:

view plaincopy to clipboardprint?
01.NotifyIcon nic = new NotifyIcon();  
02.InitNotifyIcon(nic); 
NotifyIcon nic = new NotifyIcon();
InitNotifyIcon(nic);


以上代码同时支持 Windows CE 和 Windows Mobile 。至此就轻松地完成了为在基于 Windows CE 系统上开发的 .NET 程序添加任务栏图标的功能。 Smart Device Framework 弥补了 .Net CF 的不足,将所有对操作系统服务的调用封装到了这个类库中,方便基于托管代码平台的开发者直接访问平台服务而不需要繁琐的 P/Invoke 调用,是 .NET CF 开发人员的好帮手 。


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/porscheyin/archive/2009/12/08/4960518.aspx

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在C#中获取epub文本中的章节,可以使用`OpenNETCF.IO.Packaging`命名空间提供的类库。以下是一个示例代码: ```csharp using System.IO; using System.IO.Packaging; using System.Xml; // 打开epub文件 using (Package package = ZipPackage.Open("book.epub", FileMode.Open)) { // 遍历所有的章节 foreach (PackagePart part in package.GetParts()) { // 判断是否为章节文件 if (part.ContentType == "application/xhtml+xml") { // 加载章节内容 string content; using (StreamReader reader = new StreamReader(part.GetStream())) { content = reader.ReadToEnd(); } // 解析章节标题 string title; using (XmlReader reader = XmlReader.Create(new StringReader(content))) { reader.ReadToFollowing("title"); title = reader.ReadInnerXml(); } // 输出 Console.WriteLine(title); Console.WriteLine(content); } } } ``` 这段代码首先使用`ZipPackage.Open`方法打开epub文件,然后遍历所有的章节文件。对于每个章节文件,可以通过`part.ContentType`属性判断其类型是否为`application/xhtml+xml`,如果是,则说明它是一个章节文件。接着可以使用`part.GetStream`方法来获取章节文件的内容流,然后使用`StreamReader`类读取流中的内容。最后使用`XmlReader`类来解析章节标题,并将章节标题和内容输出即可。 需要注意的是,`OpenNETCF.IO.Packaging`命名空间提供的类库是第三方类库,需要通过NuGet等方式安装。在Visual Studio中可以通过NuGet包管理器来安装: 1. 在“工具”菜单中选择“NuGet包管理器”->“程序包管理器控制台”; 2. 在控制台中输入以下命令:`Install-Package OpenNETCF.IO.Packaging`; 3. 等待安装完成即可。 另外,需要在代码文件头部添加以下命名空间声明: ```csharp using System; using System.IO; using System.IO.Packaging; using System.Xml; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值