windows程序设计习题.docx

上传人:h**** 文档编号:182787 上传时间:2018-07-14 格式:DOCX 页数:29 大小:282.53KB
下载 相关 举报
windows程序设计习题.docx_第1页
第1页 / 共29页
windows程序设计习题.docx_第2页
第2页 / 共29页
windows程序设计习题.docx_第3页
第3页 / 共29页
windows程序设计习题.docx_第4页
第4页 / 共29页
windows程序设计习题.docx_第5页
第5页 / 共29页
点击查看更多>>
资源描述

1、1: C语言的入口函数是哪个?分别写出各个参数的作用。 int main(int argc, char* argv) argc是命令行总的参数个数; argv是 argc 个参数,其中第 0 个参数是程序的全名,以后的参数是命令行后面跟的用户输入的参数。 2: MFC 使用向导生成对话框应用程序,会自动生成三个类,如: CAboutDlg、CDemoApp、 CDemoDlg,请分别说明三个类的作用?以及三个类之间的关系。 创建典型的对话框程序(示例)后,会出现如下几个类: CAboutDlg:关于版本对话框控制类; CDemoApp:应用程序管理类; CDemoDlg:对话框管理类。 其中,

2、后两个类是根据项目名称而定的,规则是: C+项目名称 +App(或 Dlg) 3: PostMessage 与 SendMessage 的区别。 SendMessage 函数功能是,将指 定的消息发送到一个或多个窗口。此函数为指定的窗口调用过程处理程序,直到过程处理函数处理完消息再返回。 PostMessage 函数功能是,将一个消息放入(寄送)到与指定窗口创建的线程相联系消息队列里,不等待线程处理消息就返回。 4: Windows 系统提供了一个定时响应的消息 WM_TIMER,该消息的名称是什么? SetTimer()函数与 KillTimer()函数的作用是? WM_TIMER 定时器消

3、息 ;SetTimer() 设置定时器 ;KillTimer() 销毁定时器 5: 什么是指针?什么是句柄?描 述句柄与指针的区别 ? 指针:内存单元的编号也叫做地址。既然根据内存单元的编号或地址就可以找到所需的内存单元,所以通常也把这个地址称为指针。 句柄,是整个 windows 编程的基础,一个句柄是指使用的一个唯一的整数值,是指一个四字节长的数值,用于标志应用程序中不同的对象实例 。 区别: 句柄不是一个指针,程序不能利用句柄来直接阅读文件中的信息。 6: 什么是消息?什么是事件驱动程序? 消息 : 在 Windows 中发生的一切都可以用消息来表示,消息用于告诉操作系统发生了什么,所有

4、的 Windows 应用程序都是消息驱动的。 事件驱动:简单地说就是你点什么按钮 (即产生什么事件 ),电脑执行什么操作(即调用什么函数 ).当然事件不仅限于用户的操作 . 事件驱动的核心自然是事件。 7: 代码规范是程序编写的重要准则,请用你的话说明一下什么是代码规范。 代码规范 :是一种编程时的命名规范 。基本原则是:变量名 =属性 +类型 +对象描述,其中每一对象的名称都要求有明确含义,可以取对象名字全称或名字的一部分。命名要基于容易记忆、容易理解的原则。 需要大家自己理解。 8: 使用类向导生成的对话框工程中,自动生成三个类,请写出这三个类的名称,并说明其含义。 CAbout:关于对话

5、框管理类; C+工程名 +App:应用程序管理类; C+工程名 +Dlg:对话框管理类; 9: 写出鼠标左键按下与右键按下时截获的消息。 鼠标左键按下 1. WM_LBUTTONDOWN 左键按下消息 2. WM_LBUTTONUP 左键 抬起消息 鼠标右键按下 1. WM_RBUTTONDOWN 右键按下消息 2. WM_RBUTTONUP 右键抬起消息 10: 在图形与文字绘制时,需要捕获的消息是哪个?需要在此消息的什么位置(哪两个函数之间)加入绘制图形的代码? 绘制文字时,需要捕获 WM_PAINT 消息,需要在此消息下的 BeginPaint()函数与EndPaint()消息之间加入图

6、形、文字的绘制。 11: 在过程处理函数中,如何获得鼠标按下时光标的位置坐标,写出两种方法。 方法一: HIWORD( lParam)为鼠标的 Y 值 LOWORD( lParam)为鼠标的 X 值 方法二: GetCursorPos 函数,作用是获取光标的位置,以屏幕坐标表示。 12: 填写消息机制原理图中画横线部分的内容。 ( 1) ( 1 分) ( 2) ( 1 分) ( 3) ( 1 分) ( 4) ( 2 分) ( 1) CreateWindow() ( 2) UpdateWindow() ( 3) ShowWindow() ( 4) GetMessage() 13: 已知下面的相关

7、函数描述,完成绘制红色矩形框的程序。 创建画刷的函数是 HBRUSH CreateSolidBrush(COLOREF corlor); 选择绘图对象的函数是 HGDIOBJ SelectObject(HDC hdc,HGDIOBJ hObj); 画矩形的函数是 Rectangle(HDC hdc,int left,int top,int right,int bottom); 完成下面的代码片段。 HBRUSH _(空 1) _ =_(空 2) _ (RGB(255,0,0); HBRUSH hOldBrush = (_空 3_) _(空 4) _ (hdc,hBrush); Rectangl

8、e(hdc,50,50,400,400); _(空 5) _(hdc,hOldBrush); DeleteObject(hBrush); 空 1: hBrush 空 2: CreateSolidBrush 空 3: HBRUSH 空 4: SelectObject 空 5: SelectObject 14: 对话框有两种模式,分别是什么?它们之间的区别是什么? 对 话框窗口分为两种:模式对话框窗口与无模式对话框窗口。模式对话框窗口也称为模态对话框窗口,是指用户在 Win32 应用程序的对话框中,想要对对话框以外 的应用程序进行操作时,必须先对该对话框进行响应,如单击【确定】或【取消】按钮等操作

9、,将该对话框关闭。相对应的另一个对话框是无模式对话框,即可以在 不关闭当前的对话框窗口的情况下操作其他窗口。 15: 已知鼠标移动的消息是 WM_MOUSEMOVE,绘图消息的是 WM_PAINT,如果想实现鼠标移动的时候,在窗口中显示鼠标的光标位置,需要完成的代码如下,请填写空白区域。 注意:代码中省略号部分不要求填写,是省略的代码。( 5分) /全局变量 char szBuf512 /窗口过程处理函数; LRESULT CALLBACK WinProc(_空 1_, UINT message, WPARAM wParam, LPARAM _空 2_) int x,int y; HDC hd

10、c; switch(message) case WM_PAINT: hdc = break; case WM_MOUSEMOVE: x =LOWORD(_空 3_); y=HIWORD(_空 4_); sprintf(szBuf,”%d,%d”,x,y); InvalidateRect(_空 5_, lpRect, NULL ); break; 空 1 : HWND hWnd 空 2 : lParam 空 3 : lParam 空 4 : lParam 空 5 : hWnd 16: 描述句柄与指针的区别。 句柄,是整个 windows 编程的基础,一个句柄是指使用的一个唯一的整数值,是指一个四

11、字节长的数值,用于标志应用程序中不同的对象实例,如,一个窗口, 按钮,图标,滚动条,输出设备,控件或者文件等。应用程序能够通过句柄访问相应的对象的信息。 句柄不是一个指针,程序不能利用句柄来直接阅读文件中的信息。 17: 本程序通过 HPEN 实现了图形绘制,如下图所示,其绘制步骤为: 1)创建画笔; 2)选入画笔; 3)绘图; 4)选出画笔; 5)删除画笔。 通过如上五个步骤实现图形的绘制功能,绘制的内容为红色平行线,如下图所示: 参数函数列表: 创建画刷: CreateSolidBrush(RGB(255,0,255); 选入、选出画刷: SelectObject 绘制直线: MoveTo

12、Ex(int x, int y)、 LineTo(int x, int y) 删除画刷: DeleteObject 注意:画笔选入选出时,要强制类型转换为 HPEN 类型。 画刷句柄: HBRUSH HPEN hPen= CreatePen( PS_SOLID,3,RGB(255,0,0); HPEN hOldPen = (HPEN)SelectObject(hdc,hPen); MoveToEx(hdc,100,50,NULL); LineTo(hdc,200,300); SelectObject(hdc,hOldPen); DeleteObject(hPen); 18: 消息循环就是程序的

13、发动机 ,分别写出 TranslateMessage 及DispatchMessage 的作用。 TranslateMessage():该函数将虚拟键消息转换为字符消息。字符消息被寄送到消息队列里,当下一次线程调用 GetMessage 或 PeekMessage 时被读出; DispatchMessage():该函数分发一个消息给窗口程序。通常消息从 GetMessage函数获得。消息被分发到回调函数(过程处理 函数)。 19: 用你的话描述一下什么是代码规则?并举出几个实例。 20: 用你的话描述一下消息与事件的关系。 所谓事件驱动 ,简单地说就是你点什么按钮 (即产生什么事件 ),电脑执

14、行什么操作 (即调用什么函数 ).当然事件不仅限于用户的操作 . 事件驱动的核心自然是事件。 消息:在 Windows 中发生的一切都可以用消息来表示,消息用于告诉操作系统发生了什么,所有的 Windows 应用程序都是消息驱动的。 消息与事件之间的关系: 事件触发消息,消息传递事件。 21: 窗口关闭的时候产生的消息有哪些?分别描述作用? 产生的消息有三个: WM_CLOSE WM_DESTROY WM_QUIT WM_CLOSE 用户试图关闭窗口的时候系统发送该消息。 WM_DESTROY 用户关闭窗口时候,系统发送 WM_CLOSE 消息之后,系统发送的关闭窗口的消息。 WM_QUIT

15、当应用程序调用 PostQuitMessage 函数时生成此消息,此消息产生后,会将 GetMessage 函数的返回值改变为 0. 22: 窗口创建的过程(文字描述即可)? 1.设计一个窗口风格; 2.注册窗口类; 3.创建窗口; 4.显示及更新窗口; 5.*进入消息循环(扩展)。 23: 本程序通过 HBRUSH 实现了图形绘制,如下图所示, 其绘制步骤为: 1) 创建画刷; 2) 选入画刷; 3) 绘图; 4) 选出画刷; 5) 删除画刷。 通过如上五个步骤实现图形的绘制功能,绘制的内容为一个长方形,一个圆形,长方形的颜色为绿色,圆的颜色为红色。 参数函数列表: 画刷句柄: HBRUSH

16、 创建画刷: CreateSolidBrush(RGB(255,0,255); 选入、选出画刷: SelectObject 绘制矩形: Rectangle(HDC hdc, int nLeftRect, int nTopRect, int nRightRect, int nBottomRect); 删除画刷: DeleteObject 注意画刷选入选出时,要强制类型转换为 HBRUSH 类型。 绘制矩形: HBRUSH hBrush =CreateSolidBrush(RGB(0,255,0); HBRUSH hOldBrush = (HBRUSH)SelectObject(hdc,hBrus

17、h); Rectangle(hdc,50,50,150,150); SelectObject(hdc,hOldBrush); DeleteObject(hBrush); 绘制圆形: HBRUSH hBrush =CreateSolidBrush(RGB(255,0,0); HBRUSH hOldBrush = (HBRUSH)SelectObject(hdc,hBrush); Ellipse(hdc,200,200,350,350); SelectObject(hdc,hOldBrush); DeleteObject(hBrush); 24: 编写画矩形函数,要求创建红色画刷, hdc 由函数

18、参数传递。矩形的起点为( 100,100),终点为( 200,200)。 绘制矩形: HBRUSH hBrush =CreateSolidBrush(RGB(255,0,0); HBRUSH hOldBrush = (HBRUSH)SelectObject(hdc,hBrush); Rectangle(hdc,100,100,200,200); SelectObject(hdc,hOldBrush); DeleteObject(hBrush); 25: 编 写画线函数,要求创建 PS_SOLID 型画笔,颜色为红色, hdc 由函数参数传递。线的起点为( 100,100),终点为( 200,2

19、00)。 HPEN hPen= CreatePen( PS_SOLID,3,RGB(255,0,0); HPEN hOldPen = (HPEN)SelectObject(hdc,hPen); MoveToEx(hdc,100,100,NULL); LineTo(hdc,200,200); SelectObject(hdc,hOldPen); DeleteObject(hPen); 26: 本 程序通过 HBRUSH 实现了图形绘制,如下图所示,其绘制步骤为: 1) 创建画刷; 2) 选入画刷; 3) 绘图; 4) 选出画刷; 5) 删除画刷。 通过如上五个步骤实现图形的绘制功能,绘制的内容为

20、一个正方形,正方形的颜色为蓝色,起点为坐标为 100, 100,宽与高为 150,根据如上要求在空白处 填写代码。 Void MyDrawLine(HDC hdc) HBRUSH hBrush = CreateSolidBrush(RGB(_1_); HBRUSH hOldBrush = (HBRUSH)SelectObject(_2_, _3_); Rectangle(hdc, _4_,_5_,_6_,_7_); SelectObject(_8_, _9_); DeleteObject(_10_); 0, 0, 255 hdc hBrush 100 100 250 250 hdc hOldB

21、rush hBrush 27: 计算机中显示的图形一般可以分为两大类 -矢量图和位图,请分别描述这两种图型的区别。 矢 量图使用直线和曲线来描述图形,这些图形的元素是一些点、线、矩形、多边形、圆和弧线等等,它们都是通过数学公式计算获得的。例如一幅花的矢量图形实际上 是由线段形成外框轮廓,由外框的颜色以及外框所封闭的颜色决定花显示出的颜色。由于矢量图形可通过公式计算获得,所以矢量图形文件体积一般较小。矢量图形 最大的优点是无论放大、缩小或旋转等不会失真。 最大的缺点是难以表现色彩层次丰富的图像效果。 位图,又称光栅图,一般用于照片品质的 图像处理,是由许多像小方块一样的像素组成的图形。由像素的位

22、置与颜色值表示,能表现出颜色阴影的变化。简单说,位图就是以无数的色彩点组成的图案,当无限放大时会看到一块一块的像素色块,效果会失真。 28: 请写入创建画刷时的五个步骤(文字说明即可)。 1) 2) 3) 4) 5) 1.创建画刷 2.选入画刷 3.绘图 4.选出画刷 5.删除画刷 29: 请写出如下代码的含义。 HBRUSH hBrush = CreateSolidBrush(RGB(255,0,0); HBRUSH hOldBrush = (HBRUSH)SelectObject(hdc,hBrush); Rectangle(hdc,50,50,400,400); SelectObject

23、(hdc,hOldBrush); DeleteObject(hBrush); 1.创建红色画刷 2.选入画刷 3.绘制 350*350 的矩形 4.选出画刷 5.删除画刷 30: 请简述三种系统刷新请求。 ( 1)窗口发生变化,窗口的尺寸发生变化、客户区域移动显示或程序通过滚动条滚动窗口等; ( 2)窗口覆盖,窗口被其他窗口覆盖、窗口切换焦点或有菜单操作等; ( 3)使用系统 API,使用系统屏幕刷新函数,如, InvalidateRect 和 InvalidateRgn 等。 31请解释一下 WM_KEYDOWN、 WM_KEYUP 以及 WM_CHAR 消息的作用,以及区别。 WM_KEY

24、DOWN 键盘按下消息 WM_KEYUP 键盘抬起消息 WM_CHAR 当 WM_KEYDOWN 被 TranslateMessage 函数翻译后产生该消息。 WM_KEYDOWN 与 WM_KEYUP 捕获的按键内容不区分大小写(全部为大写),而WM_CHAR 捕获的按键内容区分大小写。 32: 鼠标及 键盘的消息有哪些?至少写出 6 个。 鼠标的消息: WM_LBUTTONDOWN WM_LBUTTONUP WM_LBUTTONDBLCLK WM_RBUTTONDOWN WM_RBUTTONUP WM_RBUTTONDBLCLK WM_MBUTTONDOWN WM_MOUSEMOVE WM_MOUSEWHEEL WM_NCLBUTTONDOWN WM_NCLBUTTONUP 键盘消息: WM_KEYDOWN WM_KEYUP WM_CHAR 33: 鼠标的消息有哪些?写出 5个。 鼠标消息: WM_LBUTTONDOWN WM_LBUTTONUP

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育教学资料库 > 复习参考

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。