《Windows程序设计S》实验指导书.docx
《《Windows程序设计S》实验指导书.docx》由会员分享,可在线阅读,更多相关《《Windows程序设计S》实验指导书.docx(12页珍藏版)》请在冰豆网上搜索。
《Windows程序设计S》实验指导书
《Windows程序设计S》实验指导书
目录
实验一、窗口与消息实验
实验二、Windows绘图实验
实验三、键盘、鼠标及计时器实验
实验四、子窗口、控件实验
实验五、对话框实验
实验六、多线程实验
实验七、动态链接库实验
实验八、网络编程实验
实验一、窗口与消息实验
一、实验目的:
1、使用WindowsAPI开发程序,了解WindowsAPI函数;
2、了解Windows的消息(事件)驱动机制,了解Windows的发展史,WindowsAPI的发展过程;
二、实验原理:
设计建立的每一个窗口都有相关的窗口消息处理程序。
这个窗口消息处理程序是一个函数,既可以在程序中,也可以在动态链接库中。
Windows通过呼叫窗口消息处理程序来给窗口发送消息。
窗口消息处理程序根据此消息进行处理,然后将控制传回给Windows。
了解一个Windows窗口有哪些标准的组成部分,使用VC6.0编制Windows应用程序的方法,利用窗口与消息的编程应用理解Windows程序设计。
三、实验要求:
掌握一个Windows窗口有哪些标准的组成部分,使用VC6.0编制Windows应用程序的方法,利用窗口与消息的编程应用理解Windows程序设计。
四、实验内容:
使用WindowsAPI来开发程序,使用Windows函数建立窗口,在窗口中显示区域的中央显示“Hello,Windows2000!
”或者其他字样。
完成:
1、注册一个窗口类别。
2、使用窗口消息处理程序来处理窗口消息。
3、在窗口显示区域的中央显示“Hello,Windows2000!
”或者其他字样。
4、编译、链接并运行程序,直至取得正确结果。
五、实验报告:
在实验报告中详细描述你的程序的运行机制和运行结果。
六、思考题:
1、“Windows给程序发送消息”这句话的含义有哪些?
2、一个Windows窗口有哪些标准的组成部分?
3、应用程序如何完成注册窗口类别,建立窗口,从消息队列中取出消息?
4、Windows是如何处理消息的?
实验二、Windows绘图实验
一、实验目的:
1、使用API函数编程序绘制图形;
2、了解设备接口的各基本概念;
二、实验原理:
图形设备接口(GDI:
GraphicsDeviceInterface)是Windows的子系统,它负责在显示器和打印机上显示图形。
在屏幕或打印机上显示的图形可以被分为几类,他们是:
直线和曲线、填入区域、位图和文字。
三、实验要求:
掌握图形设备接口的概念;GDI的工作原理;GDI的常用函数。
完成:
1、分析题目。
2、画流程图。
3、编写代码。
4、调试运行,取得正确结果。
四、实验内容:
选择下面题目之一进行程序设计:
1、编制一个含若干个点的程序(可使用点结构),绘制出两个周期的正弦曲线。
2、使用API函数编程序:
在一个窗体中画一个矩形、一个椭圆、一个圆角矩形。
五、实验报告:
提交设计原理、过程及结果。
六、思考题:
1、什么是与设备无关的图形?
2、设备描述表的属性有哪些?
怎样存取其属性值?
3、图形的像素、色彩有哪些含义?
4、WindowsGDI常用的映像模式有哪些?
5、设备坐标和逻辑坐标是如何定义的?
实验三、键盘、鼠标及计时器实验
一、实验目的:
了解键盘、鼠标的一些基本概念和编程原则,学会使用键盘、鼠标作为基本输入设备开发应用程序的方法。
了解鼠标作为输入设备的基础知识,掌握鼠标的基本操作,能使用API函数为Windows应用程序设计出既能使用键盘又能使用鼠标的良好的用户界面。
二、实验原理:
键盘是Windows程序中使用者输入的主要来源,但是程序不必对它所接收的所有消息都作出响应。
Windows本身也能处理许多键盘功能。
Windows用多种不同的消息来传递不同的键盘事件。
当想在一个图形输出设备(诸如屏幕或者打印机)上绘图时,首先必须获得一个设备内容的句柄。
将句柄传回给程序时,Windows就给了使用设备的权限。
然后在GDI函数中将这个句柄作为一个参数,向Windows标识您想在其上进行绘图的设备。
设备内容中包含许多确定GDI函数如何在设备上工作的当前属性,这些属性允许传递给GDI函数的参数只包含起始坐标或者尺寸信息。
例如:
调用编制的输出文字的函数时,只需要在函数中给出设备内容句柄、起始坐标、文字和文字的长度。
不必指定字体、文字颜色、文字后面的背景色彩以及字符间距,因为这些属性都是设备内容的一部分。
当想改变这些属性之一时,调用一个可以改变设备内容中属性的函数,以后针对该设备内容的调用使用的即是改变后的属性
三、实验要求:
掌握Windows和应用程序如何接受键盘输入;按键消息有哪些;字符消息有什么。
完成:
1、分析题目。
2、画流程图。
3、在VC里建立“Win32Application”的新工程
4、为工程添加源文件
5、完成编译和调试,取得正确的运行结果。
四、实验内容:
选择下面题目之一进行程序设计:
1、使用API函数编制一个应用程序,创建一个简单的文本编辑器。
在文本编辑窗口中,可以输入字符,用光标移动键(也可以称为插入符号移动键)来移动光标(I型标),按下Escape键清除窗口的内容等。
2、使用API函数编制一个程序:
将窗体平均分成25个矩形区域(5×5),监控鼠标在哪个区域中按下了键,即在该区域中绘制两条直线(对角线)。
五、实验报告:
提交设计原理、过程及结果。
六、思考题:
Windows和应用程序如何接受键盘输入?
按键消息有哪些?
字符消息有什么?
实验四、子窗口、控件实验
一、实验目的:
掌握使用API函数进行父窗口和子窗口的创建和使用。
掌握窗口句柄的概念和用法;了解子窗口和父窗口之间如何发送消息。
定制控件及窗口子类化应用程序。
二、实验原理:
建立一个“子窗口控件”。
当子窗口的状态改变时,子窗口处理鼠标和键盘消息并通知父窗口。
使用这种方法,子窗口就变成了其父窗口的输入设备。
我们可以建立自己的子窗口控件,但是也可以利用一些预先定义的窗口类别(和窗口消息处理程序)来建立标准的子窗口控件,这些控件采用的形式有:
按钮、复选框、编辑框、列表框、下拉式列表框、滚动条、静态文本框等。
子窗口控件在对话框中最常用。
那里的子窗口控件的位置和尺寸,是在程序的资源描述叙述中的对话框模板里定义的。
在普通窗口显示区域里建立子窗口控件,可以调用CreateWindow来建立一个子窗口。
三、实验要求:
掌握窗口句柄的概念和用法;了解WndClass的WNDCLASS类型的数据结构中每一项数值的含义。
四、实验内容:
编制程序:
在窗体中显示按钮窗口类别,建立10个子窗口按钮控件,每个控件对应一个标准的子窗体控件样式,并对应WM_COMMAND消息的wParam参数和lParam参数显示在显示区域的右下边。
完成:
1、分析题目。
2、画流程图。
3、编写代码。
4、调试运行,取得正确结果。
五、实验报告:
提交设计原理、过程及结果。
六、思考题:
1、子窗口怎样与父窗口之间发送、接收消息?
2、在处理来自子窗口的WM_COMMAND消息时,父窗口如何确定是哪个子窗口发送的消息?
实验五、对话框实验
一、实验目的:
掌握对话框资源的编辑;学习使用API函数进行对话框的编程,完成与用户的交互。
了解模式对话框和无模式对话框的区别。
二、实验原理:
对话框的一般形式是包含多种子窗口控件的弹出式窗口,表示应用程序希望从用户那里得到输入或是和用户进行交互活动。
一个对话框允许从一系列控件中选择,每一个选项对应着一个控件,这些控件的大小和位置可以从资源编辑器中指定。
与前几个实验编制的程序的不同之处,包含对话框的应用程序包含了“对话框过程”。
有两种基本类型的对话框:
模式对话框和无模式对话框。
对话框就是窗口。
通常,Windows使用它自己内部的窗口消息处理程序处理对话框窗口的消息,然后,Windows将这些消息传送给建立对话框的程序内的对话框程序。
三、实验要求:
掌握模式对话框和无模式对话框有什么区别,提交正确的程序运行结果。
四、实验内容:
编制一个十六进制计算器:
(1)对整数做加、减、乘、除和取余数运算。
(2)做AND,OR等运算,其中当被0除将结果设定为FFFFFFFF;按钮“Back”用来擦除误输入的字符,按钮“Equals”是“=”运算符号。
完成:
1、创建对话框。
2、编辑各个过程。
3、可以透过单击“Equals”按钮或者按下等号键或Enter键便可以显示运算结果。
4、为了更正输入,使用“Back”按钮、Backspace或者左箭头键。
5、按下Esc键即可清除目前的输入
6、调试程序,直至取得正确的运行结果
五、实验报告:
提交设计原理、过程及结果。
六、思考题:
1、程序显示一个模式对话框时,是否可在对话框与同一个程序中的另一个窗口之间进行切换?
2、在你已经建立好的这个应用程序中,查看资源描述文件.rc,总结归纳你所设计的对话框模板的内容及含义。
实验六、多线程实验
一、实验目的:
掌握线程的概念,学习使用线程编制Windows应用程序。
掌握线程函数。
掌握创建一个线程、终止线程、设定线程的相对优先级、挂起及恢复线程的概念与方法。
二、实验原理:
多任务是一个操作系统可以同时执行多个程序的能力。
多线程是在一个程序内部实现多任务的能力。
程序可以把它自己分隔为各自独立的【线程】,这些线程也同时在执行着。
就程序代码来说,一个线程简单地被表示为可能调用程序中其它函数的函数。
程序从其主线程开始执行,这个主执行序列是在传统的C程序中叫做main的函数,而在Windows中是WinMain。
一旦执行起来,程序可以通过在系统调用CreateThread中指定初始线程函数的名称来建立新的线程的执行。
三、实验要求:
掌握线程函数:
掌握创建一个线程、终止线程、设定线程的相对优先级、挂起及恢复线程的概念与方法。
四、实验内容:
建立一个包含四个窗口的多任务仿真程序。
第一个窗口必须显示一系列的递增数,第二个必须显示一系列的递增质数,而第三个必须显示Fibonacci数列(Fibonacci数列以数字0和1开始,后头每一个数都是其前两个数的和——即0、1、1、2、3、5、8等等)。
这三个窗口应该在数字达到窗口底部时或者进行滚动,或者自行清除窗口内容。
第四个窗口必须显示任意大小的图形,而程序必须在按下一个Escape键时终止。
完成:
1、分析题目。
2、画流程图。
3、编写代码。
4、调试运行,取得正确结果。
五、实验报告:
提交设计原理、过程及结果。
六、思考题:
简述Windows的多线程处理机制。
实验七、动态链接库实验
一、实验目的:
学习动态链接库机制的API编程,掌握动态链接库的基本知识,学会编制动态链接库,学会在Windows应用程序中调用自己编制好的动态链接库。
二、实验原理:
Windows应用程序是一个可执行文件,它通常建立一个或几个窗口,并使用消息循环接收用户的输入。
通常,动态链接库并不能直接执行,也不接收消息。
它们是一些独立的文件,其中包含能被程序或其它DLL调用(引用)来完成一定功能的函数。
只有在其它模块调用动态链接库中的函数时,它才发挥作用。
所谓“动态链接库”,是指Windows把一个模块中的函数调用连接到动态链接库模块中的实际函数上的程序。
三、实验要求:
掌握动态链接库的基本知识、基本概念,动态连接于静态连接的区别,动态链接库模块的标准扩展名是什么?
四、实验内容:
1、建立一个名为DISPLAYLIB.DLL的动态链接库。
这里的DISPLAYLIB只含有两个函数。
其一生成有两条对角线的框,其二生成有一条对角线的矩形。
2、编制一应用程序DISPLAYTEST,它完成对DISPLAYLIB.DLL中的函数的调用,在窗体上画出4个双对角线的矩形和5个单对角线的矩形。
完成:
1、分析题目。
2、画流程图。
3、编写代码,生成动态链接库。
4、编写代码,完成动态链接库的调用
5、调试运行,取得正确结果。
五、实验报告:
提交设计原理、过程及结果。
六、思考题:
Windows应用程序是一个可执行文件,它通常建立一个或几个窗口,并使用消息循环接收使用者输入。
通常,动态链接库能否直接执行?
能否接收消息?
他们怎样发挥作用?
实验八、网络编程实验
一、实验目的:
掌握网络编程需要了解的基本概念和方法;掌握网络编程常用的类及其成员函数;会编制提供Web浏览功能的应用程序。
二、实验原理:
Internet已经步入千家万户。
我们对基于网络的应用程序的要求越来越高,并且希望开发出适合自己使用的网络应用程序。
网络应用已成为社会发展的潮流与趋势。
Windows增加了API函数来支持Internet编程,在MFC中对这些API函数进行了不同程度的封装,以简化Internet编程过程。
使用MFC开发Internet包括以下几个方面:
使用ColeControl、CdocObiectServer等类编写可在网页中使用的ActiveX控件;使用WinInet等类建立Web客户机应用程序。
使用ChttpServer、ChttpFilter等类来扩展Web服务器和过滤器;使用相关WinSock的来来建立Web服务器和客户机应用程序。
三、实验要求:
掌握基于网络的应用程序的开发与应用。
完成:
1分析题目。
2画流程图。
3编写代码。
4调试运行,取得正确结果。
四、实验内容:
选择下面题目之一进行程序设计:
1开发一个Web浏览器。
2创建基于http协议的应用程序,程序建立和http服务器之间的连接并从服务器上得到相应的Web站点主页的HTML语言的数据信息。
五、实验报告:
提交设计原理、过程及结果。
六、思考题:
什么是WinSock类?
用于WinSock编程的类有哪些?
WinInt类的用法?