winapi简介

合集下载

C++WINDOWSAPI第2章WindowsAPI概要

C++WINDOWSAPI第2章WindowsAPI概要

C++WINDOWSAPI第2章WindowsAPI概要⽬录2.1 Windows数据类型.. 12.1.1 Windows数据类型⽰例.. 12.1.2 Windows 数据类型与标准C 数据类型的关系.. 52.1.3 Windows 数据类型与Windows API 52.1.4 Windows 中的数据结构.. 62.2 Windows API 的功能分类.. 72.2.1 系统基本服务.. 72.2.2 系统管理.. 92.2.3 ⽤户界⾯.. 92.2.4 图像和多媒体.. 152.2.5 ⽹络.. 152.2.6 其他功能.. 152.3 Windows API核⼼DLL. 162.3.1 Kerne132.dll 162.3.2 User32.dll 162.3.3 Gdi32.dll 162.3.4 标准C函数.. 172.3.5 其他Dll 172.4 Unicode和多字节.. 172.4.1 W版本和A版本的API 212.4.2 Unicode与ASGII的转换.. 222.4.3 对Windows程序设计规范的建议.. 222.5 ⼩结.. 232.1 Windows数据类型Windows API 使⽤了很多 Windows ⾃⼰定义的数据类型。

读者可能较为熟悉 C 语⾔或 C++语⾔的数据类型。

要熟练使⽤ Windows API 必须要熟悉 Windows 数据类型。

这些数据类型是Windows 特有的。

在 SDK 的相关头⽂件中有定义。

在众多的Windows 数据类型中,最常⽤的有 DWORD、HANDLE、LPTSTR、WORD、BYTE、CHAR 等。

在 Windows 系统中,DWORD ⽤于表⽰⽆符号整型的数据,意为 double word,32位。

在⼀般情况下 BYTE 是 8 位的,⽽ WORD 是 16 位,DWORD 就是 32 位的。

Windows 系统的应⽤程序中还具有⼀个特有的数据类型-HANDLE,通常 HANDLE 类型的变量⽤于唯⼀标识⼀个“对象”,如窗⼝、控件、⽂件等,Windows 平台中存在众多这样的对象,对象是程序操作的⽬标。

黑客编程——了解Windows机制、API编程简介、Windows 网络协议、服务器和客户端编程、多线程编程介绍

黑客编程——了解Windows机制、API编程简介、Windows 网络协议、服务器和客户端编程、多线程编程介绍

第一节了解Windows机制Windows 是一个“基于事件的,消息驱动的”操作系统。

在Windows下执行一个程序,只要用户进行了影响窗口的动作(如改变窗口大小或移动、单击鼠标等)该动作就会触发一个相应的“事件”系统每次检测到一个事件时,就会给程序发送一个“消息”,从而使程序可以处理该事件。

每个Windows 应用程序都是基于事件和消息的,而且包含一个主事件循环,它不停地、反复地检测是否有用户事件发生。

每次检测到一个用户事件,程序就对该事件做出响应,处理完再等待下一个事件的发生。

Windows 下的应用程序不断地重复这一过程,直至用户终止程序,用代码来描述实际上也就是一个消息处理过程的while循环语句。

下面便简单介绍一下与Windows 系统密切相关的几个基本概念:1:窗口:这是我要说的第一个概念。

窗口是Windows本身以及Windows 环境下的应用程序的基本界面单位,但是很多人都误以为只有具有标题栏、状态栏、最大化、最小化按钮这样标准的方框才叫窗口。

其实窗口的概念很广,例如按钮和对话框等也是窗口,只不过是一种特殊化窗口罢了。

从用户的角度看,窗口就是显示在屏幕上的一个矩形区域,其外观独立于应用程序,事实上它就是生成该窗口的应用程序与用户间的直观接口;从应用程序的角度看,窗口是受其控制的一部分矩形屏幕区。

应用程序生成并控制与窗口有关的一切内容,包括窗口的大小、风格、位置以及窗口内显示的内容等。

用户打开一个应用程序后,程序将创建一个窗口,并在那里默默地等待用户的要求。

每当用户选择窗口中的选项,程序即对此做出响应。

2:程序:通常说的程序都是指一个能让计算机识别的文件,接触得最多的便是.exe型的可执行文件.3:进程:说到进程,学过《操作系统》的人都很清楚,所谓进程就是应用程序的执行实例(或称一个执行程序)需要注意的是:进程是程序动态的描述,而上面说到的程序是静态的描述,两者有本质的区别。

举个例子,从网上Down了一个瑞星杀毒软件到C盘但没有运行,那个.exe 可执行文件叫做程序,它是一个二进制码的文件。

Windows API

Windows API

第一章1.2在同一时刻能有多个Windows程序显示并运行。

16位Windows是一种非优先权式的多工系统。

Windows执行的应用程序可共享称为“动态链接库”文件中的常项。

常项是指实例化的函数或程序,即函数都是参数实例化的函数,程序都是参数及变量都实例化的程序。

1.3API是应用程序接口(applicaton programming interface)的缩写。

Windows操作系统本身是由API定义的。

API包含了所有应用程序能够使用,操作系统能够执行的函数调用,同时,API也包含了相关的描述形态和结构的文件。

32位模式下的32位平坦定址存储器模式。

1.7MessageBox函数相当于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相同。

WindowsAPI教程(一)WindowAPI概要

WindowsAPI教程(一)WindowAPI概要

WindowsAPI 教程(一)WindowAPI 概要Windows API 教程(一) Window API 概要Posted on 2013 年 4 月 23 日 by lellansinhello Windows 编程以下代码可以在 vc6.0 以及vs 系列的IDE 上运行1 2 3 4 5 6 #include <windows.h> int main() { MessageBox(NULL, (LPCSTR)"hello, windows programming",(LPCSTR)"Title", MB_OK); return 0; } 如果提示找不到 windows.h 那么很有可能是你装的不是完整版的vc6.0 亦或者,你用的不是微软的工具(上面列举的都是微软的)那么,不解释,你懂的。

windows 这个操作系统本身就是微软公司的,所以如果你想在windows 上面做开发的话,首先推荐的是微软自己的 visual studio 系列IDE 。

如果你是想学习的话推荐使用 visual studio 2012(据说要win7 64位才能装),如果希望你的程序能在一般的电脑上能跑的话,那么避免麻烦还是推荐使用 visual studio 2010 了。

(原因本站也有相关博文,有兴趣的可以找找)Windows 数据类型想要学习windwos 编程,第一步就需要了解 windows 编程所常用的数据类型。

Windows API 中定义了很多 Windows 自己定义的数据类型。

对于函数的入口参数、返回值以及一些数据结构等等都使用的是 windows 数据类型,所以这也是一个必不可少的步骤。

如果你对C 语言或者C++的数据类型比较熟悉的话,那么对于一些基础的内容这个过程就是慢慢熟悉的过程。

windef.h1 2 typedef int INT; /* 整形 */3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 typedef unsigned int UINT; /* 无符号整形 */ typedef unsigned int *PUINT; /* 无符号整形指针 */typedef int BOOL; /* 布尔类型 */typedef unsigned char BYTE; /* 字节 */typedef unsigned short WORD; /* WORD (无符号短整型) */typedef unsigned long DWORD; /* DOUBLE WORD (无符号长整形)*/typedef float FLOAT; /* 浮点型 */typedef FLOAT *PFLOAT; /* 指向float 类型指针 */typedef BOOL near *PBOOL; /* 指向布尔类型指针 */typedef BOOL far *LPBOOL;typedef BYTE near *PBYTE; /* 指向字节类型指针 */typedef BYTE far *LPBYTE;typedef int near *PINT; /* 整形指针 */ typedef int far *LPINT;typedef WORD near *PWORD; /* 指向WORD 类型的指针 */typedef WORD far *LPWORD;typedef long far *LPLONG; /* 指向长整形的指针 */typedef DWORD near *PDWORD; /* 指向DWORD 类型的指针 */typedef DWORD far *LPDWORD;typedef void far *LPVOID; /* 指向void 类型的指针 */typedef CONST void far *LPCVOID; /* 指向void 类型的常指针 */简单说下,大部分类型都没有什么离奇的地方,可能很多人会对那个far 和near 觉得有疑问,实际上F12查看定义会发现他们就定义上方1 2 #define far#define near看到这里你是否还是有疑问?那么博主这里直接说了,这个 far 和 near 只是用来标识变量的新旧的(预处理阶段far 和near 会被替换成空字符串)。

windows_api_帮助文档

windows_api_帮助文档

编者目录第一章Win32 API概论 (1)1.1 为什么使用Win32 API (1)1.2 Win32 API简介 (1)1.3 综述 (11)第二章窗口管理函数(Windows Control Function) (13)2.1 易用特性函数(Accessibility Features) (13)2.2 按钮函数(Button) (20)2.3 插入标记(^)函数(Caret) (21)2.4 组合框函数(Combo box) (24)2.5 通用对话框函数(Common Dialog Box) (25)2.6 标函数(Cursor) (36)2.7 对话框函数(Dialog Box) (40)2.8 编辑控制函数(Edit Control) (54)2.9 图标函数(Icon) (54)2.10 键盘加速器函数(Keyboard Accelerator) (61)2.11 键盘输入函数(Keyboard InPut) (63)2.12 列表框函数(List box) (75)2.13 菜单函数(Menu) (76)2.14 消息和消息队列函数(Message and Message Queue) (90)2.15 鼠标输入函数(Mouse Input) (100)2.16 多文档接口函数(Multiple Document Interface) (103)2.17 资源函数(Resource) (105)2.18 滚动条函数(Scroll Bar) (113)2.19 窗口函数(Window) (119)2.20 窗口类函数(Window Class) (144)2.21 窗口过程函数(Window Procedure) (150)2.22 窗口属性函数(Window Property) (152)第三章图形设备接口函数(Graphic Device Interface Function) (155)3.1 位图函数(Bitmap) (155)3.2 笔刷函数(Brush) (171)3.3 剪切函数(Clipping) (176)3.4 颜色函数(Color) (179)3.5 坐标空间与变换函数(Coordinate Space Transformation) (186)3.6 设备环境函数(Device Context) (195)3.7 填充形态函数(Filled shape) (211)3.8 字体和正文函数(Font and Text) (215)3.9 ICM 2.0函数 (238)3.10 线段和曲线函数(Line and Curve) (295)3.11 图元文件函数(Metafile) (300)3.12 多显示器函数(Multiple Display Monitors) (311)3.13 绘图函数和画图函数(Painting and Drawing) (313)3.14 路径函数(Path) (328)3.15 画笔函数(Pen) (332)3.16 打印及打印假脱机程序函数(Printing and Print Spooler) (334)3.17 矩形函数(Rectangle) (371)3.18 区域函数(Region) (374)第四章系统服务函数(System Service Function) (383)4.1 访问控制函数(Access Control) (383)4.2 原子函数(Atom) (406)4.3 客户/服务器访问控制函数(Client/Server Access Control) (409)4.4 剪贴板函数(Clipboard) (431)4.5 通信函数(Communication) (436)4.6 控制台函数(Console) (444)4.7 数据解压库函数(Data Decompression Library) (463)4.8 调试函数(Debugging) (466)4.9 设备输入输出函数(Device Input and Output) (472)4.10 动态数据交换函数(Dynamic Data Exchange) (474)4.11 动态数据交换管理函数(Dynamic Data Exchange Management) (476)4.12 动态链接库函数(Dynamic-Link Library) (489)4.13 错误函数(Error) (496)4.14 事件日志函数(Event Logging) (499)4.15 文件函数(File) (503)4.16 文件安装库函数(File Installation Library) (542)4.17 文件映射函数(File Mapping) (546)4.18 文件系统函数File System) (551)4.19 句柄和对象函数(Handle and Object) (556)4.20 挂钩函数(Hook) (560)4.21 ImageHlp函数 (572)4.22 大整数操作函数(Iarge Integer Operations) (594)4.23 低层访问控制函数(Low-Level Access Control) (596)4.24 LSAPI函数 (617)4.25 邮槽函数(Mailslot) (622)4.26 内存管理函数(Memory Management) (623)4.27 管道函数(Pipe) (655)4.28 电源管理函数(Power Management) (663)4.29 进程和线程函数(Process and Thread) (666)4.30 注册表函数(Registry) (700)4.31 字符串操作函数(String Manipulation) (724)4.32 结构化异常处理函数(Structured Exception Handling) (742)4.33 同步函数(Synchronization) (745)4.34 系统信息函数(System Information) (766)4.35 系统消息函数(System Message) (780)4.36 系统关机函数(System Shutdown) (781)4.37 磁带备份函数(Tape Backup) (783)4.38 时间函数(Time) (789)4.39 计时器函数(Timer) (795)4.40 工具帮助函数(Tool Help) (796)4.41 窗口站和桌面函数(Window Station and Desktop) (799)4.42 Windows NT 4.0访问控制函数(Window NT 4.0 Access-Control) (808)4.43 WinTrust函数(WinTrust) (814)第五章国际特性函数(International Peatures Punction)时性 (815)5.1 输入方法编辑函数(Input Method Editor) (815)5.2 国家语言支持函数(National Language Support) (828)5.3 Unicode和字符集函数(Unicode and Character Set) (843)第六章网络服务函数(Networding Service Function) (849)6.1 数据链路控制函数(DLC) (849)6.2 网络函数(Net) (849)6.3 NetBIOS函数 (896)6.4 网络DDE函数(Networking DDE) (897)6.5 RAS服务器管理函数(RAS Server Administration) (901)6.6 远程访问服务函数(Remote Access Administration) (910)6.7 服务函数(Service) (929)6.8 Windows网络函数(Windows Networking) (930)附录1 如何在VB中调用DLL API (945)1 DLL API的声明 (945)2 DLL API的调用 (947)附录2 在Delphi中直接调用Windows API (953)第一章Win32 API概论1.1为什么使用Wu32 API在Windows程序设计领域处于发展初期时,Windows程序员可使用的编程工具唯有API 函数。

api详细解释

api详细解释

当我们使用着漂亮的界面,方便快捷的应用程序的时候。

我们才会发现,以前曾编写的程序是多么的粗糙(TC编写的程序)。

简单的界面,16色的显示系统,大大的落后于计算机的发展。

简单的说就是杀鸡用牛刀。

如何该改变这种情况呢?Microsoft公司在推出windows操作系统的时候给出了简单易行的解决方案。

这就是WINDOWS平台API应用程序接口。

当然API也是发展的,它从WIN 16 API发展到了现在普遍使用的WIN 32 API。

只有充分理解API函数功能和用法,才能深入到WINDOWS系统的内部,才能充分挖掘出操作系统给我们提供的强大功能。

现在就让我们放弃那DOS应用程序,进入WINDOWS编程的海洋之中吧。

要想了解WINDOWS API那么我们必须先了解WINDOWS下的程序是如何进行驱动的。

同学们可以很清楚的发现到,当你在使用WINDOWS记事本的时候,当键盘输入字符的时候字就会出现在屏幕上。

当你移动鼠标的时候,光标就会在屏幕上移动。

双击鼠标、单击鼠标就会有相应的事件发生。

这些都是由于WINDOWS具有的事件驱动的属性造成的。

比如说当你按下键盘的字符键的时候,消息队列就会向程序发送WM_CHAR的消息,如果你所写的程序中含有处理这个消息的函数,程序就会执行它。

为了更好的了解WINDOWS编程,这里我必须介绍几个基本的概念:1,句柄:它是WINDOWS编程的基础。

一个句柄是指WINDOWS在内存中使用的一个唯一的整数质,是一个4个字节长的数值,用于标识应用程序中不同对象和相同对象的不同实例。

这里我列出几种WINDOWS常用的句柄:HWND: 标示窗口句柄HINSTANCE:标示当前实例句柄HCOURSOR:标示光标句柄HFONT: 标示字体句柄HPEN:标示画笔句柄HBRUSH:标示画刷句柄HDC:标示设备环境句柄HBITMP:标示位图句柄HICON:标示图标句柄HMENU:标示菜单句柄HFILE:标示文件句柄由于WINDOWS应用程序利用WINDOWS消息来与其它的WINDOWS应用程序及WINDOWS系统进行消息交换。

什么是WinAPI

什么是WinAPI

什么是WinAPI视窗操作系统应用程序接口(Windows API),有非正式的简称法为WinAPI,是微软对于Windows操作系统中可用的内核应用程序编程接口的称法。

它设计为由C/C++程序调用,而且它也是应用软件与Windows系统最直接的交互方式。

而大多数驱动程序所需要的对Windows系统的更底层次访问接口,由所用版本的Windows的Native API来提供接口。

Windows有一个软件开发包(SDK, software development kit)提供相应的文档和工具,以使程序员开发使用Windows API 的软件和利用Windows技术。

历史Windows API总会为程序员提供大量的构建不同Windows的底层结构,这有助于为Windows程序员开发应用程序提供大量的灵活性和功能。

但是,它同样使Windows applications要负责处理大量底层且有时是繁琐的与图形用户界面(GUI)相关的操作。

Charles Petzold, 许多有关Windows API的畅销书的作者曾经说过:[1]“ The original hello-world program in the Windows 1.0 SDK was a bit of a scandal. HELLO.C was about 150 lines long, and the HELLO.RC resource script had another 20 or so more lines. (...) Veteran C programmers often curled up in horror or laughter when encountering the Windows hello-world program. ” —Charles Petzold, Programming Microsoft Windows with C#常用的例子程序Hello world程序,通常是用来演示一个系统上最简单的程序(即打印一行"Hello World")。

WindowsAPI串口编程参考

WindowsAPI串口编程参考

WindowsAPI串口编程参考(一)Windows API串口通信编程概述Windows环境下的串口编程与DOS环境下的串口编程有很大不同。

Windows环境下的编程的最大特征之一就是设备无关性,它通过设备驱动程序将Windows应用程序同不同的外部设备隔离。

Windows封装了Windows的通信机制,这种方式称为通信API,Windows程序可以利用Windows通信API进行编程,不用对硬件直接进行操作。

这种体系被称为Windows开放式服务体系(WOSA,Windows Open Services Architectures)。

早期的Windows3.x与Windows 9x/NT/2000的通信API有很大不同,在16位的串行通信程序中,一般使用16位的Windows API 通信函数。

为使大家对串口通信有一全面的理解,下面简单介绍一下16位的Windows API通信函数:(1)打开和关闭串口OpenComm()打开串口资源,并指定输入、输出缓冲区的大小(以字节计);CloseComm()关闭串口;例:int idComDev;idComdev=OpenComm(“COM1”,1024,512);CloseComm(idComDev);(2) 初始化串口BuildCommDCB()、setCommState()填写设备控制块DCB,然后对已打开的串口进行参数配置,例:DCB dcb;BuildCommDCB(〝COM1:2400,n,8,1〞,&dcb);SetCommState(&dcb);(3) 对串口进行读写ReadComm、WriteComm()对串口进行读写操作,即数据的接收和发送。

例:char *m_pReceive; int count;ReadComm(idComDev,m_pReceive,count);Char wr[30]; int count2;WriteComm(idComDev,wr,count2);通过对以上的描述我们可以看出,16位以下的串口通信程序最大的特点就在于串口等外部设备的操作有自己特有的API函数。

windapi手册

windapi手册

windapi手册摘要:1.引言2.WindAPI 简介3.WindAPI 的功能4.WindAPI 的使用方法5.WindAPI 的示例6.WindAPI 的常见问题及解答7.总结正文:【引言】WindAPI 是一款非常实用的编程接口,它可以帮助开发者快速地实现各种功能。

在这篇文章中,我们将详细介绍WindAPI 的使用方法及其功能。

【WindAPI 简介】WindAPI,全称Windows API,是微软提供的一套用于开发Windows 应用程序的编程接口。

它包含了大量可用于实现各种功能的函数,涵盖了文件操作、内存管理、系统设置等多个领域。

通过使用WindAPI,开发者可以更加高效地编写代码,实现更加复杂的功能。

【WindAPI 的功能】WindAPI 具有丰富的功能,主要包括以下几个方面:1.文件操作:WindAPI 提供了大量文件操作相关的函数,如创建、删除、重命名、读取、写入等,方便开发者进行文件管理。

2.内存管理:WindAPI 提供了内存分配、释放以及数据拷贝等函数,帮助开发者轻松实现内存管理。

3.系统设置:WindAPI 提供了许多与系统设置相关的函数,如更改桌面背景、设置系统时间等。

4.用户界面:WindAPI 提供了许多用户界面相关的函数,如创建窗口、处理用户输入等,方便开发者构建用户界面。

5.其他功能:WindAPI 还包括许多其他功能,如注册表操作、网络通信、安全控制等,为开发者提供了强大的支持。

【WindAPI 的使用方法】要使用WindAPI,首先需要包含相应的头文件。

在C++中,通常需要包含<windows.h>头文件。

然后,通过调用相应的函数,即可实现所需功能。

在使用WindAPI 时,需要注意函数的返回值和参数,以确保正确地调用函数。

【WindAPI 的示例】以下是一个简单的使用WindAPI 的示例,用于创建一个窗口:```cpp#include <windows.h>int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow){WNDCLASS wc = {0};HWND hwnd;// 设置窗口类wc.lpfnWndProc = DefWindowProc;wc.hInstance = hInstance;wc.hbrBackground = (HBRUSH)(COLOR_BACKGROUND);wc.lpszClassName = TEXT("MyWindowClass");// 注册窗口类RegisterClass(&wc);// 创建窗口hwnd = CreateWindow(TEXT("MyWindowClass"), TEXT("Hello, World!"), WS_OVERLAPPEDWINDOW,CW_USEDEFAULT, CW_USEDEFAULT, 300, 200, NULL, NULL, hInstance, NULL);// 显示窗口ShowWindow(hwnd, nCmdShow);// 消息循环MSG Msg;while (GetMessage(&Msg, NULL, 0, 0)){TranslateMessage(&Msg);DispatchMessage(&Msg);}return Msg.wParam;}```【WindAPI 的常见问题及解答】1.问题:调用WindAPI 函数时出现错误。

WindowsAPI的概念

WindowsAPI的概念

WindowsAPI的概念/cpp/html/2845.html在C语言中,使用fopen()函数可以打开一个文件,感觉非常简单。

文件保存在硬盘上,要经过复杂的处理才能显示,这些细节对我们来说是透明的,由操作系统完成。

也就是说,我们调用fopen()函数来通知操作系统,让操作系统打开一个文件。

那么,我们如何告诉操作系统打开文件呢?看似简单的操作到底层都非常复杂,打开文件首先要扫描硬盘,找到文件的位置,然后从文件中读取一部分数据,将数据放进I/O缓冲区,放进内存;这些数据都是0、1序列,还要对照ASCII表或Unicode表”翻译“成字符,再在显示器上显示出来。

这个过程如果要让程序员来完成,那简直是噩梦!怎么办呢?Windows想了一个很好的办法,它预先把这些复杂的操作写在一个函数里面,编译成动态链接库(DLL),随Windows一起发布,程序员只需要简单地调用这些函数就可以完成复杂的工作,让编程变得简单有趣。

这些封装好的函数,叫做API(Application Programming Interface),即应用程序编程接口。

API 函数以C语言的形式向外暴露,可以通过C语言直接调用。

除了函数,Windows 还预先定义了很多数据类型(使用C语言的typedef 关键字定义)。

广义上来说,这些数据类型也是API 的一部分。

API 屏蔽了很多细节,大大简化了程序员的工作,这就是操作系统的威力,不但让普通用户使用方便,也让程序员如释重负。

在Windows上运行的程序(包括MS-DOS程序),本质上都是通过调用Windows API来完成功能的,包括QQ、360、VC6.0等,别看这些团队牛,也不可能从底层做起,那简直不可想象。

C语言也一样,也是调用Windows API,fopen() 函数就是通过调用 CreateFile() 函数实现的。

CreateFile() 是Windows API中的一个函数,可以用来打开或创建文件。

winapi简介

winapi简介

winapi简介第2章窗口处理2.1 窗口简介2.2 窗口的创建和撤销2.2.1 创建普通窗口(CreateWindow、CreateWindowEx)2.2.2 关闭窗口(CloseWindow)2.2.3 销毁窗口(DestroyWindow)2.3 窗口之间的关系2.3.1 父子关系(SetParent、GetParent、IsChild)2.3.2 遍历窗口(EnumWindow、EnumWindowProc、EnumChildWindows、EnumChildProc)2.3.3 获取指定的子窗口(ChildWindowFromPoint、ChildWindowFromPointEx)2.3.4 获得特定的窗口(GetWindow、GetTopWindow、GetNextWindow、GetDesktopWindow)2.4 窗口的大小、位置和布局2.4.1 获取窗口大小(GetWindowRect、GetClientRect)2.4.2 调整窗口大小(AdjustWindowRect、AdjustWindowRectEx)2.4.3 设置和获取窗口位置(SetWindowPos)2.4.4 移动窗口位置(MoveWindow)2.4.5 设置一组窗口位置(BeginDeferWindowPos、DeferWindowPos、EndDeferWindowPos)2.4.6 设置和获取窗口布局(SetWindowPlacement、GetWindowPlacement)2.4.7 设置和获得视口坐标起点(SetViewportOrgEx、GetViewportOrgEx)2.4.8 设置和获取视口坐标范围(SetViewportExtEx、GetViewportExtEx)2.4.9 设置和获取窗口坐标起点(SetWindowOrgEx、GetWindowOrgEx)2.4.10 设置和获取窗口坐标范围(SetWindowExtEx、GetWindowExtEx)2.4.11 坐标起点的偏移操作(OffsetViewportOrgEx、OffsetWindowOrgEx)2.5 显示窗口2.5.1 显示单个窗口(ShowWindow、ShowWindowAsync、OpenIcon)2.5.2 弹出式窗口(ShowOwnedPopups、GetLastActivePopup)2.5.3 显示子窗口(CascadeWindows、TileWindows、ArrangeIconicWindows)2.5.4 判断各种显示状态(IsIconic、IsWindowVisible、IsZoomed)2.6 窗口属性2.6.1 设置和获取窗口名(SetWindowText、GetWindowText、GetWindowTextLength)2.6.2 设置和获取窗口标记长字(SetWindowLong、GetWindowLong)2.6.3 设置和获取前台窗口(SetForegroundWindow、GetForegroundWindow)2.7 对话框2.7.1 创建对话框(DialogBox、CreateDialog、CreateDialogIndirect、Message Box、MessageBoxEx、MessageBoxIndirect)2.7.2 获取控件及其ID(GetDlgItem、GetDlgCtrlID)2.7.3 设置获取控件的显示文本(SetDlgItemText、SetDlgItemInt、GetDlgItemText、GetDlgItemInt)2.7.4 获取下一个TAB控件(GetNextDlgTabItem)2.7.5 对话框过程(DefDlgProc、DialogProc)2.7.6 对话框坐标和屏幕坐标间的转换(MapDialogRect)2.7.7 撤销对话框(EndDialog)2.8 其他2.8.1 查找窗口(FindWindow、FindWindowEx)2.8.2 设置窗口Z坐标(BringWindowT oTop)2.8.3 确定窗口属性(IsWindow、IsWindowUnicode)2.8.4 设置和获取激活态窗口(SetActiveWindow、GetActiveWindow)2.8.5 窗口闪烁(FlashWindow)2.8.6 获取指定点处的窗口(WindowFromPoint)2.8.7 遍历线程所有窗口(EnumThreadWindows、EnumThreadWndProc)第3章设备上下文——DC3.1 DC简介3.2 DC的获取和撤销3.2.1 创建DC(CreateDC、CreateCompatibleDC)3.2.2 撤销DC(ReleaseDC、DeleteDC)3.2.3 获得窗口DC(GetWindowDC、GetDC、GetDCEx)3.2.4 保存和恢复DC(SaveDC、RestoreDC)3.3 设置和获取DC的各种属性3.3.1 获得DC起始点坐标(GetDCOrgEx)3.3.2 设置显示配置(ChangeDisplaySettings、ChangeDisplaySettingsEx)3.3.3 遍历显示设备和其配置(EnumDisplayDevices、EnumDisplaySettings)3.3.4 设置和获取DC画刷颜色(SetDCBrushColor、GetDCBrushColor)3.3.5 设置和获取DC画笔颜色(SetDCPenColor、GetDCPenColor)3.3.6 设置和获取DC中各种对象(SelectObject、GetCurrentObject)3.3.7 获取DC中对象的信息(GetObject、GetObjectType、GetStockObject)3.4 区域操作3.4.1 新建椭圆区域(CreateEllipticRgn、CreateEllipticRgnIndirect)3.4.2 新建多边形区域(CreatePolygonRgn、CreatePolyPolygonRgn)3.4.3 新建矩形区域(CreateRectRgn、CreateRectRgnIndirect)3.4.4 新建圆矩形区域(CreateRoundRectRgn)3.4.5 区域之间的操作(EqualRgn、ExcludeUpdateRgn)3.4.6 区域上绘图操作(FillRgn、FrameRgn、InvertRgn、PaintRgn)3.5 裁剪操作3.5.1 设置和获取裁剪区域(SelectClipRgn、SelectClipPath、GetClipRgn、ExtSelectClipRgn)3.5.2 裁剪区域间的运算(ExcludeClipRect、IntersectClipRect、OffsetClipRgn)3.6 坐标变换3.6.1 客户区坐标与屏幕坐标的变换(ClientToScreen、ScreenToClient)3.6.2 设备坐标与逻辑坐标的变换(DPtoLP、LPtoDP)3.6.3 窗口间的坐标变换(MapWindowPoints)3.7 颜色和调色板3.7.1 创建新调色板(CreatePalette)3.7.2 启用调色板(SelectPalette、RealizePalette)3.7.3 设置和获取调色板颜色条目(SetPaletteEntries、GetPaletteEntries)3.7.4 设置系统调色板的工作方式(SetSystemPaletteUse)3.7.5 设置和获取颜色调整(SetColorAdjutstment、GetColorAdjustment)3.7.6 获取匹配颜色(GetNearestColor、GetNearestPaletteIndex)3.8 其他3.8.1 滚动窗口(ScrollDC)3.8.2 偏移操作(OffsetRect、OffsetRgn)3.8.3 点、矩形和区域的关系(PtInRegion、PtVisible、RectInRegion、RectVisible)3.8.4 缩放视口和窗口大小(ScaleViewportExtEx、ScaleWindowExtEx)3.8.5 由给定DC获取相联系的窗口(WindowFromDC)3.8.6 获取特定设备的信息(GetDeviceCaps)3.8.7 撤销DC中的对象(DeleteObject)第4章绘图函数4.1 基本画图函数4.1.1 点(SetPixel、SetPixelV、GetPixel)4.1.2 线(LineT o、LineDDA、LineDDAProc、MoveT oEx、Polyline、PolylineT o)4.1.3 曲线(PolyBezier、PolyBezierTo、PolyDraw)4.1.4 弧(AngleArc、Arc、ArcT o、SetArcDirection、GetArcDirection)4.1.5 椭圆(Ellipse)4.1.6 弦(Chord)4.1.7 矩形(Rectangle、Roundrect、DrawEdge、DrawFocusRect、FillRect)4.1.8 多边形(Polygon、PolyPolygon、PolyPolyline)4.1.9 饼图(Pie)4.2 路径相关函数4.2.1 启动和终止路径绘图(BeginPath、EndPath)4.2.2 曲线到直线(FlattenPath)4.2.3 填充路径(FillPath、StrokeAndFillPath)4.2.4 边界处理(StrokePath、WidenPath)4.2.5 封闭路径(CloseFigure)4.2.6 获取路径区域(PathToRegion)4.2.7 获取路径(GetPath)4.2.8 撤销路径(AbortPath)4.3 处理DC对象4.3.1 新建画笔(CreatePen、CreatePenIndirect、ExtCreatePen)4.3.2 新建画刷(CreateBrushIndirect、CreateHatchBrush、CreateDIBPatternBrushPt、CreatePatternBrush、CreateSolidBrush、GetSysColorBrush)4.3.3 设置和获取背景颜色和模式(GetBkColor、GetBkMode、SetBkColor、SetBkMode)4.4 图元文件4.4.1 创建图元文件(CreateEnhMetaFile、CreateMetaFile)4.4.2 复制图元文件(CopyEnhMetaFile、CopyMetaFile)4.4.3 打开图元文件(GetEnhMetaFile)4.4.4 关闭图元文件(CloseEnhMetaFile、CloseMetaFile)4.4.5 撤销图元文件(DeleteEnhMetaFile、DeleteMetaFile)4.4.6 绘制图元文件(PlayEnhMetaFile)4.5 其他4.5.1 启动和终止绘图(BeginPaint、EndPaint)4.5.2 获取需更新区域(GetUpdateRect、GetUpdateRgn)4.5.3 绘图操作生效(InvalidateRect、InvalidateRgn、ValidateRect、ValidateRgn)4.5.4 设置和获取最大绘图缓冲(GdiSetBatchLimit、GdiGetBatchLimit)4.5.5 刷新缓冲(GdiFlush)4.5.6 设置和获取窗口可绘图区域(SetWindowRgn、GetWindowRgn)4.5.7 禁止在窗口绘图(LockWindowUpdate)4.5.8 绘制桌面(PaintDesktop)4.5.9 更新窗口(RedrawWindow)4.5.10 撤销绘图操作(CancelDC)4.5.11 描绘标准控件(DrawFrameControl)4.5.12 设定画图效果(DrawState、DrawStateProc)4.5.13 设置和获取系统颜色(SetSysColors、GetSysColor)第5章位图和图标5.1 位图和图标简介5.2 创建和撤销位图、图标5.2.1 创建位图(CreateBitmap、CreateBitampIndirect、CreateCompatible、Bitmap、CreateDIBitmap、CreateDIBSection、LoadBitmap、LoadImage)5.2.2 创建图标(CreateIcon、LoadIcon、LoadCursorFromFile)5.2.3 撤销图标(DestoryIcon)5.3 设置和获得位图和图标的各种属性5.3.1 设置和获取位图的位数据(SetBitmapBits、GetBitmapBits)5.3.2 设置和获取DIB(SetDIBits、GetDIBits)5.3.3 设置和获取DIB颜色表(SetDIBColorTable、GetDIBColorTable)5.3.4 设置和获取位图的大小(GetBitmapDimensionEx、SetBitmapDimension Ex)5.3.5 获取图标信息(GetIconInfo)5.4 位块操作5.4.1 各种位块操作方式(BitBlt、PatBlt、PlgBlt、StretchBlt、MaskBlt、TransparentBlt)5.4.2 设置和获取位操作模式(SetROP2、GetROP2、SetStretchBltMode、GetStretchBltMode)5.5 其他5.5.1 复制位图和图标(CopyImage、CopyIcon)5.5.2 从文件中搜寻图标(ExtractIcon、ExtractIconEx、ExtractAssociatedIcon)5.5.3 显示图标(DrawIcon、DrawIconEx)第6章菜单处理6.1 菜单的简单操作6.1.1 生成新菜单(CreateMenu、CreatePopupMenu)6.1.2 装载菜单(LoadMenu、LoadMenuIndirect)6.1.3 撤销菜单(DestoryMenu、DeleteMenu、RemoveMenu)6.1.4 获取菜单(GetMenu、GetSubMenu、GetSystemMenu)6.1.5 增添菜单(AppendMenu)6.2 菜单项处理6.2.1 设置和获取菜单项信息(SetMenuItemInfo、GetMenuItemInfo)6.2.2 设置和获取缺省菜单项(SetMenuDefautlItem、GetMenuDefaultItem)6.2.3 获取菜单项的ID(GetMenuItemID)6.2.4 获取菜单项数(GetMenuItemCount)6.2.5 获取菜单项的范围大小(GetMenuItemRect)6.2.6 高亮显示菜单项(HiliteMenuItem)6.2.7 菜单项属性(CheckMenuItem、EnableMenuItem、CheckMenuRadioItem)6.2.8 添加菜单项(InsertMenuItem)6.2.9 获取某点处的菜单项(MenuItemFromPoint)6.3 其他6.3.1 设置窗口的菜单(SetMenu)6.3.2 判定句柄是否指向菜单(IsMenu)6.3.3 上下文菜单(TrackPopupMenu、TrackPopupMenuEx)6.3.4 显示菜单条(DrawMenuBar)6.3.5 图形菜单项(SetMenuItemBitmaps)第7章文件处理7.1 创建、读写和撤销文件7.1.1 创建文件(CreateFile、lcreat、GetTempFileName)7.1.2 设置文件读写位置(SetFilePointer、_llseek、_lseek)7.1.3 写入文件(WriteFile、lwrite、hwirte)7.1.4 异步写入文件(WriteFileEx、FileIOCompletionRoutine)7.1.5 读入文件(ReadFile、_lread、_hread)7.1.6 异步读入文件(ReadFileEx)7.1.7 复制文件(CopyFile、CopyFileEx、CopyProgressRoutine)7.1.8 更改文件名(MoveFile、MoveFileEx)7.1.9 关闭文件(CloseHandle、_lclose)7.1.10 删除文件(DeleteFile)7.2 设置和获得文件的各种信息7.2.1 获取文件大小(GetFileSize)7.2.2 获取文件类型(GetFileType)7.2.3 设置和获取文件时间信息(SetFileTime、GetFileTime)7.2.4 获取文件版本信息(GetFileVersionInfo、GetFileVersionInfoSize、VerQueryValue)7.2.5 是否可执行文件(GetBinaryType)7.2.6 长文件名和短文件名的转换(GetFullPathName、GetShortPathName)7.2.7 由文件句柄获取文件信息(GetFileInformationByHandle)7.2.8 设置文件结束标志(SetEndOfFile)7.2.9 设置和获取文件属性(SetFileAttributes、GetFileAttributes)7.3 目录处理7.3.1 创建新目录(CreateDirectory、CreateDirectoryEx)7.3.2 删除目录(RemoveDirectory)7.3.3 获取系统路径(GetSystemDirectory)7.3.4 获取临时路径(GetTempPath)7.3.5 获取Windows完整目录(GetWindowsDirectory)7.3.6 设置和获取当前目录(SetCurrentDirectory、GetCurrentDirectory)7.4 文件查找7.4.1 查找第一个文件(FindFirstFile)7.4.2 查找下一个文件(FindNextFile)7.4.3 查找指定文件(SearchPath)7.4.4 查找结束(FindClose)7.5 磁盘信息7.5.1 获取可用逻辑驱动器(GetLogicalDrives)7.5.2 获取可用逻辑驱动器信息(GetLogicalDriveStrings)7.5.3 设置和获取卷标信息(SetVolumeLabel、GetVolumeInformation)7.5.4 获取磁盘空闲空间(GetDiskFreeSpace、GetDiskFreeSpaceEx)7.5.5 获取磁盘类型(GetDriveType)7.6 压缩文件7.6.1 初始化内部缓冲区(LZInit)7.6.2 打开压缩文件(LZOpenFile)7.6.3 读入压缩文件(LZRead)7.6.4 压缩文件指针定位(LZSeek)7.6.5 获取压缩文件大小(GetCompressedFileSize)7.6.6 获取压缩文件全名(GetExpandedName)7.6.7 复制和解压缩文件(LZCopy)7.6.8 关闭压缩文件(LZClose)7.7 其他7.7.1 设置和获取字符集(SetFileApisT oANSI、SetFileApisToOEM、AreFileApisANSI)7.7.2 联系文件和I/O端口(CreateIoCompletionPort、PostQueuedCompletion Status、GetQueuedCompletionStatus)7.7.3 更新文件缓冲区(FlushFileBuffers)7.7.4 加锁和解锁文件(LockFile、LockFileEx、UnlockFile、UnlockFileEx)7.7.5 撤销文件IO(CancelIO)7.7.6 比较文件时间信息(CompareFileTime)7.7.7 设备IO操作(DeviceIoControl)7.7.8 DOS时间转换为Win32时间(DosDateTimeToFileTime)7.7.9 Win32时间转换为Dos时间(FileTimeToDosDateTime)7.7.10 Win32时间转换本地时间(FileTimeToLocalFileTime)第8章同步8.1 同步对象8.1.1 生成同步对象(CreateEvent、CreateMutex、CreateSemaphore、Create WaitableTimer)8.1.2 打开同步对象(OpenEvent、OpenMutex、OpenSemaphore、OpenWaitable Timer)8.1.3 关键段(EnterCriticalSection、LeaveCriticalSection、DeleteCritiaclSection)8.2 关键区段8.2.1 初始化关键区段(InitializeCriticalSection、InitializeCriticalSectionAnd SpinCount)8.2.2 非阻塞进入关键区段(TryEnterCriticalSection)8.2.3 设置关键区段的计数(SetCriticalSecitonSpinCount)8.3 原子性访问变量8.3.1 原子性比较(InterlockedCompareExchange)8.3.2 原子性交换(InterlockedExchange)8.3.3 原子性增加(InterlockedIncrement、InterlockedExchangeAdd)8.3.4 原子性减少(InterlockedDecrement)8.4 等待事件发生8.4.1 触发一个事件并等待另一个事件(SignalObjectAndWait)8.4.2 等待单个事件发生(WaitForSingleObject、WaitForSingleObjectEx)8.4.3 等待多个事件发生(WaitForMultipleObjects、WaitForMultipleObjectsEx)8.4.4 等待消息(MsgWaitForMultipleObjects、MsgWaitForMultipleObjectsEx)8.5 其他8.5.1 设置事件状态(SetEvent、ResetEvent、PulseEvent)8.5.2 释放互斥量(ReleaseMutex)8.5.3 释放信号灯(ReleaseSemaphore)8.5.4 设置可等待定时器状态(SetWaitableTimer、CancelWaitableTimer)第9章处理文本和字体9.1 文本9.1.1 显示文本(DrawText、DrawTextEx、TextOut、ExTextOut、TabbedTextOut、GrayString、OutputProc、PolyT extOut)9.1.2 设置和获取文本属性(SetTextAlign、GetTextAlign、SetTextColor、GetTextColor)9.1.3 调整和获取字符间距(SetTextCharacterExtra、GetKerningPairs)9.1.4 获得字符串的宽和高(GetTextExtentPoint32、GetTabbedTextExtent)9.1.5 获取字符串的信息(GetCharacterPlacement)9.1.6 调整字符串(SetTextJustification)9.3 字体9.3.1 创建新字体(CreateFont、CreateFontIndirect、CreateScalableFontResource)9.3.2 在系统中添加和删除字体(AddFontResource、RemoveFontResource)9.3.3 获取字体的宽度(GetCharABCWidths、GetCharWidth、GetCharWidth32、GetCharWidthFloat、GetCharaABCWidthsFloat)9.3.4获取字体的各种信息(GetTextMetric、GetFontLanguageInfo)9.3.5 字体的宽高比( GetAspectRatioFilterEx、SetMapperFlags)9.3.6 获取字体的字型名(GetTextFace)9.3.7 遍历系统字体(EnumFontFamiliesEx、EnumFontFamiExProc)第10章硬件和系统10.1 键盘10.1.1 设置和获取键盘布局(ActivateKeyboardLayout、GetKeyboardLayout、GetKey boardLayoutList、GetKeyboardLayoutName)10.1.2 装载和卸载键盘布局(LoadKeyBoardLayout、UnloadKeyBoardLayout)10.1.3 获得和设置键盘状态(GetKeyboardState、SetKeyboardState)10.1.4 获得键盘类型(GetKeyboardType)10.1.5 获得按键名(GetKeyNameT ext)10.1.6 获得按键状态(GetKeyState、GetAsyncKeyState)10.1.7 虚拟按键到扫描码(MapVirtualKey、MapVirtualKeyEx)10.1.8 虚拟按键到ASCII码(ToAscii、ToAsciiEx)10.1.9 虚拟按键到Unicode(T oUnicode、ToUnicodeEx)10.1.10 字符到虚拟按键(VkKeyScan、VkKeyScanEx)10.1.11 OEM码到扫描码(OemKeyScan)10.1.12 注册和撤销系统热键(RegisterHotKey、UnregisterHotKey)10.1.13 插入键盘事件(SendInput、keybd_event)10.2 鼠标10.2.1 获得鼠标输入点序列(GetMouseMovePoints)10.2.2 获得和设置双击间隔(GetDoubleClickTime、SetDoubleClickTime)10.2.3 鼠标左右键设置(SwapMouseButton)10.2.4 鼠标捕获和释放(SetCapture、GetCapture、ReleaseCapture)10.2.5 捕获离开和滑过事件(TrackMouseEvent)10.2.6 插入鼠标事件(mouse_event)10.2.7 探测拖动(DragDetect)10.3 光标10.3.1 新建和撤销光标(CreateCursor、LoadCursorFromFile、DestroyCursor)10.3.2 设置和获取光标(SetCursor、GetCursor)10.3.3 设置和获取光标位置(SetCursorPos、GetCursorPos)10.3.4 设置和获取光标活动范围(ClipCursor、GetClipCursor)10.3.5 显示光标(ShowCursor)10.3.6 设置系统光标(SetSystemCursor)10.4 时钟10.4.1 设置和获取系统时间(SetSystemTime、GetSystemTime、GetSystemTimeAsFileTime)10.4.2 设置和获取当地时间(SetLocAltime、GetLocAltime)10.4.3 获取自启动以来的微秒数(GetTickCount)10.4.4 获取和设置系统调整时间( GetSystemTimeAdjustment、SetSystemTimeAdjustment)10.4.5 设置和获取时区信息(SetTimeZoneInformation、GetTimeZoneInformation)10.4.6 获取高精度时间(QueryPerformanceCounter、QueryPerformance Frequency)10.4.7 设置定时器(SetTimer)10.4.8 设置定时器回调函数(TimerProc)10.4.9 撤销定时器(KillTimer)10.5 系统信息10.5.1 获取系统各种度量信息(GetSystemMetrics)10.5.2 设置和获取系统参数(SystemParametersInfo)10.5.3 确定处理器的特性(IsProcessorFeaturePresent)10.5.4 获取和设置计算机名(GetComputerName、SetComputerName)10.5.5 获取用户名(GetUserName)10.5.6 获取操作系统版本信息(GetVersionEx)10.5.7 获取系统信息(GetSystemInfo)第11章 Windows 消息11.1 消息系统概述11.2 消息处理11.2.1发送消息(SendMessage、SendMessageCallback、SendNotifyMessage、SendMessageTimeout、PostThreadMessage、PostMessage、PostQutiMessage、BroadcastSystemMessage)11.2.2 回复消息(ReplyMessage)11.2.3 获取消息(GetMessage、WaitMessage、PeekMessage)11.2.4 处理消息(TranslateMessage、DispatchMessage)11.2.5 设置和获取消息的附加信息(SetMessageExtraInfo、GetMessageExtra Info)11.2.6 获取消息的伴随信息(GetMessagePos、GetMessageTime)11.2.7 注册新窗口消息(RegisterWindowMessage)11.3 消息队列11.3.1 获取队列状态(GetQueueStatus)11.3.2 获取队列中输入消息状态( GetInputState)11.4 其他11.4.1 是否重入(InSendMessage、InSendMessageEx)第12章进程和线程12.1 进程和线程概述12.2 进程12.2.1 创建新进程(CreateProcess、CreateProcessAsUser)12.2.2 获取进程对象(OpenProcess)12.2.3 获取进程起始信息(GetStartupInfo)12.2.4 设置和获取工作集大小(SetProcessWorkingSetSize、GetProcessWorkingSetSize)12.2.5 设置和获取进程的优先级(SetPriorityClass、GetPriorityClass)12.2.6 进程的动态优先级(SetProcessPriorityBoost、GetProcessPriorityBoost)12.2.7 设置和获取退出参数(SetProcessShutdownParameters、GetProcessShutdownParameters)12.2.8 获取进程的退出代码(GetExitCodeProcess)12.2.9 设置和获取环境参数(GetEnvironmentStrings、SetEnvironmentVariable、GetEnvironmentVariable、FreeEnvironmentVariable)12.2.10 获取进程的时间信息(GetProcessTime)12.2.11 获取进程的版本信息(GetProcessVersion)12.2.12 获取当前进程(GetCurrentProcess、GetCurrentProcessID)12.2.13 等待进程空闲(WaitForInputIdle)12.2.14 结束进程(ExitProcess、TerminateProcess)12.2.15 获取命令参数(GetCommandLine、CommandLineT oArgvW)12.3 线程12.3.1 创建新线程(CreateThread)12.3.2 设置和获得线程优先级(SetThreadPriority、GetThreadProority)12.3.3 线程的调度(SuspendThread、SwitchToThread、ResumeThreadExitThread 、TerminateThread、Sleep、SleepEx)12.3.4 设置线程的输入队列(AttachThreadInput)12.3.5 线程的动态优先级( SetThreadPriorityBoost、GetThreadPriorityBoost)12.3.6 获取线程的时间信息(GetThreadTimes)12.3.7 获取线程的退出码(GetExitCodeThread)12.4 调试12.4.1 调试指定进程(DebugActiveProcess)12.4.2 设置断点(DebugBreak)12.4.3 等待异常发生(WaitForDebugEvent)12.4.4 重新启动线程(ContinueDebugEvent)12.4.5 设置调试级别(SetDebugErrorLevel)12.4.6 发送一串字符给调试器(OutputDebugString)12.4.7 是否处于被调试态(IsDebuggerPresent)12.4.8 控制转移到调试器(FatalExit)12.4.9 设置和获取线程上下文(SetThreadContext、GetThreadContext)12.4.10 获取线程选择子的描述符(GetThreadSelectorEntry)12.4.11 读写进程内存(WriteProcessMemory、ReadProcessMemory)12.5 线程局部数据区12.5.1 分配(TlsAlloc)12.5.2 释放(TlsFree)12.5.3 设置和获取变量值(TlsSetValue、TlsGetValue)12.6 进程间通信12.6.1 创建映射文件(CreateFileMapping)12.6.2 打开映射文件(OpenFileMapping)12.6.3 映射文件到内存(MapViewOfFile、MapViewOfFileEx) 12.6.4 撤销映射(UnmapViewOfFile)。

Windows API学习

Windows API学习

第一课∶认识API一、什么是API首先,有必要向大家讲一讲,什么是API。

所谓API本来是为C和C++程序员写的。

API 说来说去,就是一种函数,他们包含在一个附加名为DLL的动态连接库文件中。

用标准的定义来讲,API就是Windows的32位应用程序编程接口,是一系列很复杂的函数,消息和结构,它使编程人员可以用不同类型的编程语言编制出的运行在Windows95和Windows NT 操作系统上的应用程序。

可以说,如果你曾经学过VC,那么API对你来说不是什么问题。

但是如果你没有学过VC,或者你对Windows95的结构体系不熟悉,那么可以说,学习API 将是一件很辛苦的事情。

如果你打开WINDOWS的SYSTEM文件夹,你可以发现其中有很多附加名为DLL的文件。

一个DLL中包含的API函数并不只是一个,数十个,甚至是数百个。

我们能都掌握它嘛?回答是否定的∶不可能掌握。

但实际上,我们真的没必要都掌握,只要重点掌握Windos系统本身自带的API函数就可以了。

但,在其中还应当抛开掉同VB本身自有的函数重复的函数。

如,VB的etAttr命令可以获得文件属性,SetAttr可以设置文件属性。

对API来讲也有对应的函数GetFileAttributes和SetFileAttributes,性能都差不多。

如此地一算,剩下来的也就5、600个。

是的,也不少。

但,我可以敢跟你说,只要你熟悉地掌握100个,那么你的编程水平比现在高出至少要两倍。

尽管人们说VB和WINDOWS具有密切的关系,但我认为,API更接近WINDOWS。

如果你学会了API,首要的收获便是对WINDOWS体系结构的认识。

这个收获是来自不易的。

如果你不依靠API会怎么样?我可以跟你说,绝大多是高级编程书本(当然这不是书的名程叫高级而高级的,而是在一开始的《本书内容》中指明《本书的阅读对象是具有一定VB基础的读者》的那些书),首先提的问题一般大都是从API开始。

WinAPI在C语言中的应用

WinAPI在C语言中的应用

WinAPI在C语言中的应用WinAPI(Windows Application Programming Interface)是一组用于开发Windows应用程序的函数、类和结构体的集合。

它提供了一个与操作系统交互的编程接口,使得开发者能够利用操作系统提供的功能和资源来创建各种类型的应用程序。

本文将介绍WinAPI在C语言中的应用,并探讨它在不同领域中的重要性。

一、WinAPI的概述WinAPI是使用C语言编写的,为Windows操作系统提供了许多功能和特性。

它提供了一套函数接口,通过这些函数可以实现与操作系统及其组件进行交互。

通过使用WinAPI,开发者可以操纵窗口、界面、文件、网络等,为用户提供更好的应用程序体验。

在C语言中使用WinAPI,开发者需要包含相应的头文件,并正确调用相关函数以实现所需的功能。

二、WinAPI的应用领域1. 窗口和界面设计:WinAPI提供了丰富的函数和结构体,使得开发者能够创建各种类型的窗口应用程序,包括桌面应用程序、图形用户界面(GUI)、游戏等。

通过使用WinAPI,可以实现窗口的创建、显示、隐藏、拖动、调整大小等操作,为用户提供友好的界面和交互体验。

2. 文件操作:WinAPI提供了一系列函数来处理文件和目录。

通过使用这些函数,可以实现文件的读取、写入、复制、移动、删除等操作。

此外,还可以获取文件属性、创建文件夹、遍历文件系统等。

这为开发者提供了丰富的功能来操作文件和目录,满足各种应用程序对文件系统的需求。

3. 网络编程:WinAPI中的套接字函数提供了网络编程所需的功能和接口。

通过使用这些函数,可以实现网络通信、建立服务器和客户端等。

开发者可以使用WinAPI创建网络应用程序,如网络游戏、聊天工具、远程控制等。

4. 多媒体应用:WinAPI提供了音频、视频和图像处理的函数接口,使得开发者可以创建多媒体应用程序。

通过使用这些函数,可以实现音频和视频的播放、录制、编辑等,还可以实现图像的加载、处理、显示等。

windowsAPI函数中文详解

windowsAPI函数中文详解

windowsAPI函数中⽂详解WindowsAPI函数中⽂详解V1.0⽬录WindowsAPI函数中⽂详解V1.0 ----------------------------------------------------------------------------- 1 VC API常⽤函数简单例⼦⼤全 ---------------------------------------------------------------------------- 6第⼀个:FindWindow根据窗⼝类名或窗⼝标题名来获得窗⼝的句柄,该函数返回窗⼝的句柄------------------------------------------- 6第⼆个:SendMessage根据窗⼝句柄发送⼀个消息给窗⼝6第三个:GetCursorPos获取⿏标当前位置(屏幕) -------- 8第四个:WindowFromPoint根据坐标点获得对应的窗⼝句柄 -------------------------------------------------------------------------------- 9第五个MoveWindow根据窗⼝句柄移动窗⼝,改变窗⼝⼤⼩ ------------------------------------------------------------------------------- 10第六个ShowWindow设置窗⼝显⽰状态,如隐藏,最⼤化,最⼩化------------------------------------------------------------------------- 10第七个SetCursorPos设置⿏标的位置、把⿏标移动到指定的位置------------------------------------------------------------------------- 11第⼋个CopyFile复制⼀个⽂件-------------------------------------- 11第九个DeleteFile删除⼀个⽂件----------------------------------- 11第⼗个CreateDirectory创建⼀个⽂件夹(⽬录) --------- 11第⼗⼀个:GetClientRect获得窗⼝⼤⼩---------------------- 12第⼗⼆个:GetCWindowRect获得窗⼝⼤⼩(相对屏幕)12第⼗三个FindFirstFile寻找⽂件以及获得⽂件的信息------ 13第⼗四个FindNextFile寻找⽂件---------------------------------- 13第⼗五个MoveFile移动⽂件 ---------------------------------------- 14第⼗六个GetClassName根据窗⼝句柄获得窗⼝类名 ----- 14第⼗七个SetFileAttributes设置⽂件属性-------------------- 14第⼗⼋个ShellExecute运⾏⼀个程序函数定义:ShellExecute(HWND hwnd, LPCSTR lpOperation, LPCSTR lpFile, LPCSTR lpParameters, LPCSTR lpDirectory, INT nShowCmd); 第⼀个参数hwnd是⽗窗⼝的句柄,可以为NULL,第⼆个参数lpOperation表⽰⾏为,第三个参数lpFile是程序的路径名,第四个参数lpParameters是给所打开程序的参数,可以为NULL,第五个参数lpDirectory可以为NULL,第六个参数nShowCmd跟ShowWindow函数的第⼆个参数⼀样,作⽤也⼀样,如果打开的程序有窗⼝的话,这个参数就指明了窗⼝如何显⽰. 例如打开⼀个记事本:------------------- 16 第⼗九个PlaySound播放⼀个WAV⽂件--------------------- 16 第⼆⼗个GetModuleFileName根据模块导⼊表获程序的完整路径------------------------------------------------------------------------- 17 第⼆⼗⼀个CreateWindow创建⼀个窗⼝ -------------------- 17 第⼆⼗⼆个GetMessage获取窗⼝消息 ------------------------ 23 第⼆⼗三个RegisterClass注册窗⼝类,参照CreateWindow--------------------------------------------------------- 23 第⼆⼗四个UpdateWindow参照CreateWindow------ 23 第⼆⼗五个DispatchMessage参照CreateWindow-- 23 第⼆⼗六个LoadCursorFromFile从磁盘加载⼀个光标⽂件,函数返回该光标句柄------------------------------------------------ 23 第⼆⼗七个CreateSolidBrush创建⼀个画刷,函数返回画刷句柄------------------------------------------------------------------------- 23 第⼆⼗⼋个LoadImage装载位图、图标、光标函数-------- 24 第⼆⼗九个GetDC根据窗⼝句柄获取设备上下⽂(DC)返回DC句柄 ---------------------------------------------------------------------- 26 第三⼗个Rectnagle在窗⼝中画⼀个矩形 ---------------------- 26 第三⼗个CreateToolhelp32Snapshot给当前进程拍⼀个照 ------------------------------------------------------------------------------- 27 第三⼗⼀个Process32First根据CreateToolhelp32Snapshot函数返回的句柄获取进程信息------------------------------------------------ 27 第三⼗⼆个OpenProcess根据进程ID号获得进程句柄,句柄通过函数返回------------------------------------------------------------------- 28 第三⼗三个TerminateProcess结束⼀个进程(需进程句柄做参数)---------------------------------------------------------------------- 28 第三⼗四个CreatePen创建⼀个画笔(返回画笔句柄) --- 29第三⼗五个CreateSolidBrush创建⼀个画刷---------------- 29 第三⼗六个SelectObject把GDI对象选⼊相应的DC中 29 第三⼗七个 ReadProcessMemory根据进程句柄读取相应的⼀段内存(读其它进程⾥的内存) -------------------------------- 31 第三⼗⼋个WriteProcessMemory根据进程句柄写⼊相应的⼀段内存(写⼊其它进程⾥的内存)----------------------------- 32 第三⼗九个CreateThread创建⼀个线程(多线程)------- 33 第四⼗个GetCurrentProcessId获得当前进程ID ------- 35 第四⼗⼀个CreateCompatibleDC创建⼀个兼容的内存设备上下⽂(DC)----------------------------------------------------------- 35 第四⼗⼆个GetObject获取⼀个对象信息(如位图,图标,光标)------------------------------------------------------------------------- 35 第四⼗三个BitBlt在窗⼝输出⼀个位图 --------------------------- 35第四⼗四个GetWindowText根据窗⼝句柄获得窗⼝标题名37 第四⼗五个SetWindowText根据窗⼝句柄设置窗⼝标题名38 第四⼗六个GetCurrentProcess获得当前线程句柄------- 38第四⼗七个OpenProcessToken获得⼀个进程的访问令牌句柄 ---------------------------------------------------------------------------- 38 第四⼗七个LookupPrivilegeValue函数查看对应系统权限的特权值,返回信息到⼀个LUID结构体⾥上⾯讲过了,进程有权限⼀说,那么⼤家也能猜到,进程权限的信息也⼀定存储在⼀个结构体⾥,这个结构体描述了进程权限相关的⼀些信息。

易语言WindowsAPI

易语言WindowsAPI

易语言WindowsAPI上一期我们讲了勾子基本概念和一些简单的应用这一期我们就来学习用用钩子技术和内存文件映射共享技术来实现远程线程插入现在网上关于这项编程技术的介绍满天飞,因为要想写出一个好的后门,该后门至少要达到高隐蔽.防查杀,无端口,自启动等要求,而将木马以DLL的形式嵌入到系统进程中,基本上可以满足要求,而这种远程线程注入技术也成为现代后门和木马程序的一项标准技术指标.如果大家要想更为清晰地掌握该项编程技术,强烈推荐细读jeffery Richter的<>.该书个人觉得是每个学习Windows黑客编程技术爱好者的圣经.不过,由于易语言出来的时间不长,网上用易语言具体实现这项编程技术的资料廖廖无几今天,我们就来用易语言来实现远程线程插入:大家知道,传统的远程线程插入是通过以下几个API来完成的;·OpenProcess - 用于打开要寄生的目标进程。

·VirtualAllocEx/VirtualF reeEx - 用于在目标进程中分配/释放内存空间。

·WriteProcessMemory - 用于在目标进程中写入要加载的DLL名称。

·CreateRemoteThread - 远程加载DLL的核心内容,用于控制目标进程调用API函数。

·LoadLibrary - 目标进程通过调用此函数来加载病毒DLL。

这种方法虽然好,但有个缺点:只能在NT核心的系统上有效,在98中无效并且由于易DLL的特殊性,上面的方法并不奏效,虽然可以用写入汇编码来解决问题但也较不方便,钩子的出现为我们解决了这个难题通过钩子实现远程线程插入的思路如下:通过安装windows 消息钩子WH_GETMESSAGE,把待插线程代码所在的DLL注入到其他进程里在钩子回调函数中,判断当前进程ID是否是要插入的进程ID,如果是则创建一个新线程这个新线程函数就是我们要执行的代码所在的函数,到这里也就达到了我们的目地.现在就产生了一个新问题,由于我们的要执行的代码是放在一个DLL里面的,创建新线程就需要加载这个DLL,就需要知道DLL路径,还有判断当前进程ID是否是要插入的进程ID,首先也要知道要插入的进程ID是多少等等这些信息,这就涉及到进程通讯,我们可以用文件映射技术来进行进程通讯.文件映射主要是通过以下几个API来完成的:*CreateFileMapping //创建文件映射对象,成功返回文件映射对象句柄Dll命令名:CreateFileMapping所处动态链接库的文件名:kernel32在所处动态链接库中的命令名:CreateFileMappingA返回值类型:整数型参数<1>的名称为“文件映射句柄”,类型为“整数型”。

WindowsAPI大全

WindowsAPI大全

WindowsAPI大全API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件的以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。

什么是windows APIWindows API是一套用来控制Windows的各个部件(从桌面的外观到为一个新进程分配的内存)的外观和行为的一套预先定义的Windo ws函数.用户的每个动作都会引发一个或几个函数的运行以告诉Wind ows发生了什么.这在某种程度上很象Windows的天然代码.其他的语言只是提供一种能自动而且更容易的访问API的方法.VB在这方面作了很多工作.它完全隐藏了API并且提供了在Windows环境下编程的一种完全不同的方法. 这也就是说,你用VB写出的每行代码都会被VB转换为API 函数传递给Windows.例如,Form1.Print...VB 将会以一定的参数(你的代码中提供的,或是默认参数)调用TextOut 这个API函数. 。

同样,当你点击窗体上的一个按钮时,Windows会发送一个消息给窗体(这对于你来说是隐藏的),VB获取这个调用并经过分析后生成一个特定事件(Butt on_Click).API函数包含在Windows系统目录下的动态连接库文件中(如Us er32.dll,GDI32.dll,Shell32.dll...).API 声明正如在"什么是API"中所说,API函数包含在位于系统目录下的DLL 文件中.你可以自己输入API函数的声明,但VB提供了一种更简单的方法,即使用API Text Viewer. 要想在你的工程中声明API函数,只需运行API Text Viewer,打开Win32api.txt(或.MDB如果你已经把它转换成了数据库的话,这样可以加快速度.注:微软的这个文件有很多的不足,你可以试一下本站提供下载的api32.txt),选择"声明",找到所需函数,点击"添加(Add)"并"复制(Copy)",然后粘贴(Paste)到你的工程里.使用预定义的常量和类型也是同样的方法.你将会遇到一些问题:假设你想在你的窗体模块中声明一个函数.粘贴然后运行,VB会告诉你:编译错误...Declare 语句不允许作为类或对象模块中的Public 成员...看起来很糟糕,其实你需要做的只是在声明前面添加一个Private(如 Private Declare Function...).--不要忘了,可是这将使该函数只在该窗体模块可用. 在有些情况下,你会得到"不明确的名称"这样的提示,这是因为函数.常量或其他的什么东西共用了一个名称.由于绝大多数的函数(也可能是全部,我没有验证过)都进行了别名化,亦即意味着你可以通过Alias子句使用其它的而不是他们原有的名称,你只需简单地改变一下函数名称而它仍然可以正常运行.API 分为四种类型:远程过程调用(RPC):通过作用在共享数据缓存器上的过程(或任务)实现程序间的通信。

Windows 应用程序编程接口API

Windows 应用程序编程接口API

Visual C++
5.1.4 WindowsAPI分类(续) 分类
6.客户/服务方式存取服务
在客户/服务方式存取模式中,客户可以连接到服务器上以使用服 务器的功能和数据,服务器通过客户端的标识和权限来决定客户端可 以使用的功能。Win2K提供了一套函数来限制和允许客户端对服务端的 访问。这些函数扩展了Win2k的存取控制模型来使用服务端的私有对象 和使用服务端的功能。客户/ 服务方式存取服务又称操作系统高级编 客户/ 客户 程接口,这些函数包含在高级编程接口函数库——Advapi32.dll中。 Advapi32 程接口,这些函数包含在高级编程接口函数库 Advapi32.dll中 7.版本服务 版本服务主要提供有关文件的版本信息。这些服务所对应的函数 这些服务所对应的函数 包含在版本函数库——Version.dll中。 Version. 包含在版本函数库 Version dll中 8.公共对话框服务 公共对话框,又叫通用对话框,是Windows预定义的对话框,可以 使用通用对话框来执行六种标准操作,选择文件,指定字体、选择颜 色、打印设置、查找文本、保存文件。这些服务所对应的函数包含在 这些服务所对应的函数包含在 公共对话框函数库——Comdlg32.dll中。 Comdlg32 公共对话框函数库 Comdlg32.dll中
Windows三个核心库中的API函数的原型声名在windows.h中有说明,这就是我们在 编写Win32应用程序时要在程序开头放#include “windows.h”语句的原因。
Visual C++
5.1.4 Windows API分类 分类
根据Windows API函数完成的功能 可以将其分为如下的类别: 函数完成的功能, 根据Windows API函数完成的功能,可以将其分为如下的类别: 1.内核服务 通过内核服务函数, 通过内核服务函数,应用程序可以使用计算机中的资源和操作系统 的特性,例如内存,文件系统、设备、进程、线程等。 的特性,例如内存,文件系统、设备、进程、线程等。拿一个简单的文 件输入输出函数来说,通过这些函数,程序员可以存取本地计算机或网 络中某台计算机中的文件、目录、输入输出设备,并且这些文件函数支 持各种各样的文件系统,包括FAT、NTFS的文件系统。 内核服务体现了Windows操作系统“服务”的观点。作为一个程序员 Windows操作系统 内核服务体现了Windows操作系统“服务”的观点 我们应该利用这些服务函数来充分发挥操作系统的功能。对于这部分API 函数的使用,我们可以在基于控制台的应用程序中编写,因为这些函数 都是一些与Windows图形用户界面无关的,在字符方式下操作比较简单。 后面有关这方面函数的操作就是在基于控制台的应用程序中使用的。 内核服务的函数大部分包含在Windows内核库——Kernel32.dll中。 Kernel32.dll中 内核服务的函数大部分包含在Windows内核库 Windows内核库 Kernel32.dll

深入浅出 windows api 程序设计

深入浅出 windows api 程序设计

深入浅出windows api 程序设计全文共四篇示例,供读者参考第一篇示例:深入浅出Windows API程序设计Windows API是Windows操作系统所提供的一组接口,允许开发者与操作系统进行交互,控制、管理和定制系统资源。

通过调用Windows API,开发者可以实现各种功能,包括但不限于文件操作、窗口管理、内存管理、网络通信等等。

深入掌握Windows API程序设计,可以让开发者更加灵活地处理系统资源,提高程序性能和用户体验。

本文将通过实例介绍Windows API程序设计的基本原理和常用技巧,帮助读者快速上手和深入了解Windows API。

Windows API是一组由微软公司定义和支持的应用程序编程接口,包括了一系列的函数、结构体和常量。

开发者可以通过调用这些接口,实现对操作系统资源的操作和控制。

Windows API可以分为用户界面API和系统服务API两类。

用户界面API包括了一系列函数,用于创建、管理和处理用户界面元素,如窗口、按钮、菜单等。

其中最常用的函数包括CreateWindow、SendMessage、GetDlgItem、SetWindowText 等。

系统服务API则包括了一系列函数,用于访问系统资源和执行系统级操作,如文件操作、注册表访问、进程管理等。

常用的系统服务API函数包括CreateFile、RegOpenKey、EnumProcesses等。

Windows API程序设计的基本原理是通过调用API函数,与操作系统进行交互并控制系统资源。

在使用Windows API进行程序设计时,需要注意以下几点:1. 导入API函数:在使用Windows API时,需要先导入对应的API函数。

可以通过声明函数原型的方式告诉编译器需要调用的函数及其参数,然后利用LoadLibrary和GetProcAddress函数来获取函数的地址。

2. 创建消息循环:在Windows程序中,消息循环是至关重要的部分。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2.6.2 设置和获取窗口标记长字(SetWindowLong、GetWindowLong)
2.6.3 设置和获取前台窗口(SetForegroundWindow、GetForegroundWindow)
2.7 对话框
2.7.1 创建对话框(DialogBox、CreateDialog、CreateDialogIndirect、Message Box、MessageBoxEx、
4.5.3 绘图操作生效(InvalidateRect、InvalidateRgn、ValidateRect、ValidateRgn)
2.8.3 确定窗口属性(IsWindow、IsWindowUnicode)
2.8.4 设置和获取激活态窗口(SetActiveWindow、GetActiveWindow)
2.8.5 窗口闪烁(FlashWindow)
2.8.6 获取指定点处的窗口(WindowFromPoint)
3.6 坐标变换
3.6.1 客户区坐标与屏幕坐标的变换(ClientToScreen、ScreenToClient)
3.6.2 设备坐标与逻辑坐标的变换(DPtoLP、LPtoDP)
3.6.3 窗口间的坐标变换(MapWindowPoints)
3.7 颜色和调色板
3.7.1 创建新调色板(CreatePalette)
4.1.8 多边形(Polygon、PolyPolygon、PolyPolyline)
4.1.9 饼图(Pie)
4.2 路径相关函数
4.2.1 启动和终止路径绘图(BeginPath、EndPath)
4.2.2 曲线到直线(FlattenPath)
4.2.3 填充路径(FillPath、StrokeAndFillPath)
3.3.6 设置和获取DC中各种对象(SelectObject、GetCurrentObject)
3.3.7 获取DC中对象的信息(GetObject、GetObjectType、GetStockObject)
3.4 区域操作
3.4.1 新建椭圆区域(CreateEllipticRgn、CreateEllipticRgnIndirect)
2.4 窗口的大小、位置和布局
2.4.1 获取窗口大小(GetWindowRect、GetClientRect)
2.4.2 调整窗口大小(AdjustWindowRect、AdjustWindowRectEx)
2.4.3 设置和获取窗口位置(SetWindowPos)
2.4.4 移动窗口位置(MoveWindow)
3.3.3 遍历显示设备和其配置(EnumDisplayDevices、EnumDisplaySettings)
3.3.4 设置和获取DC画刷颜色(SetDCBrushColor、GetDCBrushColor)
3.3.5 设置和获取DC画笔颜色(SetDCPenColor、GetDCPenColor)
4.2.4 边界处理(StrokePath、WidenPath)
4.2.5 封闭路径(CloseFigure)
4.2.6 获取路径区域(PathToRegion)
4.2.7 获取路径(GetPath)
4.2.8 撤销路径(AbortPath)
4.3 处理DC对象
4.3.1 新建画笔(CreatePen、CreatePenIndirect、ExtCreatePen)
2.3.2 遍历窗口(EnumWindow、EnumWindowProc、EnumChildWindows、EnumChildProc)
2.3.3 获取指定的子窗口(ChildWindowFromPoint、ChildWindowFromPointEx)
2.3.4 获得特定的窗口(GetWindow、GetTopWindow、GetNextWindow、GetDesktopWindow)
2.8.7 遍历线程所有窗口(EnumThreadWindows、EnumThreadWndProc)
第3章 设备上下文——DC
3.1 DC简介
3.2 DC的获取和撤销
3.2.1 创建DC(CreateDC、CreateCompatibleDC)
3.2.2 撤销DC(ReleaseDC、DeleteDC)
3.2.3 获得窗口DC(GetWindowDC、GetDC、GetDCEx)
3.2.4 保存和恢复DC(SaveDC、RestoreDC)
3.3 设置和获取DC的各种属性
3.3.1 获得DC起始点坐标(GetDCOrgEx)
3.3.2 设置显示配置(ChangeDisplaySettings、ChangeDisplaySettingsEx)
第2章 窗口处理
2.1 窗口简介
2.2 窗口的创建和撤销
2.2.1 创建普通窗口(CreateWindow、CreateWindowEx)
2.2.2 关闭窗口(CloseWindow)
2.2.3 销毁窗口(DestroyWindow)
2.3 窗口之间的关系
2.3.1 父子关系(SetParent、GetParent、IsChild)
MessageBoxIndirect)
2.7.2 获取控件及其ID(GetDlgItem、GetDlgCtrlID)
2.7.3 设置获取控件的显示文本(SetDlgItemText、SetDlgItemInt、GetDlgItemText、GetDlgItemInt)
2.7.4 获取下一个TAB控件(GetNextDlgTabItem)
3.7.2 启用调色板(SelectPalette、RealizePalette)
3.7.3 设置和获取调色板颜色条目(SetPaletteEntries、GetPaletteEntries)
3.7.4 设置系统调色板的工作方式(SetSystemPaletteUse)
3.7.5 设置和获取颜色调整(SetColorAdjutstment、GetColorAdjustment)
3.4.6 区域上绘图操作(FillRgn、FrameRgn、InvertRgn、PaintRgn)
3.5 裁剪操作
3.5.1 设置和获取裁剪区域(SelectClipRgn、SelectClipPath、GetClipRgn、ExtSelectClipRgn)
3.5.2 裁剪区域间的运算(ExcludeClipRect、IntersectClipRect、OffsetClipRgn)
3.4.2 新建多边形区域(CreatePolygonRgn、CreatePolyPolygonRgn)
3.4.3 新建矩形区域(CreateRectRgn、CreateRectRgnIndirect)
3.4.4 新建圆矩形区域(CreateRoundRectRgn)
3.4.5 区域之间的操作(EqualRgn、ExcludeUpdateRgn)
2.4.11 坐标起点的偏移操作(OffsetViewportOrgEx、OffsetWindowOrgEx)
2.5 显示窗口
2.5.1 显示单个窗口(ShowWindow、ShowWindowAsync、OpenIcon)
2.5.2 弹出式窗口(ShowOwnedPopups、GetLastActivePopup)
4.3.2 新建画刷(CreateBrushIndirect、CreateHatchBrush、CreateDIBPatternBrushPt、
CreatePatternBrush、CreateSolidBrush、GetSysColorBrush)
4.3.3 设置和获取背景颜色和模式(GetBkColor、GetBkMode、SetBkColor、SetBkMode)
2.5.3 显示子窗口(CascadeWindows、TileWindows、ArrangeIconicWindows)
2.5.4 判断各种显示状态(IsIconic、IsWindowVisible、IsZoomed)
2பைடு நூலகம்6 窗口属性
2.6.1 设置和获取窗口名(SetWindowText、GetWindowText、GetWindowTextLength)
2.7.5 对话框过程(DefDlgProc、DialogProc)
2.7.6 对话框坐标和屏幕坐标间的转换(MapDialogRect)
2.7.7 撤销对话框(EndDialog)
2.8 其他
2.8.1 查找窗口(FindWindow、FindWindowEx)
2.8.2 设置窗口Z坐标(BringWindowToTop)
3.7.6 获取匹配颜色(GetNearestColor、GetNearestPaletteIndex)
3.8 其他
3.8.1 滚动窗口(ScrollDC)
3.8.2 偏移操作(OffsetRect、OffsetRgn)
3.8.3 点、矩形和区域的关系(PtInRegion、PtVisible、RectInRegion、RectVisible)
2.4.5 设置一组窗口位置(BeginDeferWindowPos、DeferWindowPos、EndDeferWindowPos)
2.4.6 设置和获取窗口布局(SetWindowPlacement、GetWindowPlacement)
2.4.7 设置和获得视口坐标起点(SetViewportOrgEx、GetViewportOrgEx)
3.8.4 缩放视口和窗口大小(ScaleViewportExtEx、ScaleWindowExtEx)
相关文档
最新文档