2007-07-29 14:01:24| 分类: 学术交流区 | 标签: |字号大中小 订阅
课程设计报告书
(I E浏览器)
班 级:机械0601-4班
学 号:20060627
姓 名:景 琦 指 导 教 师:李 静
石 家 庄 铁 道 学 院
2007年7月23日
题目: IE浏览器
内容摘要:一个简单的IE浏览器,功能简单实用,比较容易被用户所使用,
此报告详细的介绍了此浏览器的编辑思想和方法,并给出了相关的源代码,便于读者参考。该浏览器突破传统浏览器功能繁多复杂的特点,所设功能简单实用,
操作起来方便。
索引关键词:浏览器 编辑 界面 代码
目录
1. 题目要求-----------------------------------------------------------1 2. 设计思想------------------------------------------------------ 2
3. 系统完成功能及框图---------------------------------------2 4. 界面设计------------------------------------------------------3 5. 核心算法及说明--------------------------------------------6 6. 结论----------------------------------------------------------- 9 7. 参考资料-----------------------------------------------------9 8. 后记-----------------------------------------------------------9 9. 附录-----------------------------------------------------------10
第一章:题目要求
1. 1:要求达到的功能图框
1. 2:主界面参考
1. 3:要求
l ▲ 地址栏保存最近访问的 10 条记录
l▲ 工具栏包含:前进、后退、停止、刷新按钮及完成相应的功能
l ▲ 完成菜单中要求的功能。
1
第二章:设计思想
2.1:主体思想
设计一个IE浏览器,其主要功能是浏览网页。为了实现浏览网页的功能,我添加一个控件:WebBrowser。这个控件的Navigate方法可以打开指定的网页,从而实现了浏览网页的目的。我用一个ComboBOX作地
址栏,定义它的Click事件和Keydown事件,开始搜网。
我直接用Combo1.AddItem (Combo1.Text),来保存当前网址。为了避免地址栏保存重复的网址,我用了一个循环结构和两个选择结构并且定义了一个逻辑型变量existed。当existed为ture时即组合框中已存在
当前网址则Combo不添加网址,当existed为False时Combo添加当前的网址。
然后我着手开始设计主界面,我在程序中定义控件的top、left、width和hight,让控件随着窗体的变化而变化。我先用一个coolbar,然后把工具栏放在上面,因为这样视觉上看着整齐。对于那些菜单的设计,
我采用了菜单编辑器,编辑出需要使用的菜单。
接下来我就开始设计菜单的功能,对于“文件”菜单,其中“新建”和“关闭”菜单就利用窗体的相关方法就可实现。比较麻烦的是“打开”菜单项,我添加了一个窗体作为“打开”对话框,并且添加了一个commondialog通用对话框,作为浏览选项所用。然后编写相应的程序。对于“编辑”菜单的各项功能,可以调用WebBrowser控件的ExecWB方法,实现相应功能。对于“查看”菜单的各项功能,可以用WebBrowser的停止和刷新方法即、WebBrowser1.Stop、WebBrowser1.Refresh就可达到相应功能。最后一个菜单“收藏”是最不好做的,要做到这步,需用数据库。这个数据库包括“网名”、“网址”、“关于”三个字段,
在这一部分我用了三个窗体,一个作为添加收藏夹的对话框,一个做为浏览收藏夹用。
2.2:扩张思想
利用所学知识结合用户的实际需要改进和新增一些功能。首先在主界面的设置上,充分体现一切为用户服
务的态度,我通过设置各个控件的坐标和大小,使其随窗体一起变化。
针对用户在大写状态输入网址会出错的情况,我在状态拦里增添了大小写的提示(caps), 并设置时钟提示,显示当前时间,方便了用户。其次在其他窗体的设计上,体现功能的简单和实用,在设计收藏夹时,突破传统收藏夹功能繁多使用复杂的特点,设计出可以简单浏览、增添和修改的收藏夹。 2
第三章:系统完成功能及功能框图
3.1:主要功能
该浏览器除有浏览网页的功能,还能在地址拦保存最近浏览的网址,工具拦有前进、后退、停止、刷新、主页和浏览收藏夹等功能。在主窗体上还设有时间和caps提示。还有“文件”、“编辑”、“查看”和“收
藏”四个菜单,并且每个菜单有若干个子菜单,具备一些使用的功能。并且每个菜单设置了快捷键或热键。
一些详细功能见下框图
IE浏览器主界面
前进 后退 停止 刷新 主页 文件 编辑 查看 收藏 新建 打开 另存 打印 关闭 复制 粘贴 全选 查找 停止 刷新 添加收藏夹 整理收藏夹 浏览网页、保存地址、 查看时间、查看大小写、显示进度
查看收藏夹
3.2:功能框图
第四章:界面设计
3
4.1:主界面
主界面是用于基本的浏览,和一切功能的主体。
4.2:第二窗体
该窗体用于实现“文件”菜单的“打开”对话框,在空白处输入网址,点击“确定”可访问该网站。点击
“浏览”按钮,弹出打开文件对话框,选择要打开的文件,点击“确定”在浏览器中打开此文件。
4.3:第三窗体
该窗体用于添加收藏,点击“添加收藏”菜单弹出该窗体。
4
4.4:第四窗体
该窗体用于浏览收藏夹。
4.5:第五窗体
该窗体用于整理收藏夹,可实现添加、删除、修改和整理记录。
5
第五章:核心算法及说明
5.1:浏览网页的实现和地址拦添加网址的实现。
用以下语句,实行combo1的单击事件,使WebBrowser1打开指定的网址。
Private Sub combo1_click() '转到指定网址
Dim i As Long
WebBrowser1.Navigate Combo1.Text
End Sub
利用一个Left函数和条件语句,实现当在地址拦输入网址未加http://时,自动添加
Private Sub Combo1_Keydown(keycode As Integer, Shift As Integer)
Dim i As Long, existed As Boolean '逻辑型 If keycode = 13 Then `表示按下回车键
If Left(Combo1.Text, 7) <> \"http://\" Then '如过左边七个字符不是,利用函数
Combo1.Text = \"http://\" + Combo1.Text
End If
WebBrowser1.Navigate Combo1.Text '打开网页
For i = 0 To Combo1.ListCount - 1 If Combo1.List(i) = Combo1.Text Then
existed = True Exit For Else existed = False
End If Next
If Not existed Then '如果不存在,则添加
Combo1.AddItem (Combo1.Text)
End If End If End Sub
5.2:进度条的变化
Private Sub WebBrowser1_ProgressChange(ByVal Progress As Long, ByVal ProgressMax As Long)
'下载进行时进度条变化 If ProgressMax = 0 Then Exit Sub
6
ProgressBar1.Max = ProgressMax`设置最大值
If Progress <> -1 And Progress <= ProgressMax Then`用一个条件语句,确定填充块的显示
ProgressBar1.Value = Progress
End If End Sub
5.3:设置界面。使控件随窗体的变化而变化
Private Sub Form_Resize()
On Error GoTo a`设置错误语句,如果错误则转到语句a: CoolBar1.Width = Form1.Width - 100 '使其宽度随窗口变化 WebBrowser1.Width = CoolBar1.Width '使其宽度随窗口变化 WebBrowser1.Height = Form1.Height - CoolBar1.Height - CoolBar1.Top
ProgressBar1.Top = Me.Height - StatusBar1.Height - 600 ProgressBar1.Left = StatusBar1.Width设置ProgressBar1的坐标 StatusBar1.Width = Me.Width - ProgressBar1.Width - 300
StatusBar1.Style = sbrSimple
ProgressBar1.Zorder`设置这两个控件的顺序,使ProgressBar1在上面
a: End Sub
5.4:设置第二个窗体为椭圆形。
添加BAS模块,并加载API函数,选择CreateEllipticRgn和 SetWindowRgn函数,以下是两个函数的声
明。
Private Declare Function CreateEllipticRgn Lib \"gdi32\" (ByVal X1 As Long, ByVal Y1 As Long, ByVal
X2 As Long, ByVal Y2 As Long) As Long
Private Declare Function SetWindowRgn Lib \"user32\" (ByVal hWnd As Long, ByVal hRgn As Long, ByVal
bRedraw As Boolean) As Long
Private Sub Form_Load() '建立CreateEllipticRgn()函数,用SetWindowRgn()函数调用
Dim lReturn As Long
lReturn = SetWindowRgn(hWnd, CreateEllipticRgn(10, 10, 440, 350), True)
End Sub
5.5:实现对收藏夹的添加、删除和修改
7
利用DATA的Data1.Recordset.AddNew方法新增记录并调用Update方法将缓冲区数据写入数据库
Private Sub Label5_Click()
Label6.Enabled = Not Label6.Enabled '添加时“修改”和“删除”不可用
Label7.Enabled = Not Label7.Enabled If Label5.Caption = \"添加\" Then
Label5.Caption = \"确认\"
Data1.Recordset.AddNew '添加一条新记录
Text1.SetFocus
Else
Label5.Caption = \"添加\"
Data1.Recordset.Update '调用Update方法,将缓冲区数据写入数据库
Data1.Recordset.MoveLast`移至最后一条记录
End If End Sub
利用记录集的Delete方法删除记录 Private Sub Label6_Click() On Error Resume Next Data1.Recordset.Delete Data1.Recordset.MoveNext
If Data1.Recordset.EOF Then`如果到了最后一条记录之后,则移到最后记录
Data1.Recordset.MoveLast
End If End Sub
利用条件语句,结合DATA的Edit方法,修改记录。
Private Sub Label7_Click() Label5.Enabled = Not Label5.Enabled Label6.Enabled = Not Label6.Enabled If Label7.Caption = \"修改\" Then Label7.Caption = \"确认\" Data1.Recordset.Edit对记录进行编辑 Text1.SetFocus`文本框获得焦点
Else
Label7.Caption = \"修改\" Data1.Recordset.Update
End If
8
End Sub
5.6:实现第二窗体的“浏览”功能
Private Sub Command3_Click()
On Error GoTo nofile
CommonDialog1.ShowOpen`设置通用对话框的样式即打开文件对话框
Combo1.Text = CommonDialog1.FileName`组合框内返回对话框选择的文件的路径名
Command1.Enabled = True使该控件可用
Exit Sub nofile:
If Err.Number = 32755 Then Exit Sub
End Sub
第六章:结论
刚拿到这个题目时。我真的感到无从下手,我才发现我们学的是那么少,我使劲的回想老师讲过的点点滴滴,我想到老师曾说过有一个什么控件是可以打开网页文件的,于是我开是查资料,了解到有个WebBrowser控件,利用它可以实现好多浏览器的功能。找到突破口我就开使不断的进军,课上不停的调试,有些属性就是靠调试知道的,比如说我主界面的控件随窗体一起扩大或缩小时,刚开使想象的挺简单的,不就是设置几个坐标和大小吗,可是一调试时就出现问题,有时都找不到我刚添加的控件了,在个过程中,我不断总结经验,我知道了把程序备份的好处。于是在课上我调程序,课下我就学习,以为我们的课本还没学完,我就先把后面没讲的内容看了有看,明白了好多,同时我也去图书管借书和上网查相关资料,关查到不行有的还的灵活的应用,这就需要你能完全的理解。通过一些天的查资料我越来越感觉我们学的是太少了,
在VB中还有好多好多等着我们去学,同时我也有了更大的兴趣去学VB。
参考文献
1. 龚沛曾.《VB程序设计简明教程(第二版)》,高等教育出版社,2002.8
2. www.baidu.com
3. 《Visual Basic 课程设计案例精编》中国水利水电出版社 张勇等编著
4. 《Visual Basic使用大全》
5. MSDN 帮助库
后记
9
感谢学校能开设这门课程设计,它让我学到了好多,不只是单纯的知识更重要的是它教会我如何解决实际问题,如何去学习新的东西。在这些天中老师的帮助和鼓励一直激励着我不断的去学,感谢李静老师对我
们的指导,她的认真负责使得我不断的进步。
附录(源程序代码)
1.主窗体代码
Option Explicit
Private Sub xinjian1_Click() '新建
Dim newweb As New Form1 newweb.Show '新建一个窗口
End Sub
Private Sub dakai1_Click() '打开
Form2.Show '显示第二个窗体
End Sub
'调用WebBrowser组件的execWB方法,这样简单了好多
Private Sub lincun1_Click() '另存为
WebBrowser1.ExecWB OLECMDID_SAVEAS, OLECMDEXECOPT_PROMPTUSER
End Sub
Private Sub dayin_Click() '打印
WebBrowser1.ExecWB OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER
End Sub
Private Sub guanbi1_Click() '关闭
Unload Me End Sub
Private Sub Form_Load() Form1.Caption = \"琦琦浏览器\"
Combo1.Text = \"\"
CoolBar1.Bands(1).MinWidth = 150 * Screen.TwipsPerPixelX CoolBar1.Bands(2).MinWidth = 150 * Screen.TwipsPerPixelX
CoolBar1.Bands(3).MinWidth = 100 * Screen.TwipsPerPixelX '设置每个BAND的宽度
Set Picture1.Container = CoolBar1 Set CoolBar1.Bands(2).Child = Picture1
Set Toolbar1.Container = CoolBar1 '使 Toolbar1被包含在CoolBar1.Bands(1)中
Set CoolBar1.Bands(1).Child = Toolbar1 CoolBar1.Width = Form1.Width '设置其位置
CoolBar1.Left = 0
WebBrowser1.Top = CoolBar1.Top + CoolBar1.Height
10
WebBrowser1.Left = 0 '设置其位置和大小
WebBrowser1.Width = Form1.Width
WebBrowser1.Navigate \"http://www.sjzri.edu.cn\"
End Sub
Private Sub Form_Resize()
On Error GoTo a
CoolBar1.Width = Form1.Width - 100 '使其宽度随窗口变化 WebBrowser1.Width = CoolBar1.Width '使其宽度随窗口变化 WebBrowser1.Height = Form1.Height - CoolBar1.Height - CoolBar1.Top
ProgressBar1.Top = Me.Height - StatusBar1.Height - 600
ProgressBar1.Left = StatusBar1.Width
StatusBar1.Width = Me.Width - ProgressBar1.Width - 300
StatusBar1.Style = sbrSimple
ProgressBar1.ZOrder
a: End Sub
Private Sub fuzhi1_Click() '复制
WebBrowser1.ExecWB OLECMDID_COPY, OLECMDEXECOPT_DODEFAULT
End Sub
Private Sub niantie1_Click() '粘贴
WebBrowser1.ExecWB OLECMDID_PASTE, OLECMDEXECOPT_DODEFAULT
End Sub
Private Sub quanxuan1_Click() '全选
WebBrowser1.ExecWB OLECMDID_SELECTALL, OLECMDEXECOPT_DODEFAULT
End Sub
Private Sub chazhao1_Click() '查找
WebBrowser1.SetFocus SendKeys \"^{f}\" '函数
End Sub
Private Sub picture1_resize()
On Error Resume Next
11
Label1.Left = 0 '在picture1中放入 Label1和Combo1,使其随picture1变化
Label1.Top = (Picture1.ScaleHeight - Label1.Height) / 22
Combo1.Left = Label1.Width
Combo1.Top = (Picture1.ScaleHeight - Label1.Height) / 22 '通过试验此距离最合适
Combo1.Width = Picture1.Width - Label1.Width
End Sub
Private Sub combo1_click() '转到指定网址
Dim i As Long
WebBrowser1.Navigate Combo1.Text
End Sub
Private Sub Combo1_Keydown(keycode As Integer, Shift As Integer)
Dim i As Long, existed As Boolean '逻辑型
If keycode = 13 Then
If Left(Combo1.Text, 7) <> \"http://\" Then '如过左边七个字符不是
Combo1.Text = \"http://\" + Combo1.Text
End If
WebBrowser1.Navigate Combo1.Text '打开网页
For i = 0 To Combo1.ListCount - 1 If Combo1.List(i) = Combo1.Text Then
existed = True Exit For Else existed = False
End If Next
If Not existed Then '如果不存在,则添加
Combo1.AddItem (Combo1.Text)
End If End If End Sub
Private Sub tingzhi1_Click() '停止
WebBrowser1.Stop
Me.Caption = WebBrowser1.LocationName '显示网页的名
End Sub
12
Private Sub shuaxin1_Click() '刷新
WebBrowser1.Refresh
End Sub
Private Sub tianjia1_Click() '添加收藏夹
Form3.Show End Sub
Private Sub zhengli1_Click() '整理收藏夹
Form5.Show End Sub
Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button) '工具栏
On Error Resume Next '如果错误继续
Select Case Button.Index
Case 1
WebBrowser1.GoBack '后退
Case 2
WebBrowser1.GoForward '前进
Case 3 WebBrowser1.Stop
Me.Caption = WebBrowser1.LocationName '显示网页的名
Case 4
WebBrowser1.Refresh '刷新
Case 5
WebBrowser1.GoHome '主页
Case 6 Form5.Show
End Select End Sub
Private Sub WebBrowser1_DownloadBegin() '下载开始时状态栏显示“正在下载,请少候”
StatusBar1.Panels(1).Text = \"正在下载,请少候\"
End Sub
13
Private Sub WebBrowser1_DownloadComplete() '下载完成时状态栏显示“完毕”
StatusBar1.Panels(1).Text = \"完毕\"
ProgressBar1.Value = 0
End Sub
Private Sub WebBrowser1_ProgressChange(ByVal Progress As Long, ByVal ProgressMax As Long)
'下载进行时进度条变化 If ProgressMax = 0 Then Exit Sub ProgressBar1.Max = ProgressMax
If Progress <> -1 And Progress <= ProgressMax Then
ProgressBar1.Value = Progress
End If End Sub
Private Sub WebBrowser1_TitleChange(ByVal Text As String) Combo1.Text = WebBrowser1.LocationURL '显示当前网页名
End Sub
2. form2代码
Private Sub Command1_Click()
Form2.Hide
Form1.WebBrowser1.Navigate Combo1.Text
End Sub
Private Sub combo1_change() If Combo1.Text <> \"\" Then Command1.Enabled = True
Else
Command1.Enabled = False
End If End Sub
Private Sub Combo1_Keydown(keycode As Integer, Shift As Integer)
Command1.Enabled = True
End Sub
Private Sub Command2_Click()
Unload Me End Sub
14
Private Sub Command3_Click()
On Error GoTo nofile CommonDialog1.ShowOpen
Combo1.Text = CommonDialog1.FileName
Command1.Enabled = True
Exit Sub nofile:
If Err.Number = 32755 Then Exit Sub
End Sub
3.form3代码
Private Sub Command1_Click() If Command1.Caption = \"添加\" Then
Command1.Caption = \"确认\"
mbookmark = Form4.Data1.Recordset.Bookmark
Form4.Data1.Recordset.AddNew Form4.Text1 = Text1.Text
Form4.Text2 = Form1.WebBrowser1.LocationURL
Else
Command1.Caption = \"添加\" Form4.Data1.Recordset.Update Form4.Data1.Recordset.MoveLast
Unload Me End If End Sub
Private Sub Command2_Click()
Unload Me End Sub
Private Sub Form_Load()
Text1.Text = Form1.WebBrowser1.LocationName
End Sub
4. form4代码
Private Sub data1_reposition() '改变指针位置,显示当前指针位置
Data1.Caption = Data1.Recordset.AbsolutePosition + 1 '当前记录集指针值加一
End Sub
Private Sub Label5_Click()
15
Label6.Enabled = Not Label6.Enabled '添加时“修改”和“删除”不可用
Label7.Enabled = Not Label7.Enabled If Label5.Caption = \"添加\" Then
Label5.Caption = \"确认\"
Data1.Recordset.AddNew '添加一条新记录
Text1.SetFocus
Else
Label5.Caption = \"添加\"
Data1.Recordset.Update '调用Update方法,将缓冲区数据写入数据库
Data1.Recordset.MoveLast
End If End Sub
Private Sub Label6_Click() On Error Resume Next Data1.Recordset.Delete Data1.Recordset.MoveNext If Data1.Recordset.EOF Then
Data1.Recordset.MoveLast
End If End Sub
Private Sub Label7_Click() Label5.Enabled = Not Label5.Enabled Label6.Enabled = Not Label6.Enabled If Label7.Caption = \"修改\" Then Label7.Caption = \"确认\" Data1.Recordset.Edit Text1.SetFocus
Else
Label7.Caption = \"修改\" Data1.Recordset.Update
End If End Sub
Private Sub Label8_Click()
Unload Me End Sub
Sub form_mousemove(Button As Integer, Shift As Integer, x As Single, y As Single)
If 1905 < y And y < 2295 Then '找出标签控件的坐标,然后定义鼠标移过事件
16
Label5.BackStyle = 1 Label6.BackStyle = 1
Else
Label5.BackStyle = 0 Label6.BackStyle = 0
End If
If y > 2625 And y < 3135 Then
Label7.BackStyle = 1 Label8.BackStyle = 1
Else
Label7.BackStyle = 0 Label8.BackStyle = 0
End If End Sub
5.form5代码
Sub form_mousemove(Button As Integer, Shift As Integer, x As Single, y As Single)
If x > 1050 And x < 2415 Then '找出标签控件的坐标,然后定义鼠标移过事件
Label1.BackStyle = 1
Else
Label1.BackStyle = 0
End If
If x > 2865 And x < 4515 Then
Label2.BackStyle = 1
Else
Label2.BackStyle = 0
End If
If x > 5265 And x < 6330 Then
Label3.BackStyle = 1
Else
Label3.BackStyle = 0
End If End Sub
Private Sub Form_Load() MSFlexGrid1.ColWidth(0) = 2500 MSFlexGrid1.ColWidth(1) = 2500 MSFlexGrid1.ColWidth(2) = 2000
17
End Sub
Private Sub Label1_Click()
Form1.WebBrowser1.Navigate MSFlexGrid1.Text
Form5.Hide End Sub
Private Sub Label2_Click()
Form4.Show End Sub
Private Sub Label3_Click()
Data1.Refresh MSFlexGrid1.Refresh
End Sub
18
因篇幅问题不能全部显示,请点此查看更多更全内容