windows程序复习资料Word格式.docx

上传人:b****0 文档编号:13636090 上传时间:2022-10-12 格式:DOCX 页数:22 大小:33.27KB
下载 相关 举报
windows程序复习资料Word格式.docx_第1页
第1页 / 共22页
windows程序复习资料Word格式.docx_第2页
第2页 / 共22页
windows程序复习资料Word格式.docx_第3页
第3页 / 共22页
windows程序复习资料Word格式.docx_第4页
第4页 / 共22页
windows程序复习资料Word格式.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

windows程序复习资料Word格式.docx

《windows程序复习资料Word格式.docx》由会员分享,可在线阅读,更多相关《windows程序复习资料Word格式.docx(22页珍藏版)》请在冰豆网上搜索。

windows程序复习资料Word格式.docx

编写一个Windows应用程序,首先应创建一个或多个窗口,随后应用程序的运行过程即是窗口内部、窗口与窗口之间、窗口与系统之间进行数据处理和数据交换的过程

●菜单(工具栏):

属于某个窗口,用户通过菜单向应用程序发送命令。

●对话框:

一种特殊的窗口,一般用于与用户交互。

●控件:

对话框中可以包含很多种控件,例如按钮、编辑框、列表框、滚动条等。

从本质上讲,控件也是窗口。

2、开发Windows应用程序的方法

(1)使用WindowsAPI函数:

API函数是Windows系统提供的编程接口,大致分为3类:

●窗口管理函数:

窗口的创建、移动、修改等。

●图形设备接口函数:

实现在窗口的客户区绘制图形和文本。

●系统服务函数:

实现与操作系统有关的多种功能,例如多线程控制等。

(2)使用MFC类库:

类库中存放了大量预先定义的类,以面向对象的思想封装了API函数,程序员可以直接将这些类放到自己的程序里。

(3)使用.NET框架类库

(4)使用其它类库(OWL、JAVASSH框架)

3、Windows应用程序中的数据类型

为了使程序的语义更加丰富,Windows在C语言的基础上自定义了很多种数据类型。

例如:

HWND无符号32位整数

HDC

HINSTANCE

……

DWORDunsignedlong

BOOLbool

BYTEunsignedchar

UINTunsignedint

注意:

Windows自定义数据类型的关键字都是大写

3、Windows应用程序中的数据类型

为了使Windows编程工作更为直观,微软公司的SDK软件包定义了大量的数据类型,如HWND、HINSTANCE、UINT、HDC、HPEN、HBRUSH、HANDLE等。

这些数据类型大部分实际上是32位整数。

(参见P3)

首先需要说明的是,这些数据类型不属于标准C++的范围,它们是微软公司自己使用typedef关键字定义的,目的是使编程更为方便。

另外,微软还定义了大量的符号常量(参见P4),如

WM_KEYDOWN、WM_PAINT、WM_CLOSE(消息号)

SW_SHOWSW_SHOWMINIMIZESW_SHOWMAXMIZE(窗口显示方式)

这些符号常量对应着一个具体的数值,例如:

#defineWM_KEYDOWN0x0100

#defineWM_KEYUP0x0101

#defineWM_MOUSEMOVE0x0100

在程序中当然可以直接使用具体数值,但很不方便,推荐使用符号常量。

数据类型和符号常量的定义带来两个结果:

一方面使初学者难以入门,觉得Windows程序晦涩难懂,一方面使程序更易维护和升级。

4、匈牙利表示法:

一个标识符可由多个英文单词组成,每个英文单词的第一个字母大写。

CreateWindow、ShowWindow、GetMessage

HWNDCreateWindow(

LPCTSTRlpClassName,//pointertoregisteredclassname

LPCTSTRlpWindowName,//pointertowindowname

DWORDdwStyle,//windowstyle

intx,//horizontalpositionofwindow

inty,//verticalpositionofwindow

intnWidth,//windowwidth

intnHeight,//windowheight

HWNDhWndParent,//handletoparentorownerwindow

HMENUhMenu,//handletomenuorchild-windowidentifier

HANDLEhInstance,//handletoapplicationinstance

LPVOIDlpParam//pointertowindow-creationdata

);

5、Windows对象与句柄

Windows对象是内存中构建的程序实体,Windows预定义了很多数据类型和数据结构,包括窗口、按钮、对话框、画笔、画刷、字体等。

我们编程序时要按照预定义的数据结构在内存中构建具体的对象,并使用API函数操纵这些对象,最终完成用户要求的功能。

句柄(handle)是应用程序中能够唯一表示对象的一个整数数值,通过句柄可访问句柄代表的对象,进行适当的操作。

形象地说,句柄是Windows世界里对象的身份证号码。

如HWND。

(P3)

注意:

C++对象与Windows对象是两个不同的概念,Windows对象是C语言概念上的数据集合,可以理解为Windows系统的组成部分。

而C++对象属于应用程序,是根据C++类构造的数据的集合,并拥有自己的行为----成员函数。

在MFC编程中,我们经常将一个C++对象与一个Windows对象关联起来,以面向对象的方式进行编程。

6、事件驱动

与传统的基于DOS的程序不同(我们学C语言时编制的程序都是传统的程序)。

Windows程序的运行是由事件驱动的。

所谓事件,指用户对计算机的一个操作,如敲击键盘、点击鼠标等。

(注:

Windows内核也可以产生事件。

开发基于DOS的程序时,程序开发者处于完全支配的状态,程序执行流程遵从程序员预先规定的路径。

Windows程序的执行顺序取决于事件发生的顺序。

以学生成绩管理系统为例:

如果选择增加一名学生,必须将这个操作进行到底,而如果是Windows程序,可以在操作中间切换到其他操作。

7、消息

所谓消息,是对事件的描述。

Windows系统为所有可能的事件都预定义了消息,当事件发生时,Windows就产生描述该事件的消息,并将其发往适当的应用程序,应用程序收到消息后执行与消息对应的代码段。

例如,当用户敲击键盘,便产生了两条消息:

WM_KEYDOWN和WM_KEYUP,它们分别对应某个键的按下与释放。

如果我们在程序中为这两个消息指定了代码段,该代码段将被执行。

程序的执行顺序由顺序产生的消息驱动,所以Windows程序设计的重点是编写处理消息的代码段。

程序员可根据消息类型编写程序以处理接收的消息,或者发出其他消息以驱动其他程序,但是不必预先确定消息产生的次序。

8、描述消息的C结构

typedefstructtagMSG{//msg

HWNDhwnd;

//Handletothewindowwhosewindowprocedurereceivesthemessage.

UINTmessage;

//Specifiesthemessagenumber

WPARAMwParam;

//Specifiesadditionalinformationaboutthemessage.Theexactmeaningdependsonthevalueofthemessagemember

LPARAMlParam;

//Specifiesadditionalinformationaboutthemessage.Theexactmeaningdependsonthevalueofthemessagemember.

DWORDtime;

//Specifiesthetimeatwhichthemessagewasposted.

POINTpt;

//Specifiesthecursorposition,inscreencoordinates,whenthemessagewasposted

}MSG;

MSG由Windows系统负责生成和填写,每发生一个事件,就会生成一个结构变量,然后放到消息队列中,等待应用程序将其取走。

9、消息循环

无论是用户消息还是系统消息,消息产生后首先交给操作系统,操作系统将消息暂存在消息队列里。

Windows为每个应用程序建立了消息队列。

可以同时为多个应用程序接收和分配消息。

由于程序的运行是事件驱动的,所以程序加载后便开始等待消息的到来,根据到来的消息内容执行各种不同的操作。

应用程序如何等待消息到来?

方法是在程序中编写一个无限循环语句,每一次循环都从自己的消息队列里取出一个消息,经过适当处理后发送给相应的窗口。

while(GetMessage(&

Msg,NULL,0,0))

{

TranslateMessage(&

Msg);

DispatchMessage(&

//分发消息,实际上是调用相应窗口函数

}

消息获取函数的原型:

BOOLGetMessage(

LPMSGlpMsg,//addressofstructurewithmessage

HWNDhWnd,//handleofwindow

UINTwMsgFilterMin,//firstmessage

UINTwMsgFilterMax//lastmessage

注:

如果第二个参数为NULL

GetMessageretrievesmessagesforanywindowthatbelongstothecallingthreadandthreadmessagespostedtothecallingthreadviaPostThreadMessage.

threadmessages表示线程消息,消息分为窗口消息和线程消息

Windwos应用程序具有相对固定的基本结构,由WinMain函数和WndProc函数构成。

●WinMain函数:

是所有Windows程序的入口,类似C语言的main函数,完成一系列的定义和初始化工作,并产生消息循环。

消息循环是整个程序运行的核心。

●WndProc函数:

窗口函数,与应用程序的某个窗口对应,发往窗口的消息由与之对应的窗口函数处理,编程的主要工作是编写WndProc函数。

注:

WinMain函数的名字是固定的,WndProc函数的名字可以自己指定,只要将它与某个窗口联系起来即可。

#include<

windows.h>

L

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

当前位置:首页 > 高中教育 > 初中教育

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

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