windows简答题.docx
- 文档编号:26538257
- 上传时间:2023-06-20
- 格式:DOCX
- 页数:20
- 大小:226.60KB
windows简答题.docx
《windows简答题.docx》由会员分享,可在线阅读,更多相关《windows简答题.docx(20页珍藏版)》请在冰豆网上搜索。
windows简答题
1:
C语言的入口函数是哪个?
分别写出各个参数的作用。
intmain(intargc,char*argv[])
argc是命令行总的参数个数;
argv[]是argc个参数,其中第0个参数是程序的全名,以后的参数是命令行后面跟的用户输入的参数。
2:
MFC使用向导生成对话框应用程序,会自动生成三个类,如:
CAboutDlg、CDemoApp、CDemoDlg,请分别说明三个类的作用?
以及三个类之间的关系。
创建典型的对话框程序(示例)后,会出现如下几个类:
CAboutDlg:
关于版本对话框控制类;
CDemoApp:
应用程序管理类;
CDemoDlg:
对话框管理类。
其中,后两个类是根据项目名称而定的,规则是:
C+项目名称+App(或Dlg)
3:
PostMessage与SendMessage的区别。
SendMessage函数功能是,将指定的消息发送到一个或多个窗口。
此函数为指定的窗口调用过程处理程序,直到过程处理函数处理完消息再返回。
PostMessage函数功能是,将一个消息放入(寄送)到与指定窗口创建的线程相联系消息队列里,不等待线程处理消息就返回。
4:
Windows系统提供了一个定时响应的消息—WM_TIMER,该消息的名称是什么?
SetTimer()函数与KillTimer()函数的作用是?
WM_TIMER定时器消息;SetTimer()设置定时器;KillTimer() 销毁定时器
5:
什么是指针?
什么是句柄?
描述句柄与指针的区别?
指针:
内存单元的编号也叫做地址。
既然根据内存单元的编号或地址就可以找到所需的内存单元,所以通常也把这个地址称为指针。
句柄,是整个windows编程的基础,一个句柄是指使用的一个唯一的整数值,是指一个四字节长的数值,用于标志应用程序中不同的对象实例。
区别:
句柄不是一个指针,程序不能利用句柄来直接阅读文件中的信息。
6:
什么是消息?
什么是事件驱动程序?
消息:
在Windows中发生的一切都可以用消息来表示,消息用于告诉操作系统发生了什么,所有的Windows应用程序都是消息驱动的。
事件驱动:
简单地说就是你点什么按钮(即产生什么事件),电脑执行什么操作(即调用什么函数).当然事件不仅限于用户的操作.事件驱动的核心自然是事件。
7:
代码规范是程序编写的重要准则,请用你的话说明一下什么是代码规范。
代码规范:
是一种编程时的命名规范。
基本原则是:
变量名=属性+类型+对象描述,其中每一对象的名称都要求有明确含义,可以取对象名字全称或名字的一部分。
命名要基于容易记忆、容易理解的原则。
需要大家自己理解。
。
。
8:
使用类向导生成的对话框工程中,自动生成三个类,请写出这三个类的名称,并说明其含义。
CAbout:
关于对话框管理类;
C+工程名+App:
应用程序管理类;
C+工程名+Dlg:
对话框管理类;
9:
写出鼠标左键按下与右键按下时截获的消息。
鼠标左键按下
1.WM_LBUTTONDOWN 左键按下消息
2.WM_LBUTTONUP左键抬起消息
鼠标右键按下
1.WM_RBUTTONDOWN右键按下消息
2.WM_RBUTTONUP右键抬起消息
10:
在图形与文字绘制时,需要捕获的消息是哪个?
需要在此消息的什么位置(哪两个函数之间)加入绘制图形的代码?
绘制文字时,需要捕获WM_PAINT消息,需要在此消息下的BeginPaint()函数与EndPaint()消息之间加入图形、文字的绘制。
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:
已知下面的相关函数描述,完成绘制红色矩形框的程序。
创建画刷的函数是HBRUSHCreateSolidBrush(COLOREFcorlor);
选择绘图对象的函数是HGDIOBJSelectObject(HDChdc,HGDIOBJhObj);
画矩形的函数是Rectangle(HDChdc,intleft,inttop,intright,intbottom);
完成下面的代码片段。
HBRUSH____(空1)_____=_____(空2)______(RGB(255,0,0));
HBRUSHhOldBrush=(____空3____) ____(空4)____(hdc,hBrush);
Rectangle(hdc,50,50,400,400);
____(空5)______(hdc,hOldBrush);
DeleteObject(hBrush);
空1:
hBrush
空2:
CreateSolidBrush
空3:
HBRUSH
空4:
SelectObject
空5:
SelectObject
14:
对话框有两种模式,分别是什么?
它们之间的区别是什么?
对话框窗口分为两种:
模式对话框窗口与无模式对话框窗口。
模式对话框窗口也称为模态对话框窗口,是指用户在Win32应用程序的对话框中,想要对对话框以外的应用程序进行操作时,必须先对该对话框进行响应,如单击【确定】或【取消】按钮等操作,将该对话框关闭。
相对应的另一个对话框是无模式对话框,即可以在不关闭当前的对话框窗口的情况下操作其他窗口。
15:
已知鼠标移动的消息是WM_MOUSEMOVE,绘图消息的是WM_PAINT,如果想实现鼠标移动的时候,在窗口中显示鼠标的光标位置,需要完成的代码如下,请填写空白区域。
注意:
代码中省略号部分不要求填写,是省略的代码。
(5分)
//全局变量
charszBuf[512]
…
//窗口过程处理函数;
LRESULTCALLBACKWinProc(_______空1_______,UINTmessage,WPARAMwParam,LPARAM________空2________)
{
……
intx,inty;
HDChdc;
switch(message)
{
caseWM_PAINT:
hdc=……
……
……
break;
caseWM_MOUSEMOVE:
x=LOWORD(________空3___________);
y=HIWORD(_________空4__________);
sprintf(szBuf,”%d,%d”,x,y);
InvalidateRect(______空5________,lpRect,NULL);
break;
……
}
……
}
空1:
HWNDhWnd
空2:
lParam
空3:
lParam
空4:
lParam
空5:
hWnd
16:
描述句柄与指针的区别。
句柄,是整个windows编程的基础,一个句柄是指使用的一个唯一的整数值,是指一个四字节长的数值,用于标志应用程序中不同的对象实例,如,一个窗口,按钮,图标,滚动条,输出设备,控件或者文件等。
应用程序能够通过句柄访问相应的对象的信息。
句柄不是一个指针,程序不能利用句柄来直接阅读文件中的信息。
17:
本程序通过HPEN实现了图形绘制,如下图所示,其绘制步骤为:
1)创建画笔;
2)选入画笔;
3)绘图;
4)选出画笔;
5)删除画笔。
通过如上五个步骤实现图形的绘制功能,绘制的内容为红色平行线,如下图所示:
参数函数列表:
创建画刷:
CreateSolidBrush(RGB(255,0,255));
选入、选出画刷:
SelectObject
绘制直线:
MoveToEx(intx,inty)、LineTo(intx,inty)
删除画刷:
DeleteObject
注意:
画笔选入选出时,要强制类型转换为HPEN类型。
画刷句柄:
HBRUSH
HPENhPen=CreatePen(PS_SOLID,3,RGB(255,0,0));
HPENhOldPen=(HPEN)SelectObject(hdc,hPen);
MoveToEx(hdc,100,50,NULL);
LineTo(hdc,200,300);
SelectObject(hdc,hOldPen);
DeleteObject(hPen);
18:
消息循环就是程序的发动机,分别写出TranslateMessage及DispatchMessage的作用。
TranslateMessage():
该函数将虚拟键消息转换为字符消息。
字符消息被寄送到消息队列里,当下一次线程调用GetMessage或PeekMessage时被读出;
DispatchMessage():
该函数分发一个消息给窗口程序。
通常消息从GetMessage函数获得。
消息被分发到回调函数(过程处理函数)。
19:
用你的话描述一下什么是代码规则?
并举出几个实例。
20:
用你的话描述一下消息与事件的关系。
所谓事件驱动,简单地说就是你点什么按钮(即产生什么事件),电脑执行什么操作(即调用什么函数).当然事件不仅限于用户的操作.事件驱动的核心自然是事件。
消息:
在Windows中发生的一切都可以用消息来表示,消息用于告诉操作系统发生了什么,所有的Windows应用程序都是消息驱动的。
消息与事件之间的关系:
事件触发消息,消息传递事件。
21:
窗口关闭的时候产生的消息有哪些?
分别描述作用?
产生的消息有三个:
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实现了图形绘制,如下图所示,其绘制步骤为:
1)创建画刷;2)选入画刷;3)绘图;4)选出画刷;5)删除画刷。
通过如上五个步骤实现图形的绘制功能,绘制的内容为一个长方形,一个圆形,长方形的颜色为绿色,圆的颜色为红色。
参数函数列表:
画刷句柄:
HBRUSH创建画刷:
CreateSolidBrush(RGB(255,0,255));选入、选出画刷:
SelectObject绘制矩形:
Rectangle(HDChdc,intnLeftRect,intnTopRect,intnRightRect,intnBottomRect);删除画刷:
DeleteObject注意画刷选入选出时,要强制类型转换为HBRUSH类型。
绘制矩形:
HBRUSHhBrush=CreateSolidBrush(RGB(0,255,0));
HBRUSHhOldBrush=(HBRUSH)SelectObject(hdc,hBrush);
Rectangle(hdc,50,50,150,150);
SelectObject(hdc,hOldBrush);
DeleteObject(hBrush);
绘制圆形:
HBRUSHhBrush=CreateSolidBrush(RGB(255,0,0));
HBRUSHhOldBrush=(HBRUSH)SelectObject(hdc,hBrush);
Ellipse(hdc,200,200,350,350);
SelectObject(hdc,hOldBrush);
DeleteObject(hBrush);
24:
编写画矩形函数,要求创建红色画刷,hdc由函数参数传递。
矩形的起点为(100,100),终点为(200,200)。
绘制矩形:
HBRUSHhBrush=CreateSolidBrush(RGB(255,0,0));
HBRUSHhOldBrush=(HBRUSH)SelectObject(hdc,hBrush);
Rectangle(hdc,100,100,200,200);
SelectObject(hdc,hOldBrush);
DeleteObject(hBrush);
25:
编写画线函数,要求创建PS_SOLID型画笔,颜色为红色,hdc由函数参数传递。
线的起点为(100,100),终点为(200,200)。
HPENhPen=CreatePen(PS_SOLID,3,RGB(255,0,0));
HPENhOldPen=(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)删除画刷。
通过如上五个步骤实现图形的绘制功能,绘制的内容为一个正方形,正方形的颜色为蓝色,起点为坐标为100,100,宽与高为150,根据如上要求在空白处填写代码。
VoidMyDrawLine(HDChdc){
HBRUSHhBrush=CreateSolidBrush(RGB(________1________));
HBRUSHhOldBrush=(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 hOldBrush
hBrush
27:
计算机中显示的图形一般可以分为两大类--矢量图和位图,请分别描述这两种图型的区别。
矢量图使用直线和曲线来描述图形,这些图形的元素是一些点、线、矩形、多边形、圆和弧线等等,它们都是通过数学公式计算获得的。
例如一幅花的矢量图形实际上是由线段形成外框轮廓,由外框的颜色以及外框所封闭的颜色决定花显示出的颜色。
由于矢量图形可通过公式计算获得,所以矢量图形文件体积一般较小。
矢量图形最大的优点是无论放大、缩小或旋转等不会失真。
最大的缺点是难以表现色彩层次丰富的图像效果。
位图,又称光栅图,一般用于照片品质的图像处理,是由许多像小方块一样的像素组成的图形。
由像素的位置与颜色值表示,能表现出颜色阴影的变化。
简单说,位图就是以无数的色彩点组成的图案,当无限放大时会看到一块一块的像素色块,效果会失真。
28:
请写入创建画刷时的五个步骤(文字说明即可)。
1)2)3)4)5)
1.创建画刷
2.选入画刷
3.绘图
4.选出画刷
5.删除画刷
29:
请写出如下代码的含义。
HBRUSHhBrush=CreateSolidBrush(RGB(255,0,0));
HBRUSHhOldBrush=(HBRUSH)SelectObject(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请解释一下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_RBUTTONDBLCLK
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,如果想实现鼠标移动的时候,在窗口中显示鼠标的光标位置,需要完成的代码如下,请填写空白区域。
注意:
代码中省略号部分是不要求填写的,省略的代码。
//全局变量
charszBuf[512]
……
//窗口过程处理函数;
LRESULTCALLBACKWinProc(_____空1______hwnd,UINT___空2______,……,LPARAMlParam)
{
……
intx,inty;
HDChdc;
switch(message)
{
caseWM_PAINT:
hdc=……
……
……
Break;
caseWM_LBUTTONDOWN:
x=LOWORD(_________空3__________);
y=HIWORD(________空4_________);
sprintf(szBuf,”%d,%d”,x,y);
InvalidateRect(______空5_______,lpRect,NULL);
break;
……
}
……
}
空1:
HWND空2:
message空3:
lParam空4:
lParam空5:
hWnd
35:
根据窗口创建的步骤选择相应的代码。
设计一个窗口风格
答案1
显示及更新窗口
答案2
创建窗口
答案3
注册窗口
答案4
进入消息循环
答案5
设计一个窗口风格
–WNDCLASS,
显示及更新窗口
–ShowWindow、UpdateWindow,
创建窗口
–CreateWindow,
注册窗口
–RegisterClassEx,
进入消息循环
–while(GetMessage(&msg,NULL,0,0)){TranslateMessage(&msg);DispatchMessage(&msg);}
36:
已知鼠标点击的消息是WM_LBUTTONDOWN,绘图消息的是WM_PAINT,如果想实现鼠标移动的时候,在窗口中显示鼠标的光标位置,需要完成的代码如下,请填写空白区域。
注意:
代码中省略号部分是不要求填写的,省略的代码。
(5分)
//全局变量
charszBuf[512]
……
//窗口过程处理函数;
LRESULTCALLBACKWinProc( 空1 hWnd,UINT 空2 ,……,LPARAMlParam)
{
……
intx,inty;
HDChdc;
switch(message)
{
caseWM_PAINT:
hdc=……
……
Break;
caseWM_LBUTTONDOWN:
x=LOWORD( 空3 );
y=HIWORD ( 空4 );
sprintf(szBuf,”%d,%d”,x,y);
InvalidateRect( 空5 ,lpRect,NULL);
break;
……
}
……
}
空3
答案1
空1
答案2
空5
答案3
空4
答案4
空2
答案5
空3–lParam,空1–HWND,空5–hWnd,空4–lParam,空2–message
37:
对关闭窗口时产生的消息及解释正确连线。
WM_DESTROY
答案1
WM_QUIT
答案2
WM_CLOSE
答案3
正确答案是:
WM_DESTROY–执行命令,
WM_QUIT–完成命令,
WM_CLOSE–下命令
38:
已知下面的相关函数,完成
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- windows 答题