您好,欢迎来到乌哈旅游。
搜索
您的当前位置:首页实验二_2010303449_毛翠_2010303451_张羚璐

实验二_2010303449_毛翠_2010303451_张羚璐

来源:乌哈旅游


西北工业大学

《综合创作训练》实验报告

学 院:学 号:姓 名:专 业:实验时间:实验地点:指导教师:

软件与微电子学院 2010303451 2010303449 张羚璐 毛翠 软件工程 2013.2.26 毅字楼

西北工业大学

20013年 2月

一、 实验目的及要求 1.实验目的: 1) 理解Windows内核对象概念; 2) 理解Windows进程及其创建的机制; 3) 理解Windows窗口和句柄概念; 4) 掌握Windows消息机制。 2.实验要求: 1) 学会使用VC++创建win32应用程序; 2) 能够独立编写win32窗口程序; 二、实验设备(环境)及要求 1) PC机最低配置:2G Hz以上CPU;1G以上内存;1G自由硬盘空间; 2) VC++6.0或者更高版本VC++; 三、实验内容与步骤 4.1创建一个win32工程实例 创建过程及部分截图如下: 1)、打开Microsoft Visual C++ 6.0,并创建一个控制台项目exercise2,; 2) 、关键程序代码如下截图 调用API函数MessageBox 3) .编译并运行程序后,出现如下效果:

1. 对话框是否为窗口?此外还有那些界面元素是窗口? 答:1).对话框是窗口。对话框时Windows的一种特殊窗口。不能改变窗口大小,没有最大化、最小化按钮。一般包括标题栏、选项卡(标签)、文本框、列表框、命令按钮、单选按钮、复选按钮等。 2).窗口的元素包括:标题栏、菜单栏、Windows系统菜单、最小化按钮、最大化按钮、恢复按钮、关闭按钮、可改变大小的边框、窗口客户区、垂直滚动条和水平滚动条 4.2创建win32窗口程序 4.2.1 程序框架搭建 图 1. 什么是句柄?程序中创建了哪些句柄,请全部列出。 答:句柄,是整个windows编程的基础。一个句柄是指使用的一个唯一的整数值,即一个四字节长的数值,来标志应用程序中的不同对象和同类对象中的不同的实例,诸如,一个窗口,按钮,图标,滚动条,输出设备,控件或者文件等。应用程序能够通过句柄访问相应的对象的信息,但是句柄不是一个指针,程序不能利用句柄来直接阅读文件中的信息。如果句柄不用在I/O文件中,它是毫无用处的。 句柄是windows用来标志应用程序中建立的或是使用的唯一整数,windows使用了大量的句柄来标志很多对象。 本程序中创建的句柄所示如下:

HINSTANCE hInstance, //本模块的实例句柄 HINSTANCE hPrevInstance //本模块的实例句柄 HWND hwnd //窗口句柄 HDC hdc; //DC句柄 2.一个基本的win32窗口程序创建有哪几个步骤,请以本程序为例说明(要有相应代码截图)。 (1)注册窗口类(RegisterClassEx) (2)创建窗口 (3)在桌面显示窗口 (4)更新窗口客户区 (5)进入无限的消息获取和处理循环。首是获取消息(GetMessage),如果有消息到达,则将消息分配到回调函数处理(DispatchMessage),如果消息是WM_QUIT,则GetMessage函数返回False,整个消息循环结束。消息具体的处理是在MainWndProc函数中进行的。 (1)注册窗口 注册窗口类的API该函数就是RegisterClassEx,最后逇“Ex”是扩展的意思,因为他是Win16的RegisterClass函数的扩展。一个窗口类定义了窗口的一些主要性质,如:光标、图标背景色和负责处理消息的窗口函数等。这些属性定义在WNDCCLASSEX结构中。 指定窗口类大小和风格

指定窗口消息处理函数地址 把本程序的实例句柄(WinMain参数之一)传给成员 设置光标和图标 指定窗口重画客户区时使用的画刷 指定窗口了名称 注册窗口 (2)创建窗口 要创建窗口,用注册的窗口类的类名调用CreateWindowEx函数即可 (3)在桌面显示窗口

(4)刷新窗口客户区 (5)进入无限的消息循环 利用GetMessage函数可以从调用线程的消息队列中取出消息来填充MSG结构 一个WM——QUIT消息会促使GetMessage函数值返回0,从而结束消息循环。 DispatchMessage函数分发一个消息到对应窗口的窗口函数。 4.2.2 程序完善 简述Windows的消息处理机制(画图且配文字说明) 本程序中,MainWindowProc仅选用了WM_PAINT和WM_DESTROP两个消息进行处理 如上图所示,处理WM_PAINT消息时总是以调用BeginPaint函数开始。该函数的

第一个参数是窗口句柄,第二个参数是指向PAINTSTRUCT结构的指针。调用了BeginPaint函数后,程序调用了TextOut函数。此函数用于在hdc指定的设备上显示文字。 WM_DESTROY是窗口函数必须处理的消息。当用户关闭窗口,而且出窗口已经响应了用户的请求正在关闭时,消息处理函数就会收到一个WM_DESTROY消息。当接收到这个消息的时候,说明窗口正在销毁。MainWndProc函数调用PostQuitMesage函数来响应此消息。 PostQuitMesage向程序的消息队列中插入一个WM_QUIT消息。若GetMessage函数从消息队列中取得的消息是WM_QUIT,他将返回0,从而促使WinMain函数离开消息循环,然后执行 此时,msg.wparam值传给PostQuitMesage函数的参数值。Return语句将使WinMain函数返回,程序运行结束。 4.3 计算器 计算器代码运行如下:

四、 实验总结 内核对象:(1)内核对象只是内核分配的一个内存块,并且只能由该内核访问。该内存块是一种数据结构,它的成员负责维护该对象的各种信息。(2)内核对象的数据结构只能被内核访问,因此应用程序无法在内存中找到这些数据结构并直接改变它们的内容。(3)当调用一个用于创建内核对象的函数时,该函数就返回一个用于标识该对象的句柄。为了使操作系统变得更加健壮,这些句柄值是与进程密切相关的。 Windows进程及其创建的机制:在实验4.1中实现 五、 问题分析与讨论 1. 在计算器试验中,虽然实现了在文本编辑框中可以进行手动输入,但手动输入时并不能进行计算。 2.运行程序时,光标的位置在左边显示。

六、教师评语 签名: 日期: 成绩 注:第一个4.1、4.2实验由毛翠完成,第二个实验4.3计算器由张羚璐完成,其余部分由我们共同完成。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- wuhaninfo.cn 版权所有

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务