windows编程试题(3)

一、简答题
1.Windows API是什么?根据其完成的功能可分为几种类型?
Windows API是Windows操作系统的应用程序接口,它的英文全称是:
Windows Application Programming Interface。
根据其完成的功能可分为以下三种类型:
窗口管理函数:实现窗口的创建、移动和修改功能;图形设备GDI函数:实现与
设备无关的图形操作功能;系统服务函数:实现与操作系统有关的多种功能。

2.什么是句柄?句柄有哪些作用?
句柄是一个32位的无符号整数。它是Windows用来标识被应用程序所建
立或使用的对象的唯一整数。Windows使用各种各样的句柄标识诸如应用程序
实例、窗口、菜单、位图、GDI对象等。常用的句柄类型有:HINSTANCE(运
行实例句柄)、HWND(窗口句柄)、HMENU(菜单句柄)、HBITMAP(位图句
柄)、HPEN(画笔句柄)、HBRUSH(画刷句柄)等。
通过句柄可以获得相应的对象信息。在Windows中,句柄(Handle)并非
对象的指针,它是系统内部表的索引值。这样能避免应用程序直接与对象的内
存地址打交道。

3.Windows编程中窗口的含义是什么?
在Windows中,一个窗口就是屏幕上的一个矩形区域,它接收用户的输入
并以文字或图形的格式显示输出内容。窗口是Windows应用程序基本的操作单
元,是应用程序与用户之间交互的接口,也是系统管理应用程序的基本单位。

4.Windows系统提供的标准控件有那些?
Windows系统提供的标准控件有:静态控件、按钮控件、编辑框控件、
列表框控件、组合框控件、滚动条控件与定时器控件等。

5.简述设计一个浏览图片的程序时,要用到Visual Basic的那些控件?以及要掌握这些控件的那些内容?
要用VB设计一个浏览图片的程序时,可能要用到下列控件:设计程序界面
时要用到容器控件如窗体;在逻辑分区上查找要显示的图片文件时,要用到驱动
器列表框、目录列表框和文件列表框等控件,还可以使用通用对话框等;要按文
件类别来显示文件列表时,可使用组合框、列表框等;要显示图片,可使用图片
框、图象框等。
在设计程序中,还要了解和掌握以上各控件相应的属性、方法和事件。如窗
体的Load事件;驱动器列表框的Drive属性和Change事件;目录列表框的Path
属性和Change事件;文件列表框的Path属性和Click事件;组合框或列表框的
Text属性、AddItem方法和Click事件;图片框或图象框的Picture属性等。

设计一个浏览图片的程序时,需要使用Visual Basic中的图像框(Image)和文件对话框(CommonDialog)控件。图像框用于显示图片,文件对话框用于让用户选择要浏览的图片文件。要掌握这些控件,需要了解如何设置控件属性、如何处理控件事件、如何使用相关方法和函数等。

6.什么是静态链接库(LIB)?静态链接库的作用是什么?
静态链接库就是 * .lib文件,库中的代码最后需要连接到可执行文件中去,所以静态连接的可执行文件一般都比较大一些。
静态链接库不同于动态链接库( * .dll),在静态库情况下,函数和数据被编译进一个二进制文件(通常扩展名为 * .LIB),Visual C++的编译器在链接过程中将从静态库中恢复这些函数和数据并把他们和应用程序中的其他模块组合在一起生成可执行文件,这个过程称为"静态链接",此时因为应用程序所需的全部内容都从库中复制了出来,所以静态库本身并不需要与可执行文件一起发行

静态链接库(LIB)是一种包含可重定位代码和数据的文件,它可以在链接时被静态地加载到程序中。静态链接库的作用是将公共代码和数据组织在一起,减小程序的体积,并提高程序的运行效率。程序开发者可以在编译时将静态链接库中的函数和变量与程序链接在一起,从而使得程序能够使用这些代码和数据。

7.解释下列名词的含义?
API、GDI、SDK、DLL
API:应用程序编程接口(Application Programming Interface)
GDI:图形设备接口(Graphics Device Interface)
SDK:软件开发包(Software Development Kit)
DLL:动态链接库(Dynamic Link Library)

API是应用程序接口的缩写,是一组定义和规范软件应用程序之间交互的接口;GDI是图形设备接口的缩写,是Windows操作系统中的一个子系统,用于管理和操作图形输出设备;SDK是软件开发工具包的缩写,是一组软件开发工具的集合,用于辅助程序员进行软件开发;DLL是动态链接库的缩写,是一种包含可重定位代码和数据的文件,它可以在运行时被动态地加载到程序中。

8.设备环境(描述表)保存了哪些信息?有什么作用?
设备环境也称设备描述表或设备上下文,它是由Windows管理的一个数据结构,它保存了绘图操作中一些共同需要设置的信息,如当前的画笔、画刷、字体和位图等图形对象及其属性,以及颜色和背景等影响图形输出的绘图模式。
应用程序利用设备环境中的信息定义图形对象及其属性,并实现应用程序、设备驱动程序和输出设备之间绘图命令的转换。

设备环境(描述表)保存了与设备有关的信息,包括输出设备的分辨率、颜色模式、字体等信息。设备环境的作用是让应用程序能够根据不同的输出设备自适应调整输出的内容和样式,从而提高程序的可移植性和兼容性。

9.模态对话框与非模态对话框有什么区别?
对话框是一个弹出式窗口,它一般用于程序需要用户输入或者需要和用户进行交互活动的场合。对话框的主要形式有模态对话框和非模态对话框两种。
模态对话框不允许用户在关闭对话框之前切换到应用程序的其它窗口,当一个模态对话框初始化时,对话框的消息循环将处理消息,但并不返回给WinMain函数。
非模态对话框允许用户在该对话框与应用程序其它窗口之间进行切换,非模态对话框从
WinMain函数的消息循环中接收输入。

模态对话框与非模态对话框的区别在于,模态对话框强制用户必须处理完对话框中的所有事务才能返回到主窗口,而非模态对话框则允许用户在处理对话框的同时继续操作主窗口。因此,模态对话框通常用于需要用户必须进行选择或输入的情况,而非模态对话框则用于用户可以暂停处理对话框的情况。

10.在程序设计中,经常要用到线程,对线程的操作有哪些?
对线程的操作有:启动线程(采用Start()方法);终止线程(Abort()方法,调用Abort方法后,如果系统自动清理代码的工作没有结束,可能会出现死机一样的假象);合并线程(Join()方法用于把两个并行执行的线程合并为一个单个的线程);让线程休眠(Sleep()方法可让线程休眠);挂起与继续(Suspend()可挂起线程,Resume()方法可让挂起线程继续)。

对线程的操作包括:创建线程、启动线程、控制线程的执行、等待线程结束、终止线程等。线程可以实现并行处理,提高程序的运行效率和响应速度。

11.在网络编程中,会用到套接字Socket,简述套接字的连接步骤与过程?
套接字的连接过程如下:
① 服务器监听:是服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态。
② 客户端请求:是指由客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。
③ 连接确认:是指当服务器端套接字监听到或者说接收到客户端套接字的连接请求,它就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,连接就建立好了。而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。

套接字(Socket)是在网络编程中用于实现不同主机之间通信的一种机制。套接字的连接步骤包括:创建套接字、绑定本地地址、连接远程地址、收发数据等。在连接过程中,客户端通过指定服务器的IP地址和端口号来连接服务器,服务器则监听指定的端口并等待客户端连接。一旦连接建立,双方就可以进行数据的交换。

二、程序阅读题

  1. 下列程序段是窗口类变量的定义与初始化,指出其每个成员的作用。
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
……
char lpszClassName[]="菜单";
……
WNDCLASS WndClass;       //window object definition
WndClass.style         = 0;
WndClass.lpfnWndProc   = WndProc;
WndClass.hInstance     = hInstance;
WndClass.hIcon         = LoadIcon(NULL,IDI_ERROR);
WndClass.hCursor       = LoadCursor(NULL,IDC_ARROW);
WndClass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
WndClass.lpszMenuName  = NULL;
WndClass.lpszClassName = lpszClassName;

.style 从这个窗口类派生的窗口具有的风格
.lpfnWndProc 窗口处理函数的指针
.hInstance 本模块的实例句柄
.hIcon 图标的句柄
.hCursor 光标的句柄
.hbrBackground 背景画刷的句柄
.lpszMenuName 指向菜单的指针
.lpszClassName 指向类名称的指针

2. 下列程序段是消息循环的基本框架,指出其各部分的功能。

HWND hdlg;                             //对话框句柄
……
HWND hwnd;
MSG msg;
HACCEL haccel;
……
while (GetMessage(&msg,NULL,0,0))
{
if (!IsDialogMessage(hdlg,&msg))
{
if (!TranslateAccelerator(hwnd,haccel,&msg))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
}

GetMessage函数从调用线程的消息队列里取得一个消息并将其放于指定的结构,当取出的消息为WM_QUIT时,其返回值为0,此时退出消息循环;
IsDialogMessage函数判别是否是对话框消息;
TranslateAccelerator函数翻译加速键表,该函数处理菜单命令中的加速键;
TranslateMessage函数将虚拟键消息转换为字符消息,并将其寄送到线程的消息队列里;
DispatchMessage函数分发一个消息给窗口程序,驱动窗口函数的执行。

3. 下列程序段是一个窗口函数的基本框架,指出其各部分的功能。

LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{                               //message processing function
switch (message)
{
case WM_CREATE:
  break;
case WM_RBUTTONDOWN:
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd,message,wParam,lParam);
}
return 0;
}

窗口函数根据不同的消息来执行不同的程序段。其中各形式参数的含义如下:
hwnd: 对应消息的窗口句柄;
message: 要处理的消息编号;
wParam: 消息所带附加信息的字参数;
lParam: 消息所带附加信息的长字参数;
PostQuitMessage()寄送一个WM_QUIT消息给线程的消息队列并立即返回;
DefWindowProc()是默认的消息处理函数,把不关心的消息都丢给它来处理。

4. 下列程序段的功能是画出一个图形,指出其各部分的功能。

PAINTSTRUCT ps;
HBRUSH      hB1,hB2;
int         nMode;
……
nMode = MM_TEXT;
hdc   = BeginPaint(hwnd,&ps);
SetMapMode(hdc,nMode);
hB1 = (HBRUSH)GetStockObject(WHITE_BRUSH);
hB2 = (HBRUSH)GetStockObject(BLACK_BRUSH);
SelectObject(hdc,hB1);
RoundRect(hdc,0,0,150,150,30,30);
SelectObject(hdc,hB2);
Ellipse(hdc,0,10,150,140);
DeleteObject(hB1);
DeleteObject(hB2);
EndPaint(hwnd,&ps);

BeginPaint: 获取设备环境句柄
SetMapMode: 设置映象模式
GetStockObject: 创建画刷
SelectObject: 选入设备环境
RoundRect: 画圆角矩形
Ellipse: 画椭圆
DeleteObject: 删除画刷
EndPaint: 释放环境句柄

三、程序设计题
用WindowsAPI或者VB设计一程序,其功能可浏览计算机系统中的图片文件,即可显示*.JPG、*.BMP等类型的图片文件。

用WindowsAPI或者VB设计一程序,其功能可浏览计算机系统中的图片文件,即可显示*.JPG、*.BMP等类型的图片文件。VB参考程序如下
    Private Sub drvPic_Change()
      dirPic.Path = drvPic.Drive
    End Sub
    Private Sub dirPic_Change()
      filPic.Path = dirPic.Path
    End Sub
    Private Sub cmbPic_Click()
      filPic.Pattern = cmbPic.Text
    End Sub
    Private Sub filPic_Click()
      Dim mpath As String, mfile As String
      On Error GoTo ErrorEnd
      mpath = filPic.Path:  mfile = filPic.FileName
      If (Right(mpath, 1) = "\") Then
    mfile = mpath + mfile
      Else
    mfile = mpath + "\" + mfile
      End If
      imgPic.Picture = LoadPicture(mfile)
      Exit Sub
    ErrorEnd:
      imgPic.Picture = LoadPicture("")
      MsgBox ("图片文件类型错误!")
    End Sub
  • 22
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值