windows程序设计习题.docx

上传人:b****5 文档编号:2776132 上传时间:2022-11-15 格式:DOCX 页数:31 大小:234.15KB
下载 相关 举报
windows程序设计习题.docx_第1页
第1页 / 共31页
windows程序设计习题.docx_第2页
第2页 / 共31页
windows程序设计习题.docx_第3页
第3页 / 共31页
windows程序设计习题.docx_第4页
第4页 / 共31页
windows程序设计习题.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

windows程序设计习题.docx

《windows程序设计习题.docx》由会员分享,可在线阅读,更多相关《windows程序设计习题.docx(31页珍藏版)》请在冰豆网上搜索。

windows程序设计习题.docx

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(HDChd

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1