Windows API
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一章
1.2
在同一时刻能有多个Windows程序显示并运行。
16位Windows是一种非优先权式的多工系统。
Windows执行的应用程序可共享称为“动态链接库”文件中的常项。常项是指实例化的函数或程序,即函数都是参数实例化的函数,程序都是参数及变量都实例化的程序。
1.3
API是应用程序接口(applicaton programming interface)的缩写。Windows操作系统本身是由API定义的。API包含了所有应用程序能够使用,操作系统能够执行的函数调用,同时,API也包含了相关的描述形态和结构的文件。
32位模式下的32位平坦定址存储器模式。
1.7
MessageBox函数相当于C程序中的printf,用于显示短信息,作用是在窗口中央显示信息M essage(NULL, TEXT(“Helli, Windows 98!”), TEXT(“HelloMsg”), 0);
第一个参数:窗口代号,指示在哪个窗口中进行显示。
第二个参数:在窗口显示的字符串。
第三个参数:在窗口标题上显示的字符串。
第四个参数:MessageBox函数生成按钮。
1.8
提出所有字符编码都用16位二进制,这种编码称为Unicode。Unicode是ASCII字符集的扩展。Unicode打算作为ASCII的补充,但可能Unicode最终将代替ASCII码。
Unicode才是真正解决的方案,和含有1字节代码与2字节代码的双字节字符集(DBCS)不同,Unicode是统一的16位系统,这就允许表示65536个字符。
1.9
用多个字节存储一个字符称为宽字符(wchar),C中用wchar_t表示宽字符数据类型,他在WCHAR.H中定义,如下所示:
typedef unsigned short whar_t;
1.10
在Windows中仍然可以使用sprintf及sprintf系列中的其它函数来显示文字。这些函数除了将内容格式化输出到函数第一个参数所提供的字符串缓冲区外,其功能与printf相同。
第二章
2.2
32位保护模式的工作原理类似于16位保护模式,出发点还是一个“段地址,偏移地址”序列。
2.4
线程是程序中能独立执行的最小程序块。
抢占式多任务:具有最高优先级的线程就是当前正在运行的那个线程。驻留在CPU内正在运行的线程会在什么时候中止呢?一种情况是属于它的时间片已到期,另一种情况是加入了另一个优先级更高的线程。通过不断从一个线程到另一个线程的切换,给人的感觉是线程的执行是同步进行的。线层并非随时都需要运行,经常发生的情况是某个线程需要等待用户的输入,另一个线程的信息或者等待I/O请求,否则无法执行下去。有些线程也许本来就处于挂起状态。不管当前情况如何,在多任务多线程环境里,线程的同步是至关重要的。此外,所有线程都必须对某些物理设备进行共享,例如键盘、鼠标、屏幕等。叠置窗口、多个输入请求、特定的I/O、优先级的提高都是Win32系统实现抢占式多任务应该解决的关键。
线程是系统调度用的能够执行的最小执行代码段。
2.5
在32位Windows里,应用程序的每个线程都有输入消息队列。和16位Windows比较起来运作方式也发生了变化。系统中专门设置了一个线程,它称为“原始输入线程”,由它负责把系统队列中的消息传送给线程的输入消息队列,不管系统正在执行什么处理,也不管整体的消息流如何,“原始输入线程”的传送操作与他们无关而始终处于就绪状态,即“原始输入线程”永远不会挂起。
第三章
3.1
资源文件与资源描述文件(.RC):正文资源石油菜单模板、字符串模板、加速键模板、对话框模板产生的资源。二进制资源包括图标、游标、字体等。
由于一个应用程序或一个进程可能用到很多资源,把应用程序或进程用到的资源资源记录在一个文件中,这个文件称为资源描述文件(.RC),简称RC文件。
3.2
为什么要学Windows API:Windows API是当今世界上最著名的API,由于Windows系统本身也是基于API实现的,所以,只有学习好Windows API,才能真正理解Windows系统,才能真正理解Windows应用程序。由此可见,学习与理解API是掌握现有计算机软件的基础中的基础,是掌握Windows编程的基础中的基础,是任何其他Windows编程的“本”。
三个核心API:16位:USER.EXEGDI.EXE KRNL386.EXE
32位:USER32.DLL GDI32.DLL KERNEL32.DLL
3.5
GDI.EXE和32位的GDI32.DLL是图形界面,它用于程序在屏幕和打印机上显示文字和图形。静态链接库和动态链接库:在编写高级语言程序时,势必会调用许多函数,这些函数的机器码在链接过程中会合并到程序本身中,这就称为静态链接。动态链接的目的就是希望让相同的部分只要一个备份。这一份公用的机器码最好放在一个公用的库中,这个库称为动态链接库。程序执行到这个函数时,就到动态链接库中去取用,这种执行时进行链接的方法称为动态链接。
3.7
句柄与代号:句柄来源于文件的编译,它是编译以后能唯一地用来代表一个文件的整数。进入Windows时期,应用程序建立一个实例,也用一个整数来代表。建立一个窗口有也要用一个整数来代表,建立图标、画刷、游标等编译程序都要给一个整数唯一地表示它们,于是统一地把它们成为代号。代号其实就是内部表格的索引值,Windows通过它到内部表格中去存取有关信息,应用程序,应用程序的实例只能处理到代号,而不能直接存取内部表格中的信息。如果自由存取内部表格中的信息,势必破坏Windows的多任务环境。因此通过代号间接存取数据的结构是极其重要的。随着Windows的发展,特别是面向对象编程的出现,因此,32位Windows中,每个对象都有一个唯一的代号,Windows操作系统就是通过代号来管理系统的。
3.8
消息队列:Windows操作系统负责收集输入消息并把它存入系统消息队列(system queue),然后由操作系统再分送给应用程序消息队列(application queue),以供应用程序的消息循环来读取。
第四章