windows核心编程考试题
一、简答题(共6小题,每小题5分,总分30分)
1. 调用windows函数时,如何对一个输入的ANSI字符串,进行转换。
答:使用windows函数MultiByteToWideChar将多字节字符串转换为宽字符字符串。 如下所示:
int MultiByteToWideChar(
UINT uCodePage, 。。。 )
2. 什么是内核对象
答:内核对象只是内核分配的一个内存块,并且只能由该内核访问。该内存块是一种数据结构,它的成员负责维护该对象的各种信息。内核对象的数据结构只能被内核访问,因此应用程序无法在内存中找到这些数据结构并直接改变它们的内容。当调用一个用于创建内核对象的函数时,该函数就返回一个用于标识该对象的句柄。为了使操作系统变得更加健壮,这些句柄值是与进程密切相关的。内核对象有:(32) 3. 进程和线程的关系。
答:进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的
一个独立单位。线程是进程的一个实体,是CPU调度和分派的基本单位,他是比进程更小的能独立运行的基本单位,线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),一个线程可以创建和撤销另一个线程。进程和线程的关系:
(1)一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。 (2)资源分配给进程,同一进程的所有线程共享该进程的所有资源。
(3)线程在执行过程中,需要协作同步。不同进程的线程间要利用消息通信的办法实现同步。 (4)处理机分给线程,即真正在处理机上运行的是线程。 (5)线程是指进程内的一个执行单元,也是进程内的可调度实体。
4. 分别描述windows的两类应用程序:GUI程序和CUI程序。
答:图形用户界面(Graphical User Interface,简称 GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。GUI的广泛应用是当今计算机发展的重大成就之一,他极大地方便了非专业用户的使用。人们从此不再需要死记硬背大量的命令,取而代之的是可以通过窗口、菜单、按键等方式来方便地进行操作。而嵌入式GUI具有下面几个方面的基本要求:轻型、占用资源少、高性能、高可靠性、便于移植、可配置等特点。GUI的组成部分有:桌面、视窗、单一文件界面、多文件界面、标签、菜单、图标和按钮等。P66
5. Windows提供的作业对象的作用是什么。
P121
6. 什么是事件内核对象。
P236
二、分析题(共23分)
1.WinMain函数的说明如下: int WINAPI WinMain
( HINSTANCE hThisInst, HINSTANCe hPrevInst, LPSTR lpszCmdLine, Int nCmdShow
)
请对WinMain函数的四个参数内容说明(4分,每个参数1分) WinMain函数的说明如下: int WINAPI WinMain
( HINSTANCE hThisInst, 应用程序当前实例句柄 HINSTANCe hPrevInst, 应用程序其他实例句柄
LPSTR lpszCmdLine, 指向程序命令行参数的指针 Int nCmdShow 应用程序开始执行时窗口显示方式的整数值标识 )
2.请将下面的常用窗口样式的表识填写出来(13分,每空1分)
常用窗口样式 标识 WS_CAPTION WS_BORDER WS_VSCROLL WS_MAXIMIZEBOX WS_MINIMIZE WS_MINIMIZEBOX WS_OVERLAPPEDWINDOW WS_OVERLAPPED WS_MAXIMIZE WS_POPUP WS_POPUPWINDOW WS_SYSMENU WS_HSCROLL 创建一带边框的窗口 创建一带垂直滚动条的窗口 创建一带最大化框的窗口 创建一最小尺寸的窗口 创建一带最小化框的窗口 创建一带边框、标题栏、系统菜单及最大、最小化框的窗口 创建一带边框和标题的窗口 创建一最大尺寸的窗口 创建一弹出式窗口 创建一带边框和系统菜单的弹出式窗口 创建一带系统菜单的窗口 创建一带水平滚动条的菜单 说明 创建一带标题栏的窗口 3.窗口显示形式标识填写出来(每空1分,共6分) 标识 说明 SW_SHOWNOACTIVE 显示但不激活窗口 显示并激活窗口 SW_SHOWNORMAL 恢复窗口的原来位置及尺SW_RESTORE 寸 显示并最大化窗口 SW_SHOWMAXMIZE 隐藏窗口 SW_HIDE SW_SHOWMINIMIZE 显示并最小化窗口
三、写程序题(47分)
1. 请写出窗口区域和视口区域的函数原形(6分)
窗口区域的定义由SetWindowExtEx函数完成,其函数原型形为: BOOL SetWindowExtEx ( HDC hdc, int nHeight,nWidth, LPSIZE lpSize,
);
视口区域的定义由SetViewportExtEx函数完成,函数原型为: BOOL Set ViewportExtEx (
HDC hdc, int nHeight,nWidth, LPSIZE lpSize );
2. 请写出创建画笔和画刷的函数,并写出他们样式有哪些(12分) (1) 画笔的创建
使用画笔之前必须事先定义一个画笔句柄。形式如下: HPEN hP;
然后调用函数GetStockObject获取Windows系统定义的四种画笔例如获取画笔BLACK_PEN的形式如下:
hP=GetStockObject(BLACK_PEN) (2) 创建新画笔,形式如下: hP=CreatePen (
int nPenStyle, //确定画笔样式 int nWidth, //画笔宽度
COLORREF rgbColor //画笔颜色 );
创建画笔后,必须调用SelectObject函数将其选入设备环境。 不再使用当前画笔时,需删除画笔,以免占内存 DeleteObject(hP); 画笔的样式有: PS_DASH: 虚线 PS_DASHDOT: 点划线 PS_DASHDOTDOT: 双点划线 PS_DOT: 点线 PS_INSIDEFRAME: 实线 PS_NULL: 无 PS_SOLID: 实线 (1) 画刷的创建
使用画刷需事先定义一个画刷句柄。形式如下: HBRUSH hBr; //hBr为画刷句柄
然后调用函数GetStockObject获取Windows系统提供的7种画刷 hBr=(HBRUSH)GetStockObject(nBrushStyle)画刷样式 BLACK_BRUSH 黑色画刷
DKGRAY_BRUSH 深灰色画刷 GRAY_BRUSH 灰色画刷 HOLLOW_BRUSH 虚画刷 LTGRAY_BRUSH 亮灰色画刷 NULL_BRUSH 空画刷
WHITE_BRUSH 白色画刷
可调用函数CreateSolidBrush和CreateHatchBrush创建画刷, hBr=CreateSolidBrush(rgbColor); hBr=CreateHatchBrush (int nHctchStyle,
COLORREF rgbColor );
HS_BDIAGONAL 45度从左上到右下 HS_DIAGCROSS 45度叉线
HS_FDIAGONAL 45度从左下到右上 HS_CROSS 垂直相交的阴影线 HS_HORIZONTAL 水平阴影线 HS_VERTICAL 垂直阴影线 (2) 选入设备环境
创建画刷后, 通过SelectObject(hdc,hBr);将其选入设备环境 (3) 删除画刷
不使用画刷时,可用DeleteObject(hBr);删除画刷,释放内存 3. 请写出绘制椭圆弧线、饼图及矩形的函数(9分) 绘制椭圆弧线的函数Arc, BOOL Arc (
HDC hdc, int X1,intY1, //边框矩形左上角的逻辑坐标 int X2,int Y2, //边框矩形右下角的逻辑坐标 int X3,int Y3, //椭圆弧起始点坐标 int X4,int Y4 //椭圆弧终止点坐标 )
绘制饼图,并用当前画刷进行填充 BOOL Pie (
HDC hdc, int X1,intY1, //边框矩形左上角的逻辑坐标 int X2,int Y2, //边框矩形右下角的逻辑坐标 int X3,int Y3, //椭圆弧起始经线的确定点坐标 int X4,int Y4 //椭圆弧终止经线的确定点坐标 )
绘制矩形,并用当前画刷进行填充
BOOL Rectangle(HDC hdc,int X1,int Y1,int X2,int Y2)
4.请编写一个windows程序通过在窗口中分五行分别显示五行文本,在窗口的用户区中输出文本的内容如下图所示。(20分)
相关推荐: