背景:                 
[本书目录] [图书首页] [本书讨论区]  
链接地址:http://www.17xie.com/read-66.html    注册17xie 一起来写书 实现您的出书梦想!

第九章  API函数的应用

API就是Application Programming Interface(应用程序接口)的英文缩写,API是建立在Windows操作系统内部的1000多个函数的集合。

在本章中,我们将要学习如何在Visual Basic中调用WindowsAPI函数来实现对文字、图形、图像和多媒体的处理。

9.1  API系统注册程序

用户平时经常可以看到Windows登录注册程序,比如进入Windows NT时的用户注册登录。为了了解API,我们利用Windows提供的API函数制作一个系统简易的系统登录程序。它所实现的功能是,如果用户不能够输入正确的用户名和密码密码,就会被拒绝进入Windows操作系统,如果用户强行关闭登录程序,就会同时关闭计算机,所以就保护了数据的安全。

在这里就给出一个在Visual Basic通过调用API函数制作Windows登录程序的示例,具体的步骤如下:

1.启动新的项目

在屏幕上会出现一个空白的窗体。但是在Visual Basic中自己提供了一个用于制作登录程序的窗体,所以首先删除空白的窗体,选择菜单“工程”/“删除Form1”来删除窗体1,然后选择菜单“工程”/“添加窗体”,就会弹出添加窗体对话框,选择其中的Log in Dialog,如图9-1所示。

9-1  Log in Dialog图标

单击OK按钮后的窗体如图9-2所示。

9-2  Log in Dialog窗体

在这里系统已经自动的为我们生成了程序的框架,只要在上面添加一些代码和少量的控件就可以实现登录程序的功能。窗体的属性设置如表9-1所示。

9-1  窗体的属性设置

属 性

设 置

(Name)

FrmLogin

BorderStyle

3 - Fixed Dialog

Caption

Login

Enabled

True

Height

1920

Left

2790

Moveable

False

Picture

(None)

StartUpPosition

2 - CenterScreen

Top

3150

Visible

True

Width

3840

2.添加Timer控件

为了保证登录窗口始终位于其他窗口的前面,需要定时检测登录窗体的位置,如果有别的窗口在它的前面,那么就可以调用API函数改变各窗口的相对位置。

首先在窗体上放置一个Timer控件,它的属性设置如表9-2所示。

9-2  Timer控件属性设置

属 性

设 置

(Name)

Timer1

Enabled

True

Interval

1000

Left

0

Top

567.2

提示:

@        Interval属性设置为1000,也就意味着每个1秒钟就会激活一次Timer1_Timer()事件。

除了Timer空间之外,为了改变各窗口的相对位置,还需要调用SetWindowPos()函数,它的声明如下:

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

函数的参数及其说明如表9-3所示。

9-3  函数的参数及说明

参 数

说 明

Hwnd

窗口的句柄

HWndInsertAfter

指定各个窗口的顺序

X

窗口的左上角的x坐标

Y

窗口的左上角的y坐标

Cx

窗口的新宽度

Cy

窗口的新高度

WFlags

影响窗口位置和大小的一个参数

Timer1_Timer()事件中添加下列代码:

Private Sub Timer1_Timer()

'每隔1秒钟触发一次

SetWindowPos frmLogin.hwnd, HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE

'登录位于其他窗体的前面

frmLogin.SetFocus

End Sub

HWndInsertAfter参数设置为HWND_TOP,表示frmLogin窗口位于所有窗体的前面,但是还要在程序的声明段中添加定义HWND_TOP常量的代码:

Private Const HWND_TOP = 0

WFlags参数设置为SWP_NOMOVE Or SWP_NOSIZE,它的意义是不改变原有窗体的大小和位置,所以就屏蔽了xycxcy参数。同样也要在程序的声明段中添加定义SWP_NOMOVE SWP_NOSIZE常量的代码:

Private Const SWP_NOSIZE = &H1

Private Const SWP_NOMOVE = &H2

完成之后的窗体如图9-3所示。

9-3  添加了Timer控件的窗体

注意:

@        API函数声明的所有语句都要写在同一行上。

3.为OK按钮添加代码

用户输入用户名和密码后,如果密码不正确,程序就会给出提示用户重新输入密码的信息;如果密码正确,结束程序的运行,实现以上功能的代码如下:

Private Sub cmdOK_Click()

      If txtPassword = "password" Then

        '如果用户输入的密码正确

        End

        '退出程序的运行

      Else

        '如果用户输入的密码不正确

        MsgBox "Invalid Password, try again!", , "Login"

        '显示一个对话框

      End If


字数:3135    最后更新:1年以前 [08-29 14:29]我爱钱 修改
本页编辑者:我爱钱  
[前一页]:第八章  [后一页]:第九章
[在本页中加入书签] [收藏本书] [推荐本书]
  17xie论坛 > 本书讨论区 > 本页评论   (共0条)
发表评论

用户名称 匿名发表
评论内容
验证码

关于我们 | 版权声明 | 免责声明 | 诚聘英才 | 联系我们 | 合作伙伴 | 友情链接 | 广告合作 | 提交意见
Copyright © 2007 17xie.com 互联网协同写书平台 京ICP备08002671号