windows编程复习.ppt

上传人:牧羊曲112 文档编号:6523752 上传时间:2023-11-08 格式:PPT 页数:38 大小:201.49KB
返回 下载 相关 举报
windows编程复习.ppt_第1页
第1页 / 共38页
windows编程复习.ppt_第2页
第2页 / 共38页
windows编程复习.ppt_第3页
第3页 / 共38页
windows编程复习.ppt_第4页
第4页 / 共38页
windows编程复习.ppt_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《windows编程复习.ppt》由会员分享,可在线阅读,更多相关《windows编程复习.ppt(38页珍藏版)》请在三一办公上搜索。

1、复习,Windows程序框架,CUI程序控制台模式,但可以调用win32 API函数GUI程序图形控制模式,以消息驱动为基础。,Windows窗口应用程序,Windows应用程序的结构有两个函数所组成,一个是WinMain函数,另一个称为窗口函数,又称窗口消息处理程序。,WinMainWindows CALLBACK FunctionWindows Function,消息驱动机制,Windows程序在初始化和创建应用窗口结束后,只是在执行一个无限循环,坐等用户的输入消息(键盘、鼠标。)一旦用户输入事件发生,Windows就会收到相应的消息并进行分析,然后发送给对应的应用程序。while(Get

2、Message(,消息结构,typedef struct tagMSG HWNDhwnd;/接收此消息的窗口的代号UINTmessage;/消息,消息用一个无符号整数表示WPARAM wParam;/与当前消息有关的消息参数LPARAM lParam;/与当前消息有关的消息参数DWORD time;/消息在应用程序消息队列中出现的时间POINT pt;/传递消息时,鼠标在屏幕上的位置,Windows窗口的建立过程,填写窗口类结构窗口类结构描述窗口形状的结构体,用其定义该类型的结构变量后,可表达一类结构相同的窗口。每类窗口都有一个窗口处理函数,处理该类窗口上的消息。,Windows窗口的建立过程

3、,窗口注册分类填写完窗口类结构后,向windows注册。一种是用户通过定义窗口类结构变量并注册生成一种是系统内建的,直接使用,如编辑框。如果是子窗口,通常在WinMain中注册,然后在窗口函数中创建。,Windows窗口的建立过程,窗口的创建以注册完的窗口类为依据,通过CreateWindow函数创建窗口,该函数返回的是窗口的句柄。创建窗口时确定这个窗口的一些特征,注册窗口时是确定一类窗口的特征。窗口创建只是根据窗口类结构在内存中分配了一块空间,该空间存储了显示一个窗口所需的数据。窗口的显示根据创建的窗口句柄显示窗口,Windows窗口常用消息,WM_CREATEWM_SIZEWM_PAINT

4、,Windows输出,客户区的绘制和更新WM_PAINT消息 该消息通知窗口过程:必须绘制客户区,当发生如下事件时,窗口过程会收到WM_PAINT消息用户移动窗口或者显示窗口时,窗口中先前被隐藏的区域重新变成可见用户改变窗口的大小程序使用ScrollWindows或者ScrollDC函数滚动客户区的一部分程序使用InvalidateRect或者InvalidateRgn(不规则区域)函数时,GDI简介,设备描述表DC所有输出都要通过GDI函数,当执行GDI函数输出时,可得到与设备无关的输出。Windows系统中为每一个设备建立一个数据结构,这个结构记录了设备输出时的详细要求,例如,输出时文字的

5、颜色,线条的宽度,画图的坐标,以及输出时调用的驱动程序等,这个数据结构称为设备描述表,简称DC。,获得DC句柄的方法,处理WM_PAINT消息期间通过BeginPaint函数获得设备句柄,BeginPaint函数会使整个客户区有效。BeginPaint函数必须与EndPaint函数配对使用。在非WM_PAINT消息处理期间利用GetDC(hWnd)取得窗口客户区的设备句柄利用GetWindowDC(hWnd)取得窗口的设备句柄必须与ReleaseDC(hwnd,hdc)成对使用,文字输出,格式化文本wsprintf函数TextOut函数字体用GetTextMetrics来确定字体大小,信息存放

6、于TEXTMETRIC结构体变量中。滚动条,滚动条的使用,编程人员对滚动条的使用应该完成的工作初始化滚动区的范围和地址处理窗口函数的滚动条消息更新滚动区内滚动滑块的地址更改客户区的内容以回应对滚动条的更改利用SetScrollInfo 和GetScrollInfo建立更好的滚动条,滚动条消息,滚动条消息单击滚动区会发送WM_VSCROLL(供上下移动)和WM_HSCROLL(供左右移动)消息 消息中的wParam参数指出了鼠标对滚动条进行的操作,称为“通知码”,在WINUSER.H中以SB开头定义SB_LINEUPSB_THUMBTRACK,SB_THUNMBPOSITION,图形输出,画线函

7、数LineTo 画直线。Polyline和PolylineTo 画一系列相连的直线。PolyPolyline 画多组相连的线。Arc 画椭圆线。PolyBezier和PolyBezierTo 画贝塞尔曲线。图形函数Rectangle画矩形Pie 画部分椭圆,呈扇形Chord画部分椭圆,呈弓形,画笔,画笔通常利用设备描述表中的默认画笔进行画线,也可以把预先设计好的画笔放入设备描述表中,然后用其画线。Windows提供三种画笔:BLACK_PEN,WHITE_PEN,NULL_PEN获取系统画笔:GetStockObject(WHITE_PEN)设置设备描述表画笔:SelectObject(hdc

8、,hPen);,画笔,画笔的建立hPen=CreatePen(iPenStyle,iWidth,crColor)CreatePenIndirect(&logpen)hPen=GetObject(hPen,sizeof(LOGPEN),(LPVOID)&logpen画笔的删除在WM_CREATE消息期间建立,则在WM_DESTROY消息期间删除:DeleteObject在WM_PAINT消息期间建立的画笔,一定要在EndPaint前删除注意:不要删除设备描述表中当前选择用的画笔,画笔,背景模式背景颜色“位布尔运算”与画线模式,画刷,画刷的建立CreateSolidBrush(crColor)Cr

9、eateHatchBrush(iHatchStyle,crColor)iHatchStyle:HS_HORIZONTAL。画刷的选择和删除SelectObject(hdc,hBrush)DeleteObject(hBrush),GDI映射方式,为便于用户使用,windows提供了8种设备输出坐标表达方式,如:像素、毫米、英寸等,也就是GDI函数中使用的逻辑单位。,输入,输入方式Windows捕获输入事件,同驱动程序一起,将事件转换为消息。然后将这些消息存放在系统消息队列中。当windows应用程序处理完前一个用户输入消息时,windows才将系统队列中取出下一个消息,并将其放入应用程序的消息队

10、列中。键盘输入鼠标输入,键盘输入,按键用户按键时发生的键盘事件的表现形式是一个键盘扫描码,windows和键盘驱动程序将扫描码转换为格式化的键盘消息。所有的键都会产生按键消息,可显示字符的键还会同时产生字符消息。四个按键消息对所有的按键,按下并释放时会产生如下4个消息:WM_KEYDOWN、WM_KEYUP、WM_SYSKEYDOWN、WM_SYSKEYUP,按键消息,虚拟键码为了在按键消息中进一步表明按键的信息,在按键消息的wParam参数中,windows通过虚拟键码来唯一标识按键。虚拟键码是windows解决不同厂商键盘的差异,而提出的一种仅与键的名字有关,与键在键盘上的位置无关的标识体

11、系。虚拟键码以VK_为标识字。数字、字母的虚拟键码用ASCII码定义,其余都用识别字定义。,字符消息,概念桉下每一个按键要产生一个按键消息,但是,对虚拟键码是字符的按键来说还要产生一个字符消息。消息循环中的TranslateMessage函数以msg为参数,它的作用是:如果此按键消息的虚拟键码是字符码,它将产生一个字符消息,并把字符消息放入应用程序的消息队列。由产生的字符消息把虚拟键码转换为字符的ASCII码或UNICODE码。,按键消息和字符消息的处理顺序,消息循环中的GetMessage 从消息队列中取到消息,首先得到的是WM_KEYDOWN或WM_SYSKEYDOWN消息。Transla

12、teMessage函数将WM_KEYDOWN和WM_SYSKEYDOWN消息中的虚拟键码进行处理,如果WM_KEYDOWN或WM_SYSKEYDOWN消息是由字母数字按键产生的,则Windows随之就要产生一个字符消息字符消息是夹在按键消息之间传递给窗口函数的。,鼠标消息,显示区域消息9个:WM_LBUTTONDOWN、。非显示区域消息9个:WM_NCLBUTTONDOWN、。命中消息1个:WM_NCHITTEST鼠标移动:WM_MOSEMOVE,子窗口的建立,子窗口注册通常在WinMain中进行子窗口创建通常在父窗口函数中进行子窗口函数同一类子窗口具有相同的窗口函数,通过参数hwnd识别是哪

13、个子窗口的消息,父窗口与子窗口之间消息传递,以窗口句柄为依据,通过SendMessage函数发送相互识别的消息。特殊的子窗口消息:WM_COMMAND,该消息是约定子窗口控制项向父窗口发送的消息,随同该消息一起的参数进一步识别是谁发的什么消息。,子窗口控制项,子窗口控制项定义Windows中通常把用作控制作用的子窗口称为控制项、控件、子窗口控制项。这类子窗口已经由系统注册,其窗口函数由系统确定,用户可直接创建。子窗口控制项与父窗口之间的信息交互是通过窗口函数实现的。子窗口控制项的建立控制项的窗口类是一种系统内定的窗口类,无需用户再注册,可直接创建:Button、Edit等7种。,子窗口控制项的

14、操作,控制项的操作用户的输入信息通过控制项送给父窗口子窗口控制项上接受用户输入后,通常会在自己的窗口函数中向父窗口发送消息,该消息为(WM_AOMMAND,wParam,lParam),其中wParam的高位是通知码,低位是控制项子窗口ID,lParam是接收消息的父窗口的代号。强调:不同的子窗口控制项有不同的通知码定义,子窗口控制项的操作,父窗口送消息给控制项如:SendMessage(hwndButton,BM_SETSTATE,1,0);使按钮状态变为“1”;使控制项变为有效或无效:EnableWindow(hwndchild,FALSE)移动和改变控制项的大小:MoveWindow,对

15、话框的分类,对话框分成两类:模态对话框和非模态对话框。模态对话框和共存式对话框的消息来源与处理方式是不一样的。共存式对话框从消息循环取得消息,而模态对话框从对话框管理器。除了模态和共存式对话框之外,还有一种排它式对话框,它又称为“系统模态对话框”。当它出现时,非但其父窗口失效,就连其他程序的窗口也一并失效。,模式对话框消息循环,模式对话框消息流模式对话框的消息是从Windows发出,经对话框管理器,再到对话框函数。,模式对话框消息循环,模式对话框的使用在窗口函数中利用DialogBox函数启动一个模式对话框。在模式对话框启动期间,父窗口不能接收任何消息。在模式对话框结束后,父窗口才能结束消息。,非模式对话框消息循环,非模式对话框非模式对话框从WinMain中的消息循环取得消息,而模式对话框的消息来源是对话框管理器。while(GetMessage(,对话框函数,概念窗口都要用窗口函数处理窗口消息,对话框也是一种窗口,因此,对话框也要用窗口函数来处理进入对话框的消息。通常只处理WM_INITDIALOG、WM_COMMAND两个消息。跟窗口函数不一样,对话框函数返回的是布尔值,而窗口函数返回的是LRESULT类型的值。,资源描述文件,概念资源描述文件中用模板描述应用程序用到的资源,由于每个资源都要在模板中命名,因此,应用程序就可以通过.RC文件中模板提供的名字来使用资源。,

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号