最近,拿到一台亲戚送的GPS导航仪,其系统是基于WinCE5.0的,所以我觉得可以写点小程序上去,上网一搜,还附带破解方法,把GPS破解后就变成一台屏幕超大的PDA了,于是我想用它看电子书,无奈,WinCE的软件少之又少,而且下载到的txt阅读软件居然不能正常缩放字体,实在不爽,于是我打算自己写个简单的阅读器,下面是我的开发过程:
开发工具:Visual Studio 2008
开发语言:c#,还是这个好用
开发平台:Windows CE设备
开发过程:
首先我们先打开vs,然后建立一个c#语言的智能设备项目,记得平台选择.net cf 3.5,你也可以用2.0,这里只是方便我的叙述而已,其是一样的!
然后拖三个按钮,一个openFileDialog,一个textBox,和一个NumericUpDown控件到窗体上,如下图:
具体的设置你们可以下载参照源代码中的进行设置,这里不再赘述了。
然后添加如下代码给Open按钮:
OpenBUtton
openFileDialog1.ShowDialog();
FilePath = openFileDialog1.FileName;
Thread myThread = new Thread(new ThreadStart(ReadText));
myThread.IsBackground = true;
myThread.Start();
openFileDialog1.ShowDialog();
FilePath = openFileDialog1.FileName;
Thread myThread = new Thread(new ThreadStart(ReadText));
myThread.IsBackground = true;
myThread.Start();
再在窗体代码中加入如下代码:
这里使用了回调,来启动一个后台线程读取文档。
CallBack
public Form1()
{
InitializeComponent();
addToText = new AddToContentCallBack(AddToTextContent);
}
delegate void AddToContentCallBack(string Texts);
AddToContentCallBack addToText;
private void AddToTextContent(string content)
{
if (txtContent.InvokeRequired)
{
this.Invoke(addToText, content);
}
else
{
txtContent.Text = content;
}
}
private void ReadText()
{
StreamReader objReader = new StreamReader(FilePath, System.Text.Encoding.Default);
string strLine = "";
string strLine1 = "";
ArrayList al = new ArrayList();
try
{
strLine = objReader.ReadToEnd();
if (strLine != null)
{
AddToTextContent(strLine);
}
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
objReader.Close();
}
}
private string FilePath;
public Form1()
{
InitializeComponent();
addToText = new AddToContentCallBack(AddToTextContent);
}
delegate void AddToContentCallBack(string Texts);
AddToContentCallBack addToText;
private void AddToTextContent(string content)
{
if (txtContent.InvokeRequired)
{
this.Invoke(addToText, content);
}
else
{
txtContent.Text = content;
}
}
private void ReadText()
{
StreamReader objReader = new StreamReader(FilePath, System.Text.Encoding.Default);
string strLine = "";
string strLine1 = "";
ArrayList al = new ArrayList();
try
{
strLine = objReader.ReadToEnd();
if (strLine != null)
{
AddToTextContent(strLine);
}
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
objReader.Close();
}
}
private string FilePath;
至此,主要功能就完成了,下面再给字体设置按钮Change设置如下代码:
Code
int iSize=Convert.ToInt32(numericUpDown1.Value);
txtContent.Font = new Font("Tahoma", iSize, FontStyle.Regular);
int iSize=Convert.ToInt32(numericUpDown1.Value);
txtContent.Font = new Font("Tahoma", iSize, FontStyle.Regular);
ok,大功告成!
现在你就可以把这个程序拿到设备上运行了,呵呵,现在唯一的问题是读取速度过慢,不知道是c#的效率问题,还是我的代码问题或者是Wince设备本身的问题。
这里是项目代码下载:点击下载