admin 管理员组

文章数量: 887007

1. 什么是Windows API
Windows的API(Application Programming Interface,应用程序编程接口),是Windows操作系统提供
给应用程序的大量函数,开发者调用这些函数,犹如“积木块”一样,可以搭建出各种界面丰富,功能灵
活的应用程序。所以可以认为API函数是构筑整个Windows的基石,在它的下面是Windows的操作系统核心,
而它的上面则是所有华丽的Windows应用程序。

应用程序
Windows API       用户模式
-------------------------
操作系统内核      内核模式
硬件

2. 如何学习Windows API?
Windows API = 学函数

3. Windows API在线文档
MSDN这是微软公司面向软件开发者的一种信息服务。MSDN实际上是一个以Visual Studio和Windows
平台为核心整合的开发虚拟社区,包括技术文档、在线电子教程、网络虚拟实验室、微软产品下载等等一系列服务。
网址:https://msdn.microsoft/library

4. Windows API分类
Windows API就是Windows应用程序接口,是针对Microsoft Windows操作系统家族的系统编程接口,
这样的系统包括Windows 8.1 Windows8 Windows7等几乎所有版本。WIN32 API也是Microsoft Windows
32位平台的应用程序编程接口。

Windows API包括几千个可调用的函数,大致可以分为几类:
基础服务
组件服务
用户界面服务
图形多媒体服务
消息和协作
网络
Web服务

5. 第一个HellWorld应用程序
#include <windows.h>

int WINAPI WinMain(HINSTANCE hlnstance, HINSTANCE hPrevlnstance, LPSTR lpCmdLine, int nCmdShow)
{
    MessageBox(NULL, L"第一个Win32程序", L"hello world", MB_OK);

    return 0;
}


6. 入口函数WinMain详解
(1)类似于C程序的main函数,Win32应用程序也有一个入口函数WinMain,改函数被系统自动调用,
函数原型如下:
int WINAPI WinMain(
    HINSTANCE hlnstance,  //应用程序当前实例的句柄
    HINSTANCE hPrevlnstance,  //应用程序先前实例的句柄。同一个程序打开两次,出现两个窗口
                              //第一次打开的窗口就是先前实例的窗口。对于一个32位程序,该参数
                              总为NULL
    LPSTR lpCmdLine,      //命令行的字符串的指针,类似C语言中的argc argv,只不过这里只用了一个参数
                           就可以获得参数的个数和内容                           
    int nShowCmd          //窗口显示方式、默认为SW_SHOWDEFAULT
    );
(2)奇怪的数据类型?
符号                原型                              说明
WINAPI            #define WINAPI  __stdcall          标准调用约定、__stdcall是专门用来调用Win API的
HINSTANCE         struct HINSTANCE__ {int unused;}
                  typedef HINSTANCE__ * HINSTANCE    就是一个结构体类型指针
LPSTR             typedef CHAR *LPSTR;               就是char * 类型
HANDLE            typedef void * HANDLE;             就是一个void类型指针

7. 应用程序实例句柄
WinMain函数的第一个参数hlnstance就是可执行文件的实例句柄,实际上是个内存地址,它指出系统在何处把
EXE文件装载入进程的地址空间。

8.Windows窗口程序简介
目前开发Windows窗口程序的主流技术有以下:
技术                        简介                                                语言
Win32 API               Windows平台底层API、效率高、难度较高                     C++
MFC框架                 微软基础类库(Microsoft Fundation Class,MFC)             C++
                        对Win32 API的面向对象封装、难度较高 
QT框架                  跨平台 UNIX LINUX WINDOWS                                C++
WPF框架                                                                          C#
Windows form                                                                     C# VB

本文标签: Windows api