基于API的window程序研究.docx

上传人:b****6 文档编号:6455103 上传时间:2023-01-06 格式:DOCX 页数:32 大小:70.45KB
下载 相关 举报
基于API的window程序研究.docx_第1页
第1页 / 共32页
基于API的window程序研究.docx_第2页
第2页 / 共32页
基于API的window程序研究.docx_第3页
第3页 / 共32页
基于API的window程序研究.docx_第4页
第4页 / 共32页
基于API的window程序研究.docx_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

基于API的window程序研究.docx

《基于API的window程序研究.docx》由会员分享,可在线阅读,更多相关《基于API的window程序研究.docx(32页珍藏版)》请在冰豆网上搜索。

基于API的window程序研究.docx

基于API的window程序研究

目录

摘要III

AbstractIV

第一章绪论1

1.1研究的内容1

1.1.1API的背景及定义1

1.2API介绍3

1.3论文的主要工5

第二章windowsAPI概要6

2.1Windows程序内部运行原理6

2.2Windows程序设计9

2.3.Windows编程模式10

2.3.1WindowsAPI简介10

2.3.2Windows程序设计的基本概念10

2.2.3Windows程序结构15

2.3.4Windows编程特点16

2.4API函数的分类18

2.5使用API简介20

2.6API概念21

2.6.1解决问题的3个途径21

2.6.2API释义22

2.7WindowsAPI介绍24

2.8API声明25

2.9API调用28

2.10Win32API概论29

2.10.1为什么使用win32API29

2.10.2win32API简介30

2.10.3窗口管理函数31

2.10.4窗口通用控制36

第三章windowsAPI的实现37

3.1系统配置37

3.2显示一个窗口的Windows应用程序37

3.3显示“你好,我的VisualC++世界!

”40

参考文献42

致 谢43

摘要

随着软件技术的不断发展,在Windows平台上出现了很多优秀的可视化编程环境。

这些可视化编程环境操作简便、界面友好,比如:

VisualC++,Delphi,VisualBasic等等。

在这些工具中提供了大量的类库和各种控件,它们替代了API的神秘功能。

事实上,这些类库和控件都是构筑在WindowsAPI的基础上的,但它们使用方便,加速了Windows应用程序的开发。

Windows是一个具有可视化图形用户界面的多任务的操作系统,它为用户提供了风格统一的由窗口、菜单、工具栏等界面元素所构成的多任务环境。

编写应用程序其实就是创建一个或多个窗口,程序的执行过程是窗口内部、窗口与窗口之间以及窗口与系统之间进行数据交换与处理的过程。

目前普遍使用的Windows98、WindowsNT/2000/XP均为32位操作系统,API事实上藏身于系统数据夹的几个.dll动态链接库里面,API作为微软在视窗系统下向广大用户开放的一种资源和推广的一种程序设计理念,在视窗系统的一系列版本得到了不断完善和强化,微软的所有32位平台从最初的Windows95到Windows2000以及到新近发布的WindowsXP都支持统一的API调用,包括函数、结构、消息、宏及接口。

使用Windows32位API不但可以开发出在各种平台上都能成功运行的应用程序,而且也可以充分利用每个平台特有的功能和属性。

关键词:

WindowsAPIdll视窗系统窗口VisualC++

Abstract

Alongwiththesoftwaretechnologyunceasingdevelopment,appearedtheverymanyoutstandingvisualizationprogrammingenvironmentintheWindowsplatform.Thesevisualizationprogrammingenvironmentoperationsimple,thecontactsurfaceisfriendly,forinstance:

VisualC++,Delphi,VisualBasicandsoon.Hasprovidedthemassivekindofstorehousesandeachkindinthesetoolscontrols,theyhavesubstitutedtheAPImysticalfunction.Infact,thesekindofstorehousesandcontrolallaretheconstructionintheWindowsAPIfoundation,buttheireasytooperate,hasacceleratedtheWindowsapplicationproceduredevelopment.Windowsisonehasthevisualizationgraphicaluserinterfacemulti-dutyoperatingsystem,ithasprovidedthestyleunificationfortheuserthemulti-dutyenvironmentwhichbycontactsurfaceelementsandsoonthewindow,menu,toolbarconstitutes.Thecompilationapplicationprocedureisactuallyfoundsormanywindows,theprocedureimplementationisbetweenbetweenthewindowinterior,thewindowandthewindowaswellasthewindowandthesystemcarriesonthedataexchangeandtheprocessingprocess.AtpresentuniversaluseWindows98,WindowsNT/2000/XPwas32operatingsystems,APIhidesinfactinsideseveral.dlldynamiclinkstorehousewhichclampsinthesystemdata,APItookMicrosoftundertheWindowssystemoneresourcesandthepromotedonekindofprogrammingideawhichopenstotheusercommunity,obtainedinWindowssystemaseriesofeditionshasconsummatedandthestrengtheningunceasingly,Microsoft'sall32platforms2000aswellastoWindowsXPwhichrecentlyissuedallsupportstheunifiedAPItransferfrominitialWindows95toWindows,includingfunction,structure,news,greatandconnection.

Keywords:

WindowsAPIdllVisualC++

第一章绪论

1.1研究的内容

1.1.1API的背景及定义

在经济全球化的今天,随着计算机科学与网络技术的飞速发展,众多科学研究活动越来越依赖计算机强大的计算和存储能力。

科学计算成为继理论和实验之后的第三种科学研究手段。

许多科学研究领域的计算问题需要协同多个计算资源共同求解。

网格技术的发展为科学计算提供了广阔的资源空间。

相对于超级计算机,利用网格技术搭建科学计算网格,成为满足科学计算问题快速增长的资源需求的经济有效的方法。

针对科学计算网格中远程资源访问和网格应用作业级API设计的相关问题,结合包含大量、非平衡计算作业的一类科学计算问题的具体需求。

Windows这个多作业系统除了协调应用程序的执行、分配内存、管理资源…之外,她同时也是一个很大的服务中心,调用这个服务中心的各种服务(每一种服务就是一个函数),可以帮应用程式达到开启视窗、描绘图形、使用周边设备等目的,由于这些函数服务的对象是应用程序(Application),所以便称之为ApplicationProgrammingInterface,简称API函数。

WIN32API也就是MicrosoftWindows32位平台的应用程序编程接口。

  Win32程序是构筑在Win32API基础上的。

在Win32API中包含了大量的函数、结构和消息等,它不仅为应用程序所调用,也是Windows自身的一部分,Windows自身的运行也调用这些API函数。

回顾Windows发展的历史,20世纪90年代初期,当微软帝国逐渐崛起,视窗操作系统开始占据主导地位的时候,开发Windows下的应用也逐渐风行起来。

不过,那时候的程序员可不比我们现在幸福,他们缺乏高效可视化的开发工具,大家必须借助于微软提供的“ApplicationProgrammingInterface”,也就是我们常说的应用程序编程接口。

通过API中的各种各样的函数,犹如儿童搭积木一样来构建应用系统的各种界面和功能。

那时要开发一个应用系统,程序员需要熟记大量API函数,了解Windows系统的工作机制,非一般人所能胜任。

然而随着软件技术的飞速发展,在Windows平台上出现了很多优秀的面向对象的可视化编程工具,程序员可以采用“所见即所得”的编程方式来开发具有精美用户界面和功能强大的应用程序。

VisualC++、VisualBasic、PB、Delphi这些优秀可视化编程工具的诞生与发展,使程序设计不再是阳春白雪,越来越多的人投入到这个行业里来,造就了今天软件业的空前繁荣。

在这些工具中,提供了各种各样的控件,为控件定义了众多的属性和方法(函数),通过属性和方法将Windows系统底层函数封装起来,从而方便地使程序员把精力放在程序整体功能和企业的业务逻辑实现上,而不必过于关注界面设计、系统通用功能的实现等技术细节,由此带来的是应用程序开发难度的降低和开发效率的极大提高。

虽然可视化编程工具使应用系统的开发变得简单快捷,但它们一般只提供Windows的常用功能,并且每一种程序开发工具都有其着重点,对于比较复杂和特殊的功能来说,开发工具提供的控件常常无法实现,这时就不可避免地涉及到系统API函数的调用。

实际上如果要开发出更灵活、更实用、更具效率的应用程序,必然要直接使用到系统的API函数。

而对Windows系统本身来讲,它的运行也是建立在众多包含API函数的动态库之上的。

1.2API介绍

API的英文全名是ApplicationProgrammingInterface,直接翻译成中文是“应用程序设计界面”,更完整的意义是“窗口系统下应用程序的设计接口”。

基本上它是用来建构Windows系统本身的函式库,所有的应用软件,包括我们使用的程序语言如VB,VC,甚至JAVA等等在执行时都必须经过API与Windows沟通,架构大致如下图。

图1-1

API基本上是一个C语言写的链接库,在早期的计算机世界中“个人计算机”只是为了可以让多数人在合理成本之下享受些许计算机功能而设计的简易“玩具”!

结构非常简单,内存极小,所以其核心的操作系统也非常小!

多半直接由汇编语言写成,当然它的“软件”也多半不是由较高级语言如C或Fortran等等写的。

当PC架构逐渐变大,操作系统功能需求日渐复杂,便开始模仿当时在大型计算机系统中已经有的Unix操作系统来建立自己的操作系统,因为Unix是用C语言写的,Windows与较早的DOS也都很自然的使用C来建构。

为了方便更快速的发展Windows系统程序,以及在Windows平台上可以使用的应用软件,微软设计师们将很多设计好的低阶函式(子程序)集结成API函式库,一如我们设计VB时可以直接使用工具箱中的组件,事实上他们都是前人已经写好的程序,我们只是叫用他们,并做一些参数设定而已,但可以比前辈快很多就做出功能更复杂的程序。

譬如当我们用VB程序在银幕上画一个点时会写一个指令Pset,这其实是一个很复杂的动作,光想一想计算机可能面对的银幕有多少种机型与分辨率不同的设定就可以体会了。

而这些复杂的处理都已经包括在API的SetPixe函式中了,Pset只要呼叫SettPixel就可以绘图了,我们写程序变得容易多了!

有了API之后所有架构于Windows系统上的软件,包括我们使用的VidualBasic或VisualC都直接或间接的使用API来完成工作,是各个窗口程序语言各自有自己的调用,所以虽然大家都系出同门,但是最后的成品不易整合,对于大型程序来说不太方便,而且各种语言可以使用的API范围也不太一样,因此有了所谓.NET架构的产生,其流程大致如下:

图1-2

可以说.NET将API的使用方式,范围都统一了,还增加了很多整合API功能的链接库,最重要的是从此不论你用哪种程序语言,只要是建构于.NETFramework上都可以有一样的资源,成果也可以整合了!

 

1.3论文的主要工

这篇论文是对windowsAPI背景及定义,windows程序内部运行原理,WinMain函

数窗口的创建等WindowsAPI的基本概念。

通过对WindowsAPI的研究,做了简单的API窗口程序的实现。

第二章windowsAPI概要

2.1Windows程序内部运行原理

Windows应用程序,操作系统,计算机硬件之间的相互关系

2-1

关于API

向下的箭头③表示应用程序可以通知操作系统执行某个具体的动作,如操作系统能够控制声卡发出声音,但它并不知道应该何时发出何种声音,需要应用程序告诉操作系统该发出什么样的声音。

这个关系好比有个机器人能够完成行走的功能,但是,如果人们不告诉它往哪个方向上走,机器人是不会主动行走的。

这里的机器人就是操作系统,人们就是应用程序。

那么,应用程序是如何通知操作系统执行某个功能的呢?

有过编程经验的读者都应该知道,在应用程序中要完成某个功能,都是以函数调用的形式实现的,同样,应用程序也是以函数调用的方式来通知操作系统执行相应的功能的。

操作系统所能够完成的每一个特殊功能通常都有一个函数与其对应,也就是说,操作系统把它所能够完成的功能以函数的形式提供给应用程序使用,应用程序对这些函数的调用就叫做系统调用,这些函数的集合就是Windows操作系统提供给应用程序编程的接口(ApplicationProgrammingInterface),简称WindowsAPI。

如CreateWindow就是一个API函数,应用程序中调用这个函数,操作系统就会按照该函数提供的参数信息产生一个相应的窗口。

从变量的类型区分变量的用途

intx,y;

x=30;

y=30;

//x和y既可以用来表示坐标点,也可以用来表示宽度和高度,还可以用来表示身高和体重。

typedefintWIDTH

typedefintHEIGHT

WIDTHx;

HEIGHTy;

//好处:

我们从变量的类型上就可以知道x和y是用来表示宽度和高度。

WinMain函数

Windows程序的入口函数

intWINAPIWinMain(

HINSTANCEhInstance,//handletocurrentinstance

HINSTANCEhPrevInstance,//handletopreviousinstance

LPSTRlpCmdLine,//commandline

intnCmdShow//showstate

);

窗口的创建

创建一个完整的窗口需要经过下面四个操作步骤:

⏹设计一个窗口类;

⏹注册窗口类;

⏹创建窗口;

⏹显示及更新窗口。

设计窗口类

typedefstruct_WNDCLASS{

UINTstyle;

WNDPROClpfnWndProc;

intcbClsExtra;

intcbWndExtra;

HANDLEhInstance;

HICONhIcon;

HCURSORhCursor;

HBRUSHhbrBackground;

LPCTSTRlpszMenuName;

LPCTSTRlpszClassName;

}WNDCLASS;

窗口类的类型

在我们的程序中经常要用到一类变量,这个变量里的每一位(bit)都对应某一种特性。

当该变量的某位为1时,表示有该位对应的那种特性,当该位为0时,即没有该位所对应的特性。

当变量中的某几位同时为1时,就表示同时具有几种特性的组合。

一个变量中的哪一位代表哪种意义,不容易记忆,所以我们经常根据特征的英文拼写的大写去定义一些宏,该宏所对应的数值中仅有与该特征相对应的那一位(bit)为1,其余的bit都为0。

我们使用gotodefinition就能发现CS_VREDRAW=0x0001,CS_HREDRAW=0x0002,CS_DBLCLKS=0x0008,CS_NOCLOSE=0x0200。

他们的共同点就是只有一位为1,其余位都为0。

如果我们希望某一变量的数值既有CS_VREDRAW特性,又有CS_HREDRAW特性,我们只需使用二进制OR(|)操作符将他们进行或运算相组合,如style=CS_VREDRAW|CS_HREDRAW|CS_NOCLOSE。

如果我们希望在某一变量原有的几个特征上去掉其中一个特征,用取反(~)之后再进行与(&)运算,就能够实现,如在刚才的style的基础上去掉CS_NOCLOSE特征,可以用style&~CS_NOCLOSE实现。

2.2Windows程序设计

Windows是一个具有可视化图形用户界面的多任务的操作系统,它为用户提供了风格统一的由窗口、菜单、工具栏等界面元素所构成的多任务环境。

2.3.Windows编程模式

由于Windows操作系统完全不同于单任务的MS-DOS操作系统,Windows程序设计有着完全不同模式,具有图形用户界面、多任务、多窗口等特点。

VisualC++提供两套完整的Windows程序开发系统:

•直接使用Windows提供的API函数;

•采用面向对象的方式,使用微软基础类库MFC。

2.3.1WindowsAPI简介

WindowsAPI是Windows系统和Windows应用程序间的标准接口,为应用程序提供Windows支持的函数定义、参数定义和消息格式等。

标准Win32API函数可以分为以下几类:

1)系统服务

2)通用控件库

3)图形设备接口

4)网络服务

5)用户接口

6)系统Shell

7)Windows系统信息

2.3.2Windows程序设计的基本概念

1.窗口

-----窗口是Windows程序的基本操作单元,是应用程序与用户之间进行交互的接口,也是系统管理应用程序的基本单位。

编写应用程序其实就是创建一个或多个窗口,程序的执行过程是窗口内部、窗口与窗口之间以及窗口与系统之间进行数据交换与处理的过程。

在winuser.h中定义了代表窗口的WNDCLASS结构类型。

typedefstructtagWNDCLASS{

UINTstyle;//窗口风格

WNDPROClpfnWndProc;//指向窗口处理函数的函数指针

intcbClsExtra;//窗口结构中的预留字节数

intcbWndExtra;//本窗口创建的其它窗口结构中预留字节数

HINSTANCEhInstance;//注册该窗口类的实例句柄

HICONhIcon;//代表该窗口类的图标句柄

HCURSORhCursor;//该窗口客户区鼠标光标句柄

HBRUSHhbrBackGround;//该窗口背景颜色句柄

LPCSTRlpszMenuName;//指向窗口菜单名的字符指针

LPCSTRlpszClassName;//指向窗口名的字符指针

}WNDCLASS,*PWNDCLASS,NEAR*NPWNDCLASS,FAR*LPWNDCLASS;

2.句柄和Windows对象

Windows对象-----窗口、图标、光标、菜单及正在运行的应用程序实例等等。

句柄-----系统用来唯一标识某个Windows对象的一个无符号整数,相当于Windows对象的名字,应用程序只有通过句柄才能使用Windows对象。

应用程序是通过恒定不变的句柄来访问程序中各个对象的。

这是多任务操作系统对多个进程进行管理的基本手段。

Windows常用句柄类型如下所示

句柄类型说明

HANDLE一般类型句柄

HWND窗口类型句柄

HINSTANCE程序实例句柄

HCURSOR光标类型句柄

HFONT字体类型句柄

HPEN画笔类型句柄

HBRUSH画刷类型句柄

HDC设备描述表类型句柄

HICON图标类型句柄

HMENU菜单类型句柄

HBITMAP位图类型句柄

HFILE文件类型句柄

3.事件与消息

事件-----在Windows环境下,应用程序启动后,系统等待用户在图形用户界面内的输入选择,如鼠标按键、键盘按键、窗口被创建、关闭、改变大小、移动等。

只要有事件发生,系统即产生特定的消息,消息描述了事件的类别,包含了相关信息,Windows应用程序利用消息与系统及其它应用程序进行信息交换。

由于windows事件的发生的是随机的,程序的执行先后顺序也无法预测,系统采用消息队列来存放事件发生的消息,然后从消息队列中依次取出消息进行相应的处理。

在winuser.h中,消息结构的定义如下

typedefstructtagMSG{

HWNDhWnd;//指定消息发向的窗口句柄

UINTmessage;//标识消息的消息值

WPARAMwParam;//消息参数

LPARAMlParam;//消息参数

DWORDtime;//消息进入队列的时间

POINTpt;//消息进入队列时鼠标指针的屏幕坐标

}MSG,*PMSG,NEAR*NPMSG,FAR*LPMSG;

下面介绍消息结构中各个成员的意义:

a)message是标识消息的消息值或消息名。

每个消息

都有唯一一个数值标识,常用不同前缀的符号常量以示

区别。

例如,WM_表示窗口消息。

Windows常用的窗口消息和消息值定义,

定义于winuser.h中:

#defineWM_CREATE0X0001//创建窗口产生的消息

#defineWM_DESTROY0X0002//撤销窗口产生的消息

#defineWM_PAINT0X000F//重画窗口产生的消息

#defineWM_CLOSE0X0010//关闭窗口产生的消息

#defineWM_CHAR0X0102//按下非系统键产生的字符消息

#defineWM_USER0X0400//用户自定

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 工学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1