1 / 34
文档名称:

706-吉林大学远程教育课件.ppt

格式:ppt   页数:34
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

706-吉林大学远程教育课件.ppt

上传人:小玉儿 2012/2/6 文件大小:0 KB

下载得到文件列表

706-吉林大学远程教育课件.ppt

文档介绍

文档介绍:吉林大学远程教育课件
Windows A P I编程
主讲人: 翟慧杰
学时:48
(第四十七讲)
尽管Delphi具有上述所介绍的强大功能,但是它也离不开Windows API这个基础。在Delphi中使用Windows API进行程序设计,与Visual C+十的不同之处仅在于C+十与Object Pascal这二者之间的语法差别而已。
Delphi开发 Windows API应用程序的步骤
下面以 Delphi 5为例,介绍在Delphi中如何实现基于 Window API的程序设计。
首先,单击 File菜单下的 New命令,这时将弹出如图14- l所示的对话框。
在图 14-l中,选择 Console Wizard图标,然后单击 OK按钮,这时, Delphi的主界面如图12-2所示。
从图 14-2可以看出, Delphi的对象监视器为空,也就是说,当前应用程序没有使用到表单和其他的可视化组件。事实上,这时Delphi为用户只生成了一个项目文件,而没有生成相应的单元文件,这和基于Delphi可视组件库的应用程序是有一定差别的。
在图14-2的源文件编辑器中编辑自己的基于Windows API的程序源码,完成后,编译运行即可,这一步和Delphi中基于可视组件库的应用程序是一致的。
Windows AP在 Delphi中的应用实例
下面是一个在 Delphi中采用 Windows API进行程序设计的一个实例。
【例 12-1】基于 Windows API的 Delphi应用程序
该程序是一个用 Windows API编写的简单的应用程序,主要用它来说明如何在 Delphi
中调用 Windows API函数,如何设计基于 Windows API的应用程序。
由于使用的是Windows API和消息循环来构造应用程序,因此在程序中的uses部分包含了Windows 和Messages两个单元。uses子句和Visual C+十中的include很类似,其功能也是为了应用程序能调用在某个文件中定义的函数和常量。在 Delphi中,所有的Windows API函数的原型和数据结构及常量的定义均保存在Windows和Messages这两类文件中。在 Delphi的 Lib目录下可以打开这两个文件,其文件名分别为 ,用户可以从这两个文件中获得准确的函数原型、数据结构和常量的定义。
程序中定义了一个全局变量wClass来代表最终的窗口。这个变量是TWndClass类型的,TWndClass实际上是一个结构体,它是 Visual C+十中的 WndClass在 Delphi中的实现。通过对这个结构体变量的各个域进行不同的设置,可以获得不同的窗口风格和界面特征。在程序中可通过如下语句实现对wClass变量的初始化:
上述程序不论是在功能L还是在实现方式上和 Visual C+十中对 wClass进行的初始化都是类似的。例如,指定hCursor域的值时,在上述程序中是通过调用API函数LoadCursor来实现的,其中指定的光标标识符IDC ARROW是在Windows系统中预定义的箭头光标。不过,由于 Delphi用的编程语言是 Object Pascal,因此在指定 IpfnWndProc时,不仅仅需要指定窗口函数的名称,而且必须在其前面添加一个“@”号,这个号表示传递给lpfnWndProc是窗口函数WindowProc的人口地址。
在完成对变量wClass的初始化之后,接下来应该对窗口类进行注册,这个功能是通过调用函数RegisterClass来实现的。
在完成对窗口类的注册后,就可以调用函数CreateWindow来创建窗口,程序中对CreateWindow函数的调用如下:
其中,参数 Sample Class用于指定生成窗口的窗口类的名称,也就是通过 RegisterClass函数注册的用户自定义的窗口类。如果CreateWindow函数执行成功,则返回新建的窗口句柄并将这个句柄赋值给全局变量Handle。这里的窗口句桶和Visual C+十中的窗口句柄的含义是完全一致的。
程序中除了创建主窗口外,还通过调用CreateWindow函数创建了两个按钮、一个编辑框和一个静态文本框。窗口类型都是由Windows系统预定义的,所以不用再注册就可以直接使用。这些窗口又被称为子窗口,因为它们是隶属于一个父窗口的,在这里就是隶属于由句柄Handle标识的窗口。正是这些子窗口构成了和用户进行交互的界面。
在本程序中,还通过调用API函数CreateFont创建了一个字体,程序中对CreateFont函数的调用如下: