📄 见招拆招《windows程序设计》(一) .txt
字号:
见招拆招《Windows程序设计》(一)
作者:Zoologist 于2007-9-16上传
--------------------------------------------------------------------------------
我在读书的时候常犯的一个问题就是经常追求书籍,而不是在追求读了多少,吸收了多少。在学习计算机程序设计上常常很渴望获得一本书,但是当拿到手之后往往束之高阁。更通常的情况是:硬盘中存放着几个G的各种资料,最多在下载的时候看一次标题,在删除的时候看一次标题。
这系列文章将以《Windows程序设计》为蓝本讲述。
[美]Charles Petzold 著,是讲述Windows程序设计的经典图书(销量如何不清楚,不过网上书店一直缺货)。非常厚重,上下2册仿佛2块板砖的。书中是以C语言为例进行讲述,并且只使用API (与之相对应的是 MFC ,将API进行了封装)。
下面的文章将会使用Win32汇编诠释其中的例子。读者需要准备的只是MasmPlus编译器,当然我同时也建议读者安装VC。我使用的是VC6,但不是安装版的,是直接从光盘中拷贝出来VC98整个目录,放在G:\ 下面的,另外,在VC98\Bin中补充上一个mspdb60.dll即可编译书中的第一个程序。也许我们以后会考虑使用VC2003或者VC2005因为据说他们有真正的免费版本。
开始
本书介绍了在Windows 2000/NT/XP下程序写作的方法。这些程序用汇编语言编写并使用原始的Windows Application Programming Interface(API)。如在本章稍后所讨论的,这不是写作Windows程序的唯一方法。然而,无论最终您使用什么方式写作程序,了解Windows API都是非常重要的。
正如您可能知道的,Windows 已成为使用Intel 32位微处理器(例如486和Pentium)的IBM兼容型个人计算机环境上最新的图形操作系统之代表。Windows NT是IBM PC兼容机种以及一些RISC(精简指令集计算机)工作站上使用的Windows工业增强型版本。
使用本书有三个先决条件。首先,您应该从使用者的角度熟悉Windows XP。不要期望可以在不了解Windows使用者接口的情形下开发其应用程序。因此,我建议您在开发程序(或在进行其它工作)时使用执行Windows的机器来跑Windows应用程序。
第二,您应了解汇编语言。如果要写Windows程序,一开始却不想了解汇编语言,那不是一个好主意。我建议您在文字控制台环境中,例如在Windows XP DOS命令提示窗口下提供的环境中学习汇编语言。Windows程序设计有时包括一些非文字模式程序设计的汇编语言部分;在这些情况下,我将针对这些问题提供讨论。但大多数情况下,您应非常熟悉该语言,特别是汇编语言的命令和操作。了解汇编语言执行期链接库的一些相关知识是有帮助的,但不是必要的。
第三,您应该在机器上安装一个适于进行Windows程序设计的32位汇编语言编译器和开发环境。在本书中,假定您正在使用的是Aogo提供的MasmPlus。您可以www.aogosoft.com上获得最新的版本。
到此为止,我将不再假设您具有任何图形使用者接口(如Windows)的程序写作经验。
WINDOWS环境
Windows几乎不需要介绍。然而人们很容易忘记Windows给办公室和家庭桌上型计算机所带来的重大改变。Windows在其早期曾经走过一段坎坷的道路,征服桌上型计算机市场的前途一度相当渺茫。
Windows简史
在1981年秋天IBM PC推出之后不久,MS-DOS就已经很明显成为PC上的主流操作系统。MS-DOS代表Microsoft Disk Operating System(磁盘操作系统)。MS-DOS是一个小型的操作系统。MS-DOS提供给用户一种命令列接口,提供如DIR和TYPE的命令,也可以将应用程序加载内存执行。对于应用程序写作者,它提供了一组函数呼叫,进行文件的输入输出(I/O )。对于其它的外围处理-尤其是将文字或图形写到显示器上-应用程序可以直接存取PC的硬件。
由于内存和硬件的限制,成熟的图形环境缓慢地才到来。当苹果计算机公司不幸的Lisa计算机在1983年1月发表时,它提供了不同于文字模式环境的另一种选择,并在1984年1月成为Macintosh上图形环境的一种标准。尽管Macintosh的市场占有率在下降,但是它仍然被认为是衡量所有其它图形环境的标准。包括Macintosh和Windows的所有图形环境,其实都要归功于Xerox Palo Alto Research Center(PARC)在70年代中期所作的开拓性研究工作。
Windows是由微软在1983年11月(在Lisa之后,Macintosh之前)宣布,并在两年后(1985年11月)发行。在此后的两年中,紧随着Microsoft Windows早期版本1.0之后,又推出了几种改进版本,以支持国际商业市场,并提供新型视讯显示器和打印机的驱动程序。
Windows版本2.0是在1987年11月正式在市场上推出的。该版本对使用者接口做了一些改进。这些改进中最有效的是使用了可重迭式窗口,而Windows 1.0中使用的是并排式窗口。Windows 2.0还增强了键盘和鼠标接口,特别是加入了菜单和对话框。
至此,Windows还只要求Intel 8086或者8088等级的微处理器,以「实际模式」执行,只能存取地址在1MB以下的内存。Windows/386(在Windows 2.0之后不久发行的)使用Intel 386微处理器的「虚拟8086」模式,实现将直接存取硬件的多个MS-DOS程序窗口化和多任务化。为了统一起见,Windows版本2.1被更名为Windows/286。
Windows 3.0是在1990年5月22日发表的。它将Windows/286和Windows/386结合到同一种产品中。Windows 3.0有了一个很大的改变,这就是对Intel的286、386和486微处理器保护模式的支持。这能使Windows和Windows应用程序能存取高达16MB的内存。Windows用于执行程序和维护文件的「外壳」程序得到了全面的改进。Windows 3.0是第一个在家用和办公室市场上取得立足点的版本。
任何Windows的历史介绍都必须包括一些OS/2的说明,OS/2是对DOS和Windows的另一种选择,最初是由Microsoft和IBM合作开发的。OS/2版本1.0(只有文字模式)在Intel 286(或者后来的)微处理器上运行,在1987年末发布。在1988年10月的OS/2版本1.1中出现了管理图形使用者接口的PM(Presentation Manager)。PM最初的设计构想是成为Windows的一种保护模式版本,但是图形API改变程度太大,致使软件生产厂商很难提供对这两种平台的支持。
到1990年9月,IBM和Microsoft之间的冲突达到了高峰,导致这两个公司最后分道扬镳。IBM接管了OS/2,而Microsoft明确表示Windows将是他们操作系统策略的中心。虽然OS/2仍然拥有一些狂热的崇拜者,但是它远不及Windows这样的普及程度。
Microsoft Windows版本3.1是1992年4月发布的,其中包括的几个重要特性是TrueType字体技术(给Windows带来可缩放的轮廓字体)、多媒体(声音和音乐)、对象连结和嵌入(OLE:Object Linking and Embedding)和通用对话框。跟OS/2一样,Windows 3.1只能在保护模式下运作,并且要求至少配置了1MB内存的286或386处理器。
在1993年7月发表的Windows NT是第一个支持Intel 386、486和Pentium微处理器32位保护模式的Windows版本。Windows NT提供32位平坦寻址,并使用32位的指令集。(本章后面我会谈到一些寻址空间的问题)。Windows NT还可以移植到非Intel处理器上,并在几种使用RISC芯片的工作站上执行。
Windows 95是在1995年8月发布的。和Windows NT一样,Windows 95也支持Intel 386或更高等级处理器的32位保护模式。虽然它缺少Windows NT中的某些功能,诸如高安全性和对RISC机器的可移植性等,但是Windows 95具有需要较少硬件资源的优点。
Windows 98是一个发行于1998年6月25日的混合16位/32位的Windows系统,其版本号为4.1。这个新的系统是基于Windows 95上编写的,它改良了硬件标准的支持,例如MMX和AGP。其它特性包括对FAT32文件系统的支持、多显示器、Web TV的支持和整合到Windows图形用户界面的Internet Explorer,称为活动桌面(Active Desktop)。
Windows 98 SE(第二版)发行于1999年6月10日。它包括了一系列的改进,例如Internet Explorer 5、Windows Netmeeting 3、Internet Connection Sharing、对DVD-ROM和对USB的支持。Windows 98将于2006年7月11日起停止重大安全更新。
Windows ME(Windows Millennium Edition)是一个16位/32位混合的Windows系统,由微软公司发行于2000年9月14日。 Windows Me是最后一个基于DOS的混合16位/32位的Windows 9X系列的Windows,其版本号为4.9。其名字有两个意思,一是纪念2000年,Me是千年的意思,另外是指个人运用版,Me是英文中自己的意思。
这个系统是在Windows 95和Windows 98的基础上开发的。它包括相关的小的改善,例如Internet Explorer 5.5。其中最主要的改善是用于与流行的媒体播放软件RealPlayer竞争的Windows Media Player 7。但是Internet Explorer 5.5和Windows Media Player 7都可以在网上免费下载。Movie Maker是这个系统中的一个新的组件。这个程序提供了基本的对视频的编辑和设计功能,对家庭用户来说是简单易学的。
在Windows Me, 最重要的修改是系统不再包括实模式的MS-DOS。这就意味着,与Windows 95和98不同,微软在加载Windows图形界面前隐藏了加载DOS的过程,使得启动时间有所减少。它仍然提供DOS模式,可以运行在窗口中,但是一些 应用程序(如较早的磁盘工具)需要实模式,而不能运行在DOS窗口中。微软把Windows Me的DOS实模式摈弃了,这有助于系统的速度提升,减少了对系统资源的使用。然而这对基于DOS源代码的Windows Me造成了不利影响,即造成了系统比Windows 98更不稳定,甚至造成Windows Me跑得比Windows 98还慢。Windows Me比Windows 98更常有蓝屏死机现象。Windows Me在使用了一段期间后,系统就有明显的变得很慢。
另外Windows Me引进了“系统还原”日志和还原系统,这意味着简化了故障排查和问题解决工作。在概念上,这是一个大的改进:用户不再需要有神秘的DOS行命令的知识就 可以维护和修复系统。实际上,去除了DOS功能对维护来说是一个障碍,而系统还原功能也带来一些麻烦:性能显著的降低;它也被证明并不能有效的胜任一些通 常的错误还原。由于系统每次都自动创建一个先前系统状态的备份,使得非专业人员很难实行一些急需的修改,甚至是删除一个不想要的程序或病毒。
Windows NT系列,包括Windows NT3.1/3.5/3.51,Windows NT 4.0以及Windows 2000。Windows NT是纯32位操作系统,使用先进的NT核心技术,非常稳定。分为面向工作站和高级笔记本的Workstation版本(以及后来的 Professional版),以及面向服务器的Server版。
Windows XP是微软把所有用户要求合成一个操作系统的尝试,与Windows 2000(Windows NT 5.0)一样,它是一个Windows NT系列操作系统(Windows NT 5.1),它包含了Windows 2000所有高效率及安全稳定的性质以及Windows Me所有多媒体的功能。然而作为Windows NT系列的操作系统,付出的代价是丧失了对基于DOS程序的支持。
Windows 2000是一个由微软公司发行于2000年12月19日的32位图形商业性质的操作系统。
Windows 2000有四个版本:Professional、Server、Advanced Server和Datacenter Server。其中Professional也有4个版本,SP1/SP2/SP3/SP4(SP5将不再发布,由于微软可能会将他抛弃), Professional专业版的前一个版本是Windows NT4.0 Works Tation版本。适合移动家庭用户使用,可以用于升级WIN9X和NT4。她以NT4的技术为核心,采用标准化的安全技术,稳定性高,最大的优点是不会再像WIN9X那样频繁的出现非法程序的提示而死机。
Windows 2000 Server是服务器版本,它的前一个版本是Windows NT4.0 server版。即可面向一些中小型的企业内部网络服务器,但它同样可以应付企业、公司......大型网络中的各种应用程序的需要。Server在 NT4的基础上做了大量的改进,在各种功能方面有了更大的提高。
Advanced Server是Server的企业版,它的前一个版本是Windows NT4.0企业版。与Server版不同的是,Advanced Server具有更为强大的特性和功能。它对SMP(对称多处理器)的支持要比Server更好,支持的数目可以达到四路。Datacenter Server是目前为止最强大的服务器系统,可以支持32路SMP系统和64GB的物理内存。该系统可用于大型数据库、经济分析、科学计算以及工程模拟等方面,另外还可用于联机交易处理。
所有版本的Windows 2000都有共同的一些新特征:NTFS5,新的NTFS文件系统;EFS,允许对磁盘上的所有文件进行加密;WDM,增强对硬件的支持。如果是家用,还是选择Professional比较好;如果用于企业内部的服务器就应该选择Server;但如果是用于W EB服务器,那么Advanced Server是最合适的;Datacenter Server对于一般用户来说是用不着,因为它的定位是大型的数据处理。
Windows xp是微软公司发布的一款视窗操作系统。它发行于2001年10月25日,原来的名称是Whistler。微软最初发行了两个版本,家庭版(Home)和专业版(Professional)。家庭版的消费对象是家庭用户,专业版则在家庭版的基础上添加了新的为面向商业的设计的网络认证、双处理器等特性。且家庭版只支持1个处理器,专业版则支持2个。字母XP表示英文单词的“体验”(experience)。Windows XP是基于Windows 2000代码的产品,同时拥有一个新的用户图形界面(叫做月神Luna),它包括了一些细微的修改,其中一些看起来是从Linux的桌面环境 (desktop environmen)诸如KDE中获得的灵感。带有用户图形的登陆界面就是一个例子。此外,Windows XP还引入了一个“基于人物”的用户界面,使得工具条可以访问任务的具体细节。它包括了简化了的Windows 2000的用户安全特性,并整合了防火墙,以用来确保长期以来以着困扰微软的安全问题。
Windows方面
Windows 98和Windows NT/XP/200都是支持32位优先权式多任务(preemptive multitasking)及多线程的图形操作系统。Windows拥有图形使用者接口(GUI ),这种使用者界面也称作「可视化接口」或「图形窗口环境」。有关GUI的概念可追溯至70年代中期,在Alto和Star等机器上以及SmallTalk等环境中由Xerox PARC所作的研究工作。该项研究的成果后来被Apple Computer和Microsoft引入主流并流行起来。虽然有一些争议,但现在已非常清楚,GUI是(Microsoft的Charles Simonyi的说法)一个在个人计算机工业史上集各方面技术大成于一体的最重要产物。
所有GUI都在点矩阵对应的视讯显示器上处理图形。图形提供了使用屏幕的最佳方式、传递信息的可视化丰富多彩环境,以及能够WYSIWYG(what you see is what you get:所见即所得)的图形视讯显示和为书面文件准备好格式化文字输出内容。
在早期,显示器仅用于响应使用者通过键盘输入的文字。在图形使用者接口中,显示器自身成为使用者输入的一个来源。显示器以图标和输入设备(例如按钮和滚动条)的形式显示多种图形对象。使用者可以使用键盘(或者更直接地使用鼠标等指向设备)直接在屏幕上操纵这些对象,拖动图形对象、按下鼠标按钮以及滚动滚动条。
因此,使用者与程序的交流变得更为亲密。这不再是一种从键盘到程序,再到显示器的单向信息流动,使用者已经能够与显示器上的对象直接交互作用了。使用者不再需要花费长时间学习如何使用计算机或掌握新程序了。Windows让这一切成真,因为所有应用程序都有相同的基本外观和感觉。程序占据一个窗口-屏幕上的一块矩形区域。每个窗口由一个标题列标识。大多数程序功能由程序的菜单开始。用户可使用滚动条观察那些无法在一个屏幕中装下的信息。某些菜单项目触发对话框,用户可在其中输入额外的信息。几乎在每个大的Windows程序中都有一个用于开启文件的特殊对话框。该对话框在所有这些Windows程序中看起来都一样(或接近相同),而且几乎总是从同一菜单选项中启动。一旦您了解使用一个Windows程序的方法,您就非常容易学习其它的Windows程序。菜单和对话框允许用户试验一个新程序并探究它的功能。大多数Windows程序同时具有键盘接口和鼠标接口。虽然Windows程序的大多数功能可通过键盘控制,但使用鼠标要容易得多。
从程序写作者的角度看,一致的使用者接口来自于Windows建构菜单和对话框的内置程序。所有菜单都有同样的键盘和鼠标接口,因为这项工作是由Windows处理,而不是由应用程序处理。为便于多个程序的使用,以及这些程序间信息的交换,Windows支持多任务。在同一时刻能有多个Windows程序显示并运行。每个程序在屏幕上占据一个窗口。用户可在屏幕上移动窗口,改变它们的大小,在不同程序间切换,并从一个程序向另一个程序传送数据。因为这些窗口看起来有些像桌面上的纸(当然,这是计算机还未占据办公桌之前的年代),Windows有时被称作:一个显示多个程序的「具象化桌面」。
Windows的早期版本使用一种「非优先权式(non-preemptive)」的多任务系统。这意味着Windows不使用系统定时器将处理时间分配给系统中运行的多个应用程序,程序必须自愿放弃控制以便其它程序运行。在Windows NT和Windows 98中,多任务是优先权式的,而且程序自身可分割成近乎同时执行的多个执行绪。操作系统不对内存进行管理便无法实现多任务。当新程序启动、旧程序终止时,内存会出现碎裂空间。系统必须能够将闲置的内存空间组织在一起,因此系统必须能够移动内存中的程序代码和数据块。
即使是在8088微处理器上跑的Windows 1.0也能进行这类内存管理。在实际模式限制下,这种能力被认为是软件工程一个令人惊讶的成就。在Windows 1.0中,PC硬件结构的640KB内存限制,在不要求任何额外内存的情况下被有效地扩展了。但Microsoft并未就此停步:Windows 2.0允许Windows应用程序存取扩充内存(EMS);Windows 3.0在保护模式下,允许Windows应用程序存取高达16MB的扩展内存。Windows NT/XP/2000和Windows 98通过成熟的32位操作系统及平坦寻址空间,摆脱了这些旧的限制。Windows上执行的程序可共享在称为「动态链接库」的文件中的例程。Windows包括一个机制,能够在执行时连结使用动态链接库中例程的程序。Windows自身基本上就是一个动态链接库的集合。Windows是一个图形接口,Windows程序能够在显示器和打印机上充分利用图形和格式化文字。图形接口不仅在外观上更有吸引力,而且还能够让使用者传递高层次的信息。
Windows应用程序不能直接存取屏幕和打印机等图形显示设备硬件。相反,Windows提供一种图形程序语言(称作图形设备接口,或者GDI),使显示图形和格式化文字更容易。Windows虚拟化了显示硬件,使为Windows编写的程序可使用任何具有Windows设备驱动程序的视频卡或打印机,而程序无需确定系统相连的设备类型。对Windows开发者来说,将与设备无关的图形接口输出到IBM PC上不是件轻松的事。PC的设计是基于开放式架构的原则,鼓励第三方硬件制造商为PC开发接口设备,而且开发了大量这样的设备。虽然出现了多种标准,PC上的传统MS-DOS程序仍不得不各自支持许多不同的硬设备。这对MS-DOS字处理软件来说非常普遍,它们连同1到2张有许多小文件的磁盘一同销售,每个文件支持一种特定的打印机。Windows程序不要求每个应用程序都自行开发这些驱动程序,因为这种支持是Windows的一部分。
动态链接
Windows运作机制的核心是一个称作「动态链接」的概念。Windows提供了应用程序丰富的可呼叫函数,大多数用于运行其使用者接口和在显示器上显示文字和图形。这些函数采用动态链接库(Dynamic Linking Library,DLL)的方式撰写。这些动态链接库是些具有.DLL或者有时是.EXE扩展名的文件,在Windows 98中通常位于\WINDOWS\SYSTEM子目录中,在Windows NT/XP/2000中通常位于\WINNT\SYSTEM和\WINNT\SYSTEM32子目录中。
在早期,Windows的主要部分仅通过三个动态链接库实作。这代表了Windows的三个主要子系统,它们被称作Kernel、User和GDI。当子系统的数目在Windows最近版本中增多时,大多数典型的Windows程序产生的函数呼叫仍对应到这三个模块之一。Kernel(日前由16位的KRNL386.EXE和32位的KERNEL32.DLL实现)处理所有在传统上由操作系统核心处理的事务-内存管理、文件I/O和多任务管理。User(由16位的USER.EXE和32位的USER32.DLL实作)指使用者接口,实作所有窗口运作机制。GDI(由16位的GDI.EXE和32位的GDI32.DLL实作)是一个图形设备接口,允许程序在屏幕和打印机上显示文字和图形。
Windows 98/XP/2000支持应用程序可使用的上千种函数呼叫。每个函数都有一个描述名称,例如CreateWindow。该函数(如您所猜想的)为程序建立新窗口。所有应用程序可以使用的Windows函数都在表头文件里预先声明过。在Windows程序中,使用Windows函数的方式通常与使用如strlen等C语言链接库函数的方式相同。主要的区别在于C语言链接库函数的机械码连结到您的程序代码中,而Windows函数的程序代码在您程序执行文件外的DLL中。当您执行Windows程序时,它通过一个称作「动态链接」的过程与Windows相接。一个Windows的.EXE文件中有使用到的不同动态链接库的参考数据,所使用的函数即在那些动态链接库中。当Windows程序被加载到内存中时,程序中的呼叫被指向DLL函数的入口。如果该DLL不在内存中,就把它加载到内存中。
当您连结Windows程序以产生一个可执行文件时,您必须连结程序开发环境提供的特定「引用链接库(import library)」。这些引用链接库包含了动态链接库名称和所有Windows函数呼叫的引用信息。连结程序使用该信息在.EXE文件中建立一个表格,在加载程序时,Windows使用它将呼叫转换为Windows函数。
WINDOWS程序设计选项
为说明Windows程序设计的多种技术,本书提供了许多范例程序。这些程序使用C语言撰写并原原本本的使用Windows API来开发程序。我将这种方法称作「古典」Windows程序设计。这是我们在1985年为Windows 1.0写程序的方法,它今天仍是写作Windows程序的有效方法。
API和内存模式
对于程序写作者来说,操作系统是由本身的API定义的。API包含了所有应用程序能够使用的操作系统函数呼叫,同时包含了相关的数据型态和结构。在Windows中,API还意味着一个特殊的程序架构,我们将在每章的开头进行研究。
一般而言,Windows API自Windows 1.0以来一直保持一致,没什么重大改变。具有Windows 98/XP/2000程序写作经验的Windows程序写作者会对Windows 1.0程序的原始码感觉非常熟悉。API改变的一种方式是进行增强。Windows 1.0支持不到450个函数呼叫,现在已有了上千种函数呼叫。Windows API和它的语法的最大变化来自于从16位架构向32位架构转化的过程中。Windows从版本1.0到版本3.1使用16位Intel 8086、8088、和286微处理器上所谓的分段内存模式,由于兼容性的原因,从386开始的32位Intel微处理器也支持该模式。在这种模式下,微处理器缓存器的大小为16位,因此C的int数据型态也是16位宽。在分段内存模式下,内存地址由两个部分组成-一个16位段(segment)指针和一个16位偏移量(offset)指标。从程序写作者的角度看,这非常凌乱并带来了long或far指针(包括段地址和偏移量地址)和short或near指标(包括带有假定段地址的偏移量地址)的区别。
从Windows NT和Windows 95开始,Windows支持使用Intel 386、486和Pentium处理器32位模式下的32位平坦寻址内存模式。C语言的int数据型态也扩展为32位的值。为32位版本Windows编写的程序使用简单的平坦线性空间寻址的32位指针值。用于16位版本Windows的API(Windows 1.0到Windows 3.1)现在称作Win16。用于32位版本Windows的API(Windows 95、Windows 98和所有版本的Windows XP/2000/NT)现在称作Win32。许多函数呼叫在从Win16到Win32的转变中保持相同,但有些需要增强。例如,图像坐标点由Win16中的16位值变为Win32中的32位值。此外,某些Win16函数呼叫返回一个包含在32位整数值中的二维坐标点。这在Win32中不可能,因此增加的新函数呼叫以不同方式运作。
所有32位版本的Windows都支持Win16 API(以确保和旧有应用程序兼容)和Win32 API(以运行新应用程序)。非常有趣的是,Windows NT与Windows 95及Windows 98的工作方式不同。在Windows NT中,Win16函数呼叫通过一个转换层被转化为Win32函数呼叫,然后被操作系统处理。在Windows 95和Windows 98中,该操作正相反:Win32函数呼叫通过转换层转换为Win16函数呼叫,再由操作系统处理。
在同一时刻有两个不同的Windows API集(至少名称不同)。Win32s (「s」代表「subset(子集)」)是一个API,允许程序写作者编写在Windows 3.1上执行的32位应用程序。该API仅支持已被Win16支持的32位函数版本。此外,Windows 95 API一度被称作Win32c(「c」代表「compatibility(兼容性)」),但该术语已被抛弃了。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -