使用 C# 开发智能手机软件:推箱子(二)

在上篇文章“ 使用 C# 开发智能手机软件:推箱子(一)”中,我对推箱子程序作了总体介绍。这次,我先介绍 Common/Fcl.cs 源程序文件。
 1  using  System;
 2  using  System.IO;
 3  using  System.Drawing;
 4 
 5  namespace  Skyiv.Ben.PushBox.Common
 6  {
 7     ///   <summary>
 8     ///  这里是 .NET Framework 支持,而 .NET Compact Framework 不支持的东东
 9     ///   </summary>
10     static   class  Fcl
11    {
12       ///   <summary>
13       ///  获取为此环境定义的换行字符串。-- Environment
14       ///   </summary>
15       public   static   string  NewLine {  get  {  return   " /r/n " ;  } }
16 
17       ///   <summary>
18       ///  打开一个文本文件,将文件的所有行读入一个字符串,然后关闭该文件。-- File
19       ///   </summary>
20       ///   <param name="path"> 要打开以进行读取的文件 </param>
21       ///   <returns> 包含文件所有行的字符串 </returns>
22       public   static   string  ReadAllText( string  path)
23      {
24         string  text  =   "" ;
25         if  (File.Exists(path))
26        {
27           using  (StreamReader sr  =   new  StreamReader(path, Pub.Encode))
28          {
29            text  =  sr.ReadToEnd();
30          }
31        }
32         return  text;
33      }
34 
35       ///   <summary>
36       ///  创建一个新文件,在其中写入指定的字符串,然后关闭该文件。-- File
37       ///   </summary>
38       ///   <param name="path"> 要写入的文件 </param>
39       ///   <param name="contents"> 要写入文件的字符串 </param>
40       public   static   void  WriteAllText( string  path,  string  contents)
41      {
42         using  (StreamWriter sw  =   new  StreamWriter(path,  false , Pub.Encode))
43        {
44          sw.Write(contents);
45        }
46      }
47 
48       ///   <summary>
49       ///  将指定的 Size 添加到指定的 Point。-- Point
50       ///   </summary>
51       ///   <param name="point"> 要添加的 Point </param>
52       ///   <param name="size"> 要添加的 Size </param>
53       ///   <returns> 加法运算的结果 </returns>
54       public   static  Point Add(Point point, Size size)
55      {
56         return   new  Point(point.X  +  size.Width, point.Y  +  size.Height);
57      }
58 
59       ///   <summary>
60       ///  将一维数组的大小更改为指定的新大小。-- Array
61       ///   </summary>
62       ///   <typeparam name="T"> 数组元素的类型 </typeparam>
63       ///   <param name="array"> 要调整大小的一维数组 </param>
64       ///   <param name="newSize"> 新数组的大小 </param>
65       public   static   void  Resize < T > ( ref  T[] array,  int  newSize)
66      {
67         if  (array  !=   null   &&  array.Length  ==  newSize)  return ;
68         if  (array  ==   null ) array  =   new  T[ 0 ];
69        T[] newArray  =   new  T[newSize];
70        Array.Copy(array, newArray, Math.Min(array.Length, newArray.Length));
71        array  =  newArray;
72      }
73    }
74  }
75 
    俗话说,工欲善其事,必先利其器。我们知道,Microsoft .NET Compact Framework 只是 Microsoft .NET Framework 的一个子集,她省略了一些不常用的功能。但是,如果我们恰好需要这些功能,只好自己重新实现一下了。这个 Fcl 静态类就是起这个作用的。源程序代码的注释已经写得很清楚了。
    Fcl.NewLine 我原本是想写成这样的:
   static   class  Fcl
  {
    
static   static   string  newLine;
    
    
///   <summary>
    
///  获取为此环境定义的换行字符串。-- Environment
    
///   </summary>
     public   static   string  NewLine
    {
      
get
      {
        
if  (newLine  ==   null )
        {
          newLine 
=  (Environment.OSVersion.Platform  !=  PlatformID.Unix)  ?   " /r/n "  :  " /n " ;
        }
        
return  newLine;
      }
    }
  }
    可惜的是,这段代码无法在 .NET Compact Framework 下通过编译(如果是 .NET Framework 则没有问题)。原因是 PlatformID 枚举的成员:
Unix         操作系统为 Unix。
Win32NT      操作系统为 Windows NT 或较新的版本。
Win32S       操作系统为 Win32s(Win32 子集)类型。
Win32Windows 操作系统为 Windows 
95  或较新的版本。
WinCE        操作系统为 Windows CE。
    PlatformID.Unix 并不被 .NET CF 所支持。这实在是一件很奇怪的事,既然 .NET CF 都支持 PlatformID 的 Win32NT、Win32S、Win32Windows、WinCE 成员,为什么就不能支持 Unix 成员呢?这样,这个程序将来要移植到 Linux 操作系统时就有些小麻烦了。
    要知道,这在主窗体的代码中用以下一段代码来实现在智能手机上禁用“前端显示”功能。
   public  partial  class  MainForm : Form
  {
    
protected   override   void  OnLoad(EventArgs e)
    {
      
base .OnLoad(e);
      miTopMost.Enabled 
=  (Environment.OSVersion.Platform  !=  PlatformID.WinCE);
      env.LoadConfig();
      env.LoadGroup();
      LoadLevel(
true );
      
if  (env.IsSave) Restore(env.Steps);
    }

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值