习题2 - 吉林大学继续教育学院(网络教育学院 培训学院)、在线看_第1页
习题2 - 吉林大学继续教育学院(网络教育学院 培训学院)、在线看_第2页
习题2 - 吉林大学继续教育学院(网络教育学院 培训学院)、在线看_第3页
习题2 - 吉林大学继续教育学院(网络教育学院 培训学院)、在线看_第4页
习题2 - 吉林大学继续教育学院(网络教育学院 培训学院)、在线看_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

吉林大学远程教育课件Windows

A

P

I编

程主讲人:

翟慧杰学

时:48习题2八、子窗体控件:图形界面和消息处理是任何一个基于Windows的应用程序必须认真考虑的事情。在前面的章节中已经介绍了Windows应用程序消息处理的机制,这种机制对于所有对象的消息处理都是一致的,即实行客户(用户操作或请求)到操作系统(捕获消息)到应用程序(接收消息并执行处理代码)的机制。而图形界面则包含丰富的内容,主要是指各种各样的控件,不仅包括前面章节中介绍的主窗口,还包括按钮、编辑框、滚动条等具有窗口风格的子窗口。丰富的图形界面元素为建立界面友好的应用程序提供了可能,而完整的消息处理机制则为应用程序的功能提供了高效集成的保证。子窗口的概念包含两方面的含义:从创建子窗口的过程来看,

Createwindow函数为创建各类窗口提供了统一的函数,并且子窗口的类型唯一由第一个参数确定;从窗口的界面风格来看,这些子窗口都拥有窗口的许多性质。设计含有子窗口的程序都从调用函数CreateWindow开始,它一共有11个参数,指定待创建的子窗口的类型、标题、风格等非常重要的性质。CreateWindow函数的原型定义如下:HWND

CreateWindow(LPCTSTR

lpClassName,//指定子窗口的类名LPCTSTR

lPWindowName,//指定窗口名称DWORD

dwSty1e,

//指定窗口风格int

x,int

y,//指定窗口左上角顶点的水平坐标//指定窗口左上角顶点的垂直坐标int

nWidth,//指定窗口宽度int

nHeight,//指定窗口高度HWND

hWndParent,//父窗口句柄,允许为NULLHMENU

hMenu,//窗口的菜单句柄或者是子窗口自己的标识符HANDLE

hInstance,//应用程序句柄,可以为NULLLPVOID

lpParam //指向lParam数值的指针);当子窗口创建成功后,返回子窗口的句柄,

否则返回NULL。在11个参数中lpClassName、

dwStyle和hMenu是三个最重要的参数。下面分别讲述它们的意义。lpClassName指定子窗口的类名,它们的取值可以是如表所示的值。子窗口类型描述dwStyle指定子窗口的风格。这里只讲述一般窗口的风格,表所列的子窗口的风格在后面内容中分别讲述。一般窗口的风格取值如表所示。参数hMenu指定菜单句柄或者子窗口的标识符。例如,已建立的菜单资源标识符为IDM_MENU,窗口需要加载该菜单,则

hMenu参数可为IDM_NENU子窗口的标识符可以是字符或者数

字,但同一个应用程序中不同子窗口的标识符必须相异,并且前面加上(hMENU)来满足参数类型兼容的要求。应用程序运行后,首先创建主窗口,并发送WM_CREATE消息,由于在该消息的处理代码中含有创建子窗口的代码,于是就创建了子窗口。当子窗口的WS_VISIBLE风格指定后,子窗口就显示出来。同前所讲的消息处理机制类似,子窗口的

消息也主要依靠参数lParam和wParam来完成。应用程序创建子窗口后,在主窗口的消息处理函数中一般使用

SendMessase向子窗口发送消息。当用户对子窗口进行某种操作后,将向父窗口发送WM_COMMAND类型的通知消息。其中,

lParam包含子窗口的句柄;wParam参数的高位字节为通知代码,低位子代表子窗口的标识符。下面将分别讲述各种子窗口的特有风格以及消息循环,并结合实例介绍子窗口的应用。一、Button子窗口Button(按钮)是Windows子窗口的最

常用的元素之一。例如安装程序中选择Next或者Back按钮。1.按钮类型依据操作的类型可以把按钮分为按键按钮、单选按钮、复选按钮,另外还有存放单选按钮和复选按钮的按钮组合框(GroupBox)。按键按钮一般执行某项功能,例如弹出新的窗口。在创建子窗口的函数中,如果需要创建按键按钮,则dwStyle参数指定为

BS_PUSHBUTTON。当某些选择相互排斥时,需要用到单选按钮,例如字体或者颜色。单选按钮的左端为一个圆圈,选中单选按钮,则显示实心,相反为空心圆。在同一个按钮组合框里的众多单选按钮中,用户只能选择一个。如果需要单选按钮,则dwStyle参数必须指定为BS_RADIOBUTTON。当某些选择可以相互并存时,需要用到复选按钮。复选按钮的风格与单选按钮类似,左端为圆圈或者小空心正方形。在同一个按钮组合框里的复选按钮可以同时被选中几个。如果需要创建,则dwStyle参数设置为BS_CHECKBOX。在复选按钮中还有一类特殊的按钮,即三态按钮。顾名思义,三态按钮允许有三种状态:选中(Selected)、本选中(

Unselected)、显灰(Grayed)。三态按钮在需要把单选按钮和复选按钮放在同一个组合框里时才有应用的价值,若要创建三态

按钮,则把dwStyle参数设置为BS_3STATE。按钮的风格取值如表所示。按钮有自己特殊的消息类型。当用户选择了按钮时,它将向父窗口发送WM_COMMAND消息,这些通知消息包含在wParam的高位字节中。按钮的通知代码如表所示。二、编辑框编辑框的主要作用是让用户输入文本,例如要求用户在编辑框中输入密码的文本。1.基础知识编辑框里的文本可以是单行,也可以是多行,后者的风格取值为

ES_MULTILINE。一般对于多行文本编辑框还需设置

ES_AUTOVSCROLL,这样用户可以输入多行文本,并自动滚动。在默认的状况下,编辑框是没有边框的,如果需要边框,设置WS_BORDER即可。另外还可规定编辑框里的文本是否只读,风格属性设置为ES_READONLY。当需要建立密码编辑框时,只要设置ES_PASSWORD风格属性即可。编辑框的全部风格如表所示。Windows系统把编辑框的操作以

WM_COMMAND的形式发送给父窗口消息的有关信息仍然包含在参数wParam和IParam中。wParam的低位字节包含编辑框的标识符,高位字节包含通知消息的类型,lParam包含编辑框的句柄。编辑框的通知消息如表所示。编辑框的通知消息类型在默认的情况下,当用户用鼠标右击后自动弹出菜单,形式如图所示。编辑框的弹出式菜列表框:列表框允许用户从多个对象中选择一项或多项,这些对象可以是文本、文件和位图等。当列表框的项不能全部显示出来时,可以用滚动条来滚动显示。1基础知识默认的列表框只允许用户单选,需要多选时,须把列表框的风格定义为LBS_

MULTIPLESEL和LBS_EXTENDEDSEL。列表框提供的其他风格取值可以控制列表框的外观和操作。例如是否按照列表框各项的名称排序,是否多行排列,是否有滚动条等。当用户对列表框进行了操作时,就会向主窗口发送一条消息。列表框的消息类型比较简单,主要是单击、双击和选择等。同

编辑框一样,列表框也会遇到内存不够的问题,所以消息类型

中含有这一项。消息总是通过WM_COMMAND的形式发送给主窗口的。其中,wParam的低位字节表示列表框的标识符,高位字节表示消息的类型,lParam表示主窗口句柄。列表框的消息类型如表所示。列表框也是通过调用函数CreateWindow来创建的,第一参数设置为ListBox即可。风格取值可以取表所示的值。在主窗口里的消息一般是在WM_

COMMAND里处理表中以LBN开头的消息。下面以一个具体的例子介绍列表框的常见操作。组合框:组合框兼具编辑框和列表框的功能,既能编辑选项,又能显示多个项。在Windows程序设计中可以见到大量组合框的应用实例,例如文件对话框里的目录搜索组合框。基础知识:组合框的风格主要有三种,分别是简单组合框(Simple ComboBox)、下拉式组合框(DropDown

ComboBox)和下拉式列表框(

DropDown

ListBox)。下拉式列表框和下拉式组合框平时只显示编辑区域,只在打开时才显示组合框的各项,这样有利于节省屏幕空间。这三种组合框的基本功能如表所示。滚动条:滚动条既可以是许多子窗口(如编辑框、列表框)的附件,又可以独立成为子窗口。滚动条的主要用途在于对某个在一定范围内变化的属性值或者变量进行动态设置。例如用滚动条可以方便地控制颜色的深浅,设置线条的宽度;滚动条也用来显示某个任务的进度,这样滚动条又被称为进度条。滚动条有一些重要的函数和方法,下面分别介绍。用来设置滚动条类型和活动状态的函数是EnableScrollBar,其原型定义如下:BOOL

EnableScrollBar(HWND

hwnd//指向父窗口或者滚动条的句柄UINT

wSBflags,//标志滚动条的类型UINT

wArrows//滚动条的滚动按钮设置);wSBflag用来设置滚动条的类型,可以取表所示的任意值。显示或隐藏滚动条的函数是ShowScrollBar,其原型定义如下:BOOL

ShowScrollBar(HWND

hwnd,//指向父窗日的句柄int

wBar,//滚动条活动状态的标志BOOL

bShow//滚动条是否可见,当为TRUE时可见,相反则隐藏);九、对话框:在Miscrosoft

Windows中,对话框就是应用程序创建的用于获取用户输入的一个临时窗口。应用程序一般用对话框来提示用户输入命令的附加信息。对话框通常都含有一个或多个用户可以输入文本、选择可选择项或者指导命令操作的控件。Windows提供了许多函数、消息和预定义的控件,用于帮助创建和管理对话框。这样,开发应用程序用户接口就变得更容易了。Windows还提供了许多支持诸如File

Open和File

Print等命令的预定义对话框(也称为“公共”对话框)。不管执行命令

的是什么类型的应用程序,使用这些命令的应用程序都可以用

公共对话框来提示同样的用户输入。当用户在另一个窗口中工

作时,许多应用程序也用对话框显示信息选项。例如,字处理

应用程序经常在文本搜索命令中使用一个对话框。应用程序在

搜索文本期间,该对话框将保存在屏幕上。用户可以返回到该

对话框中,并再次搜索同样的字符串、或者改变该对话框中的

输入、搜索一个新的字符串。以这种方式使用对话框的应用程

序,在该应用程序运行期间或在用户明确地关闭对话框之前,

一般都将创建并保持显示一个对话框。为了支持应用程序以不同的方法使用对话框,Windows提供了两种类型的对话框:模式对话框和无模式对话框。模式对话框在允许应用程序继续运行之前,要求用户必须提供信息或取消该对话框,应用程序把模式对话框与不输入附加信息就不能继续执行的命令一起使用;无模式对话框允许用户提供信息并返回前一任务,但不关闭该对话框。由于模式对话框通过调用单个函数就可以创建、执行它们的任务,所以比无模式对话框更容易管理。

不管是创建一个模式对话框还是无模式对话框,应用程序都必须提供一个对话框模板来描述对话框的样式和内容,并提供一个对话框过程来完成任务。对话框模板就是对话框及其所含控件的一个二进制描述。开发人员可以创建这个模板,把它做为从可执行文件中装入的一个资源,对话框过程就是一个应用程序自定义的回调函数。尽管对话框过程与窗口过程是相似的,但它们各自所负的责任是不同的。应用程序一般可以用DialogBox或CreateDialog函数创建对话框。DialogBox用于创建模式对话框;CreateDialog函数用于创建一个无模式对话框。这两个函数将从应用程序的可执行文件中装入对话框模板,并创建一个与该模板对应的规格相符的弹出式窗日。还有其他一些函数可以用内存中的模板创建对话框,并在对话框创建完后把附加信息传递给对话框过程。对话框通常都属于一个预定义的专有窗口类。不管是模式对话框还是无模式对话框,Windows都使用这个窗口类及与其对应的窗口过程。调用这个过程时,它将先创建对话框的窗口,以及该对话框中所有控件的窗口,然后再给对话框过程发送消息。在对话框可见期间,预定义的窗口过程将管理所有消息,处理一些消息,并把其他消息传给对话框父窗日的消息处理函数。应用程序不能直接访问预定义窗口类或窗口过程,但是它们可以用对话框模板和对话框过程修改对话框的样式和特性。无模式对话框:无模式对话框应该是一个弹出式窗口,其中包含有系统菜单、标题栏和边界,也就是说,对话框模板应该指定WS_

POPUP、WS_

CAPTION、WS_

BORDER和WS_

SYSMENU等风格。Windows不会自动显示该对话框,只有在指定该模板的风格为WS_VISIBLE时才会自动显示。应用程序用CreateDialog或CreateDialogIndirect函数创建无模话框。其中函数CreateDialog的原型定义如下:无模式对话框既不能使父窗口无效,也不给它发送消息。在创建对话框时,Windows将使其成为活动窗口,但用户或应用程序任何时候都可以改变活动窗口。如果该对话框变成了非活动的,应用程序将负责为对话框检取和分发输入消息。大多数应用程序都是使用这消息循环来完成这一项工作的。但是,为了允许用户用键盘移动到控件上并选取控件,应用程序必须调用IsDialogMessage函数,该函数的原型定义如下:无模式对话框不像模式对话框那样给应用程序返回一个值,但是对话框过程可以用SendMessage函数给父窗口发送消息。应用程序在结束前必须销毁所有的无模式对话框。这可以通过调用Destroywindow函数销毁一个无模式对话框。在大多数情况下,单击Cancel按钮时,程序调用DestroyWindow函数,如果用户不以这种方式关闭对话框,则应用程序必须在其他地方调用

DestroyWindow函数。函数DestroyWindow将使对话框的窗口句柄变为无效,从而使得对使用这个句柄的函数的任何后续调用都返回错误值。为了防止出现错误,对话框过程应该通知其父窗口,说明该对话框已经被销毁。许多应用程序都需要维护一个含有该对话框句柄的全局变量,当对话框过程销毁对话框时,它将把该全局变量设置成NULL,说明该对话框已经不再存在了。无模式对话框的对话框过程不能调用EndDialog函数来销毁它。三、模式对话框模式对话框也是一个弹出式窗口,应用程序通过DialogBox函数和DialogBoxIndirect函数可以创建模式对话框。DialogBox函的原型定义如下:在创建模式对话框时,Windows将使其成为活动窗口。该对话框将一直保持为活动状态,直到对话框过程调用了EndDialog函数,或Windows激活了另一个应用程序中的一个窗口。在模式对话框销毁之前,用户或应用程序都不能使其父窗口成为活动窗口。当应用程序创建模式对话框时,如果其父窗口还不是无效的,则Windows将自动使该窗口和属于该窗口的所有子窗口都变成无效。在该对话框销毁之前,其父窗口将一直保持无效。尽管对话框过程任何时候都有能力使父窗口变成有效的,但是使父窗口有效就达不到使用模式对话框的目的,因此不建议这样做。 当Windows创建模式对话框时,它将给当前捕获鼠标输入的窗口发送WM

CANCELMODE消息。接收这条消息的应用程序应该释放鼠标,以便用户可以在模式对话框中使用鼠标。由于Windows将使父窗口无效,所以,在接收到这条消息时,如果父窗口不能释放鼠标,则所有的鼠标输入都将丢失。为了处理模式对话框的消息,Windows将启动自己的消息循环,临时接管对整个应用程序消息队列的控制。如果Windows检取到一条明显不是用于对话框的消息,则把消息分发给正确的窗口。如果它检取到一条WM_QUIT消息,则它将该消息投递回应用程序的消息队列,使得应用程序的主消息循环最终能够检取到该消息。只要应用程序的消息队列为空,Windows就把WM_CANCELDLE消息发送给父窗口,应用程序可以利用这条消息,在对话框仍然占据屏幕期间,完成一项后台任务。如果应用程序以这种方式使用消息,则它必须频繁交出控制权,使模式对话框可以接收用户输入。应用程序可以在创建该对话框时通过指定DS_NOIDLEMSG风格,禁止模式对话框发送WM_ENTEAIDLE。公共对话框使Windows应用程序的设计变得更为简单。公共对话框是应用程序通过调用某个函数而不是通过提供对话框过程和包含对话框模板的资源文件来创建对话框。在动态链接库COMMDLG.DLL中定义了各种公共对话框的过程和模板。每个默认对话框过程处理公共对话框和它控制的消息,默认对话框模板定义公共对话框的外观和它的控制。

由于公共对话框提供执行某些操作的一组标准控件,因此它们除了简化Windows应用程序的开发外,也对用户有帮助。当Windows开发者在它们的应用程序中使用公共对话框后,用户会发现一旦在一个应用程序中掌握了公共对话框,就能在其他的应用程序中很轻易地执行同样的操作。在Windows中定义的各种公共对话框如表所示。Open和Save

As对话框: Open对话框和Save

AS对话框的外形类似,每个对话框都包含能使用户指定文件或一级文件位置和名字的控件。在Open对话框中,用户选择要打开的文件。在Save

As对话框中,用户选取要保存的文件。Open对话框如图所示。Save

As对话框如图所示。Font对话框:Font对话框允许用户选择字体、字体风格、点阵大小以及字体效果的控件。Font对话框如图所示。Find和Replace对话框:

Find和Replace对话框外形相似。Find对话框用于给

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论