windows程序设计习题.docx

上传人:h**** 文档编号:26553481 上传时间:2022-07-18 格式:DOCX 页数:18 大小:18.47KB
返回 下载 相关 举报
windows程序设计习题.docx_第1页
第1页 / 共18页
windows程序设计习题.docx_第2页
第2页 / 共18页
点击查看更多>>
资源描述

《windows程序设计习题.docx》由会员分享,可在线阅读,更多相关《windows程序设计习题.docx(18页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、windows程序设计习题 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 定时器消息;SetTim

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

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

5、:对话框管理类; 9:写出鼠标左键按下与右键按下时截获的消息。 鼠标左键按下 1.WM_LBUTTONDOWN 左键按下消息 2.WM_LBUTTONUP 左键抬起消息 鼠标右键按下 1.WM_RBUTTONDOWN 右键按下消息 2.WM_RBUTTONUP 右键抬起消息 10:在图形与文字绘制时,需要捕获的消息是哪个?需要在此消息的什么位置(哪两个函数之间)加入绘制图形的代码? 绘制文字时,需要捕获WM_PAINT消息,需要在此消息下的BeginPaint()函数与EndPaint()消息之间加入图形、文字的绘制。 11:在过程处理函数中,如何获得鼠标按下时光标的位置坐标,写出两种方法。

6、方法一: 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:已知下面的相关函数描述,完成绘制红色矩形框的程序。 创建画刷的函数是 HBRUSH CreateSolidBrush(COLOREF corlor); 选择绘图对象

7、的函数是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); Rectangle(hdc,50,50,400,400); _(空5)_(hdc,hOldBrush); DeleteObject(hBrush); 空1:hBrush 空2:Crea

8、teSolidBrush 空3:HBRUSH 空4:SelectObject 空5:SelectObject 14:对话框有两种模式,分别是什么?它们之间的区别是什么? 对话框窗口分为两种:模式对话框窗口与无模式对话框窗口。模式对话框窗口也称为模态对话框窗口,是指用户在Win32应用程序的对话框中,想要对对话框以外的应用程序进行操作时,必须先对该对话框进行响应,如单击或按钮等操作,将该对话框关闭。相对应的另一个对话框是无模式对话框,即可以在不关闭当前的对话框窗口的情况下操作其他窗口。 15:已知鼠标移动的消息是WM_MOUSEMOVE,绘图消息的是WM_PAINT,如果想实现鼠标移动的时候,在

9、窗口中显示鼠标的光标位置,需要完成的代码如下,请填写空白区域。 注意:代码中省略号部分不要求填写,是省略的代码。(5分) /全局变量 char szBuf512 /窗口过程处理函数; LRESULT CALLBACK WinProc(_空1_, UINT message, WPARAM wParam, LPARAM _空2_) int x,int y; HDC hdc; switch(message) case WM_PAINT: hdc = break; case WM_MOUSEMOVE: x =LOWORD(_空3_); y=HIWORD(_空4_); sprintf(s zBuf,”%

10、d,%d”,x,y); InvalidateRect(_空5_, lpRect, NULL ); break; 空1 :HWND hWnd 空2 :lParam 空3 :lParam 空4 :lParam 空5 :hWnd 16:描述句柄与指针的区别。 句柄,是整个windows编程的基础,一个句柄是指使用的一个唯一的整数值,是指一个四字节长的数值,用于标志应用程序中不同的对象实例,如,一个窗口,按钮,图标,滚动条,输出设备,控件或者文件等。应用程序能够通过句柄访问相应的对象的信息。 句柄不是一个指针,程序不能利用句柄来直接阅读文件中的信息。 17:本程序通过HPEN实现了图形绘制,如下图所示

11、,其绘制步骤为:1)创建画笔; 2)选入画笔; 3)绘图; 4)选出画笔; 5)删除画笔。 通过如上五个步骤实现图形的绘制功能,绘制的内容为红色平行线,如下图所示: 参数函数列表: 创建画刷:CreateSolidBrush(RGB(255,0,255); 选入、选出画刷:SelectObject 绘制直线:MoveToEx(int x, int y)、LineTo(int x, int y) 删除画刷:DeleteObject 注意:画笔选入选出时,要强制类型转换为HPEN类型。 画刷句柄:HBRUSH HPEN hPen= CreatePen( PS_SOLID,3,RGB(255,0,0

12、); HPEN hOldPen = (HPEN)SelectObject(hdc,hPen); MoveToEx(hdc,100,50,NULL); LineTo(hdc,200,300); SelectObject(hdc,hOldPen); DeleteObject(hPen); 18:消息循环就是程序的发动机,分别写出TranslateMessage及DispatchMessage的作用。 TranslateMessage():该函数将虚拟键消息转换为字符消息。字符消息被寄送到消息队列里,当下一次线程调用GetMessage或PeekMessage时被读出; DispatchMessag

13、e():该函数分发一个消息给窗口程序。通常消息从GetMessage 函数获得。消息被分发到回调函数(过程处理函数)。 19:用你的话描述一下什么是代码规则?并举出几个实例。 20:用你的话描述一下消息与事件的关系。 所谓事件驱动,简单地说就是你点什么按钮(即产生什么事件),电脑执行什么操作(即调用什么函数).当然事件不仅限于用户的操作. 事件驱动的核心自然是 事件。 消息:在Windows中发生的一切都可以用消息来表示,消息用于告诉操作系统发生了什么,所有的Windows应用程序都是消息驱动的。 消息与事件之间的关系: 事件触发消息,消息传递事件。 21:窗口关闭的时候产生的消息有哪些?分别

14、描述作用? 产生的消息有三个: WM_CLOSE WM_DESTROY WM_QUIT WM_CLOSE 用户试图关闭窗口的时候系统发送该消息。 WM_DESTROY 用户关闭窗口时候,系统发送WM_CLOSE消息之后,系统发送的关闭窗口的消息。 WM_QUIT当应用程序调用PostQuitMessage函数时生成此消息,此消息产生后,会将GetMessage函数的返回值改变为0. 22:窗口创建的过程(文字描述即可)? 1.设计一个窗口风格; 2.注册窗口类; 3.创建窗口; 4.显示及更新窗口; 5.*进入消息循环(扩展)。 23:本程序通过HBRUSH实现了图形绘制,如下图所示,其绘制步

15、骤为: 1)创建画刷; 2)选入画刷; 3)绘图; 4)选出画刷; 5)删除画刷。通过如上五个步骤实现图形的绘制功能,绘制的内容为一个长方形,一个圆形,长方形的颜色为绿色,圆的颜色为红色。参数函数列表:画刷句柄:HBRUSH 创建画刷:CreateSolidBrush(RGB(255,0,255); 选入、选出画刷:SelectObject 绘制矩形: Rectangle(HDC hdc, int nLeftRect, int nTopRect, int nRightRect, int nBottomRect); 删除画刷:DeleteObject 注意画刷选入选出时,要强制类型转换为HBRU

16、SH类型。 绘制矩形: HBRUSH hBrush =CreateSolidBrush(RGB(0,255,0); HBRUSH hOldBrush = (HBRUSH)SelectObject(hdc,hBrush); Rectangle(hdc,50,50,150,150); SelectObject(hdc,hOldBrush); DeleteObject(hBrush); 绘制圆形: HBRUSH hBrush =CreateSolidBrush(RGB(255,0,0); HBRUSH hOldBrush = (HBRUSH)SelectObject(hdc,hBrush); Ell

17、ipse(hdc,200,200,350,350); SelectObject(hdc,hOldBrush); DeleteObject(hBrush); 24:编写画矩形函数,要求创建红色画刷,hdc由函数参数传递。矩形的起点为(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,hOldBru

18、sh); DeleteObject(hBrush); 25:编写画线函数,要求创建PS_SOLID型画笔,颜色为红色,hdc由函数参数传递。线的起点为(100,100),终点为(200,200)。 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:本程序通过HBRUS

19、H实现了图形绘制,如下图所示,其绘制步骤为: 1)创建画刷; 2)选入画刷; 3)绘图; 4)选出画刷; 5)删除画刷。通过如上五个步骤实现图形的绘制功能,绘制的内容为一个正方形,正方形的颜色为蓝色,起点为坐标为100,100,宽与高为150,根据如上要求在空白处填写代码。 Void MyDrawLine(HDC hdc) HBRUSH hBrush = CreateSolidBrush(RGB(_1_); HBRUSH hOldBrush = (HBRUSH)SelectObject(_2_, _3_); Rectangle(hdc, _4_,_5_,_6_,_7_); SelectObje

20、ct(_8_, _9_); DeleteObject(_10_); 0, 0, 255 hdc hBrush 100 100 250 250 hdc hOldBrush hBrush 27:计算机中显示的图形一般可以分为两大类-矢量图和位图,请分别描述这两种图型的区别。 矢量图使用直线和曲线来描述图形,这些图形的元素是一些点、线、矩形、多边形、圆和弧线等等,它们都是通过数学公式计算获得的。例如一幅花的矢量图形实际上是由线段形成外框轮廓,由外框的颜色以及外框所封闭的颜色决定花显示出的颜色。由于矢量图形可通过公式计算获得,所以矢量图形文件体积一般较小。矢量图形最大的优点是无论放大、缩小或旋转等不会

21、失真。 最大的缺点是难以表现色彩层次丰富的图像效果。 位图,又称光栅图,一般用于照片品质的图像处理,是由许多像小方块一样的像素组成的图形。由像素的位置与颜色值表示,能表现出颜色阴影的变化。简单说,位图就是以无数的色彩点组成的图案,当无限放大时会看到一块一块的像素色块,效果会失真。28:请写入创建画刷时的五个步骤(文字说明即可)。 1)2)3)4)5) 1.创建画刷 2.选入画刷 3.绘图 4.选出画刷 5.删除画刷 29:请写出如下代码的含义。 HBRUSH hBrush = CreateSolidBrush(RGB(255,0,0); HBRUSH hOldBrush = (HBRUSH)S

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

23、请解释一下WM_KEYDOWN、WM_KEYUP以及WM_CHAR消息的作用,以及区别。 WM_KEYDOWN键盘按下消息 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_RBUT

24、TONDBLCLK WM_MBUTTONDOWN WM_MOUSEMOVE WM_MOUSEWHEEL WM_NCLBUTTONDOWN WM_NCLBUTTONUP 键盘消息: WM_KEYDOWN WM_KEYUP WM_CHAR 33:鼠标的消息有哪些?写出5个。 鼠标消息: WM_LBUTTONDOWN WM_LBUTTONUP WM_LBUTTONDBLCLK WM_RBUTTONDOWN WM_RBUTTONUP WM_RBUTTONDBLCLK WM_MBUTTONDOWN WM_MOUSEMOVE WM_MOUSEWHEEL WM_NCLBUTTONDOWN WM_NCLBUTTONUP 34:已知鼠标点击的消息是WM_LBUTTONDOWN,绘图消息的是WM_PAINT,如果想实现鼠标移动的时候,在窗口中显示鼠标的光标位置,需要完成的代码如下,请填写空白区域。 注意:代码中省略号部分是不要求填写的,省略的代码。 /全局变量 char szBuf512 /窗口过程处理函数; LRESULT CALLBACK WinProc(_空1_hwnd, UINT_空2_, , LPARAM lParam) int x,int y; HDC hdc; switch(message) case WM_PAINT: hdc =

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

当前位置:首页 > 应用文书 > 策划方案

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁