Windows编程 笔记 概念

简答题
1.Windows API是什么?根据其完成的功能可分为几种类型?

        API(应用程序编程接口,Application Programming Interface),是一些预先定义的函数,目的是让应用程序开发人员得以调用一组例程功能,而又无需考虑其底层的源码为何、或理解其内部工作机制的细节。(维基百科)

       根据功能分类:

       基础服务,图形设备接口,图形化用户界面,通用对话框链接库,通用控件链接库,Windows外壳(shell),网络服务

2.什么是句柄?有什么作用?     

       句柄(handle)是一个32位无符号整数。它是Windows操作系统用来标识被应用程序所创建或使用的对象的唯一整数。Windows使用各种各样的句柄标识诸如应用程序实例,窗口,菜单,位图,GDI对象等。常用的 句柄类型有:HINSTANCE(运行实例句柄)、HWND(窗口句柄)、HMENU(菜单句柄)、HBITMAP(位图句柄)、HPEN(画笔句柄)、HBRUSH(画刷句柄)等。

       作用:通过句柄可以获得相应的对象信息。在Windows中,句柄并非对象的指针,它是系统内部表的索引值。这样能避免应用程序直接与对象的内存地址打交道。

3.Windows编程中窗口的含义是什么?

        一个窗口就是屏幕上的一个矩形区域,它接收使用者的输入并以文字或图形的格式显示输出内容。是应用程序中的基本操作单位,是应用程序和用户之间交互的接口环境,也是系统管理应用程序的基本单位。

4.Windows系统提供的标准控件有哪些?

        Windows系统提供的标准控件主要包括静态控件按钮控件编辑框控件列表框控件组合框控件

        按钮,组合框,编辑框,标题头,热键,图像列表,列表,列表框,进度,多格式文本编辑,滚动条,滑块,旋转按钮,静态文本,状态条,选项卡 等

5.什么是Visual C++ API工程?有哪些类型的文件构成?

       含义:在Visual C++中,把实现程序设计功能的一组相互关联的C++源文件、资源文件、以及支撑这些文件的类的集合称为一个项目(或工程)。Visual C++以项目作为程序开发的基本单位,项目用于管理组成应用程序的所有元素,并由它生成应用程序。

       项目用项目文件DSP(Developer Studio Project )来描述,文件后缀名为.dsp。项目文件保存了项目中所用到的源代码文件和资源文件的信息,如文件名和路径。同时,项目文件还保存了项目的编译设置等信息,如调试版(Debug)或发布版(Release)。

构成:(1)Header files:头文件,里面是一些宏定义,全局变量定义,函数声明。.h等

           (2)Source files:源文件,里面是一些函数定义和主函数。.c ,.cpp等

           (3)Resource files:资源文件,主要存放图标,菜单,文字之类的,主要用来做界面的东西一般都放在这里。.res等

6.Windows常用的消息有哪些? 应用程序如何响应键盘、鼠标消息?

        例如。当用户按下键盘的某个键时,系统就会产生一条特定的消息,表示键盘被按下事件的发生。Windows中常用的消息有:窗口管理消息、初始化消息、输入消息、系统消息、剪切板消息、控件处理消息、控件通知消息、滚动条通知消息、非用户消息,以及应用程序自定义的消息等。

       因为一般的PC只有一个键盘,所以所有运行中的Windows程序必须共用它。Windows将负责把击键消息送到具有输入焦点的那个应用程序的消息队列中去。尽管屏幕上可能同时有几个应用程序窗口,但一个时刻仅有一个窗口有输入焦点。有输入焦点的那个应用程序的标题条是高亮度显示的。当用户按下一个键时,Windows就会发送一个键盘输入消息给有输入焦点的那个应用程序,应用程序会根据输入消息执行相应的任务。

Windows操作系统产生和传递键盘消息的过程如下:

(1)当用户按下某个键时,键盘会检测到这个动作,并通过键盘控制器把扫描码(scan code)传递给Windows的键盘驱动。

(2)键盘驱动程序把这个扫描码转换为键盘虚拟码,然后,键盘驱动程序把该键盘操作的扫描码和虚拟码以及其他信息传递给操作系统。

(3)Windows操作系统的用户模块将获得的按键信息封装在一个键盘消息中,并把该键盘消息发送到应用程序的消息队列中。

(4)应用程序接收到消息后,将对消息进行转换并处理。

参考链接:https://blog.csdn.net/nupt123456789/article/details/7370562

                  https://blog.csdn.net/lin_angle/article/details/1792142

常用消息:窗口管理消息、初始化消息、输入消息、系统消息、剪贴板消息、控制处理消息、控制通知消息、滚动条通知消息、非用户区消息、MDI消息、DDE消息、应用程序自定义的消息

WM_CREATE=$0001;应用程序创建一个窗口

WM_DESTORY=$0002;一个窗口被销毁

WM_MOVE=$0003;移动一个窗口

WM_SIZE=$0005;改变一个窗口的大小

WM_ACTIVATE=$0006;一个窗口被激活或失去激活状态

WM_SETFOCUS=$0007;获得焦点后

WM_LILLFOCUS=$0008;失去焦点

WM_ENABLE=$000A;改变enable状态

WM_SETREDRAW=$000B;设置窗口是否能重画

WM_SETTEXT=$000C;应用程序发送此消息来设置一个窗口的文本

应用程序响应键盘、鼠标消息:

       键盘上每个有意义的键都对应着一个唯一的标识,称为扫描码。WINDOWS系统定会的与设备无关的键的标识称为虚拟码。虚拟码是一种与设备无关的键盘编码,它的值存放在键盘消息的wParam参数中,最的常用的虚拟码已经在windows.h中定义。键盘消息可以分为两类,即按键消息和字符消息。按键消息可以分为两类:系统按键消息和非系统按键消息(系统消息对应于使用那些alt键与相关输入键的组合产生的消息,一般由Windows系统内部直接处理应用程序一般不处理,如果应用程序处理了这些系统键消息,就要调用DefWindowPro()函数以便不影响Windows对他们的处理)。按键消息的两个变量wParam和IParam中包含了雨多的重要消息,其中wParam参数包含了识别按下的键的虚拟码。在WinMain函数的消息循环中包含了TranalateMessage函数,它的主要功能数把按键消息转化为字符消息,但只有当键盘驱动程序把键盘字符映射成Ascll码之后才能产生WM_CHAR消息。

7.事件驱动的程序执行过程?简要描述windows的事件驱动模型。

       事件驱动程序设计是一种全新的程序设计方法,它不是由事件的顺序来控制,而是由事件的发生来控制,而这种事件的发生是随机的、不确定的,并没有预定的顺序,这样就允许程序的用户用各种合理的顺序来安排程序的流程。

        对于需要用户交互的应用程序来说,事假驱动的程序设计有着过程驱动方法无法替代的优点。它是一种面向用户的程序设计方法,它在程序设计过程中除了完成所需功能之外,更多地考虑了用户可能的各种输入,并针对性的设计相应的处理程序。它是一种“被动”式程序设计方法,程序开始运行时,处于等待用户输入事件状态。

执行过程:(1)确定响应事件的元素

                  (2)为确定元素确定需要响应的事件类型

                  (3)为指定元素的指定事件编写相应的事件处理程序

                  (4)将事件处理程序绑定到指定元素的指定事件上

模型:(1)有一个事件队列

           (2)鼠标按下时,往这个队列中增加一个点击事件

           (3)有个循环,不断从队列中取出事件,根据不同事件调用不同函数

           (4)事件一般都各自保存各自的处理函数指针,这样每个消息都有独立处理函数

8.IP地址和端口号在网络程序设计中的作用?(先说是什么)

        IP地址(网际协议地址,Internet Protocol Address)是分配给网络上使用网际协议(IP)的设备的数字标签。

        IP地址作用:通过这个标识号来指定要接收数据的计算机和识别发送的计算机。

        端口号:具有网络功能的应用程序的标识号

        端口号的作用:使用端口号可以找到另一台设备中的一个程序,标识同一台设备中的不同程序。

9.什么是静态、动态链接库?作用是什么?

        静态链接库(Statically-linked library)是一个外部函数与变量的集合体。静态库的文件内容,通常包含一堆程序员自定的变量与函数。

        静态链接库作用:

     (1)代码的装载速度快,执行速度略比动态链接库快

     (2)只需保证在开发者的计算机中有准确的.lib文件,在以二进制形式发布程序时不需考虑在用户的计算机上.lib文件是否存在及版本问题,也可以避免DLL地狱等问题。

       动态链接库(DDL,Dynamic Link Library),动态链接就是把调用的函数所在文件模块(DLL)和调用函数在文件中的位置等信息链接进目标程序,程序运行的时候再从DLL中寻找相应函数代码,因此需要相应DLL文件的支持。

       动态链接库的作用:动态链接的主要目的:把程序与他们使用的特定的函数库版本中分离开来。

     (1)节省内存,减少页面交换

     (2)DLL文件与EXE文件独立,只要输出接口不变(即名称,参数,返回值类型和调用约定不变),更换DLL文件不会对EXE文件造成任何影响,因而极大地提高了可维护性和可扩展性

     (3)不同编程语言编写的程序只要按照函数调用约定就可以调用同一个DLL函数

     (4)适用于大规模的软件开发,使开发过程独立,耦合度小,便于不同开发者和开发组织之间进行开发和测试 

10.windowsAPI程序设计中,资源的主要作用有哪些?

       Windows应用程序可以使用的资源有:加速键,位图,光标,对话框,菜单,工具条,字符串等。在Windows的可执行文件中,资源是独立于代码的,使用单独的Resource Compiler来进行编译,并嵌入到可执行文件中,在编程过程中,代码是可复用的,通过资源的导入导出功能来实现资源的可复用。另外,程序的国际化也是通过资源来实现的。

11.套接字连接过程中要用到下列方法,试说明各方法的功能?哪些方法会发生阻塞?

socket,即套接字的一种通信机制

Shutdown()停止数据传输

Close()终止服务器和客户端的套接字连接,关闭套接字

Bind()将套接字绑定到地址上

Listen()让服务器套接字进入监听状态

Accept()接受客户端的连接请求,会发生阻塞

Send()发送数据

Receive()接收数据

Connect()通过在一个未命名套接字和服务器监听套接字之间建立连接的方法来连接到服务器。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值