End If
End Sub
其中MsgBox“Invalid Password,try again!”,“Login”用于显示一个对话框,对话框中的信息为字符串“Invalid Password,try again!”,并且对话框的标题栏中的文字为“Login”。
不论用户输入用户名和密码与否,单击Cancel按钮,程序都会给出一个提示的信息,询问是否关闭计算机,如果用户不想关闭计算机,仍然可以接受用户的输入,否则就会关闭计算机,代码如下:
Private Sub cmdCancel_Click()
'用户单击Cancel按钮时触发
Dim r As Integer
r = MsgBox("Are you want to shoutdown?", 1 + 32 + 4096, "ShounDown")
'显示一个对话框,提示是否关闭计算机
If r = 1 Then
'如果用户在对话框中单击“确定”按钮
ExitWindowsEx 1, 66
'关闭计算机
End If
txtUserName.SetFocus
End Sub
其中r = MsgBox("Are you want to shoutdown?", 1 + 32 + 4096, "ShounDown")这条语句用于显示一个询问用户是否关闭计算机的对话框,对话框中有“确定”和“取消”两个按钮,标题栏中显示的文字为字符串“ShounDown”,并且全部应用程序都被挂起,直到用户对消息框作出响应才继续工作。
变量r用于存储用户的反应,如果r=1,表示用户在对话框中单击“确定”按钮。
在这里还要用到一个API函数——ExitWindowsEx(),用于退出Windows系统,同时关闭计算机,它的声明如下:
Private Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long
执行下面的语句就可以实现关闭计算机的功能:
ExitWindowsEx 1, 66
如果用户在没有输入正确的用户名和密码的情况下而强行关闭登录应用程序,那么就要屏蔽用户的操作,同时关闭系统,如下列代码:
Private Sub Form_Unload(Cancel As Integer)
ExitWindowsEx 1, 66 '关闭计算机
End Sub
保存项目文件,并且把它编译成d:\vbstudio\登录.exe文件。为了在启动Windows的同时开始登录,需要把“登录.exe”文件添加到启动程序组中,打开c:\pwin98\win.ini文件,在[Windows]项中的“run=”语句后面添加“d:\vbstudio\登录.exe文件”,如图9-4所示。

图9-4 添加启动程序
重新启动计算机,启视频面后会出现如图9-5所示的登录画面。

图9-5 登录画面
如果单击Cancel按钮,程序会给出一个如图9-6所示的提示信息,询问是否关闭计算机,如果用户不想关闭计算机,仍然可以接受用户的输入,否则就会关闭计算机,

图9-6 ShounDown对话框
用户输入用户名和密码,单击OK按钮后,如果密码不正确,程序就会给出提示用户重新输入密码的信息如图9-7所示。如果密码正确,结束程序的运行。

图9-7 密码不正确的对话框
附源程序清单如下:
程序清单
Option Explicit
Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
'窗体位置的函数说明
Private Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long
'退出操作系统的函数说明
Private Const SWP_NOSIZE = &H1
Private Const SWP_NOMOVE = &H2
Private Const HWND_TOP = 0
'常量的说明
Private Sub Form_Unload(Cancel As Integer)
ExitWindowsEx 1, 66
'关闭计算机
End Sub
Private Sub Timer1_Timer()
'每隔1秒钟触发一次
SetWindowPos frmLogin.hwnd, HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE
'登录位于其他窗体的前面
frmLogin.SetFocus
End Sub
Private Sub cmdCancel_Click()
'用户单击Cancel按钮时触发
'set the global var to false
'to denote a failed login
Dim r As Integer
'定义一个整型变量
r = MsgBox("Are you want to shoutdown?", 1 + 32 + 4096, "ShounDown")
'显示一个对话框,提示是否关闭计算机
'对话框中显示有“确定”和“取消”两个按钮
'标题栏中显示的文字为字符串“ShounDown”
'全部应用程序都被挂起,直到用户对消息框作出响应才继续工作。
If r = 1 Then
'如果用户在对话框中单击“确定”按钮
ExitWindowsEx 1, 66
'关闭计算机
End If
txtUserName.SetFocus
End Sub
Private Sub cmdOK_Click()
'check for correct password
If txtUserName.Text = "" Then
'如果不输入用户名
MsgBox "Invalid UserName, try again!", , "UserName"
'弹出一个对话框
txtUserName.SetFocus
Else
If txtPassword = "password" Then
'如果用户输入的密码正确
'place code to here to pass the
'success to the calling sub
'setting a global var is the easiest
End
'退出程序的运行
Else
'如果用户输入的密码不正确
MsgBox "Invalid Password, try again!", , "Login"
'显示一个对话框
txtPassword.SetFocus
SendKeys "{Home}+{End}"
'重新登录
End If
End If
End Sub
在Windows处理图像的API函数中,Bitblt()函数是非常重要而且常用的函数之一。
通过这个函数我们可以实现图像的视频,图像的旋转和图像的动态显示等效果,同时如果想在图像处理方面有所突破的话,也必须能够熟练的掌握Bitblt()函数。它的声明如下: