VB编程:记住窗体的大小和位置

ZDNet软件频道 时间:2004-03-23 作者:Builder.com |  我要评论()
本文关键词:vb
如果按照VB里缺省的设置,每当程序每次启动的时候,窗体都会按照程序设计时指定的大小和位置出现。为了让程序“记住”上次被执行时的大小和位置程序必须在结束的时候保存其大小和位置。
本文译自Builder.com,未经许可请勿转载

如果按照vb里缺省的设置,每当程序每次启动的时候,窗体都会按照程序设计时指定的大小和位置出现。对于有的应用程序而言,让程序“记住”上次被执行时的大小和位置有助于提高用户友好的体验。为了实现这个目的,程序必须在结束的时候保存其大小和位置(信息),然后在它下次启动的时候利用这些信息。

Windows注册表是保存这些信息的最佳场所。下面的过程要从窗体的Unload事件过程调用,它会在注册表里保存窗体的位置(Left和Top性质)及其大小(Width和Height性质):

Public Sub SaveFormPosition(f As Form)

SaveSettingApp.EXEName, "Form Position", "Left", Str(f.Left)
SaveSettingApp.EXEName, "Form Position", "Top", Str(f.Top)
SaveSettingApp.EXEName, "Form Position", "Width", Str(f.Width)
SaveSettingApp.EXEName, "Form Position", "Height", Str(f.Height)

End Sub

当程序启动的时候恢复其大小和位置要稍稍多花一点工夫。程序第一次运行的时候,这一信息不会被放到注册表里,所以你必须要在自己的代码里顾及到这个事实。

你可以从窗体的Load事件过程里调用下面这个过程,以便恢复其位置。如果没有在注册表里找到所要的信息,GetSetting这个函数会返回一个空白的字符串。在这种情况下,过程就会退出,而窗体会以缺省的大小和位置显示。

Public Sub RestoreFormPosition(f As Form)

Dim buf As String
Dim l As Long, t As Long, w As Long, h As Long

buf = GetSetting(App.EXEName, "Form Position", "Left")

' If buf = "" then the settings were not saved perhaps because
' this is the first time the program was run. Exit the sub and
' let the form display at its default size and position.
If buf = "" Then Exit Sub

l = CLng(buf)
buf = GetSetting(App.EXEName, "Form Position", "Top")
t = CLng(buf)
buf = GetSetting(App.EXEName, "Form Position", "Width")
w = CLng(buf)
buf = GetSetting(App.EXEName, "Form Position", "Height")
h = CLng(buf)
f.Move l, t, w, h

End Sub

你的程序会调用窗体里Load和Unload事件过程的两个过程,这两个过程如下:

Private Sub Form_Load()

RestoreFormPosition Me

End Sub

Private Sub Form_Unload(Cancel As Integer)

SaveFormPosition Me

End Sub

这些过程只能用于程序的一个窗体。如果想要保存两个或者更多窗体的大小和位置,你就需要某种方式分别保存每个窗体的设置。你可以通过在注册表键里加入窗体的名称来达到这一目的,就像下面保存Left设置一样:

SaveSettingApp.EXEName, "Form Position", f.Name & "Left", Str(f.Left)

and here for retrieving the Left setting:

buf = GetSetting(App.EXEName, f.Name & "Form Position", "Left")


本文作者:自从Visual Basic 1.0版问世以来,Peter Aitken就一直在使用vb编程。他已经编写过很多关于VisualBasic以及其他计算机和编程方面的书籍和杂志文章了。


责任编辑:李宁

欢迎评论投稿

百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134