I. Writing the "Hello world" program

Win32 API(以下简称WinAPI)是运行在Windows环境下的一组函数[ functions ](API - application programming interface 应用编程接口)。这些函数[ functions ]被包含在windows.h库[library]中。

Windows API 是被设计出来在MS Windows操作系统环境下使用C语言
编程用的。Windows API 是从应用层面[ application level ]来说最接近操作系统、与操作系统交互的一条途径。在当前的Windows版本中,所需的更低层的,是设备驱动程序,这可以通过Windows Driver Model获取。

Windows API 是符合C语言语法风格[ conventions ]的一组函数[ functions ]、数据结构[ data structures ]、数值常量[ numerical constants ]的集合。在Windows环境下执行的程序中,所有的编程语言均可调用这些函数、操作这些数据类型,使用这个API。尤其是在C++、Pascal、VB和其他一些语言中。

使用WinAPI函数,你可以轻松地创建不同的窗口程序[ window procedures ]、对话框[ dialog boxes ]、软件、甚至游戏。目前来说,这个库[ library ]是Windows Forms编程和MFC编程开发的基础。因为这些接口是那个库的附加软件。如果你掌握了它,你将可以轻松地创建forms,并且理解这是如何实现的。

我们暂时先不深入这些理论。我们先在MVS(Microsoft Visual Studio)中开始这个项目,然后在本章的结尾完成这个样例。首先,我们打开VS2015,打开“File”(文件)菜单,创建一个新的项目:

这里写图片描述

然后,从下拉框中选择Visual C++,在窗口中选择Win32 Project,选中它。

这里写图片描述

输入这个项目的名称,确认项目所在路径,点击“OK”(确定)。下一步,你将看到一个名为“Win32 Application Wizard”(Win32应用程序向导)的对话框,然后点击“Next”(下一步)。

这里写图片描述

这里,必须选择“Windows application(Windows应用程序)”和“Empty project(空项目)”。默认状态下,“Empty project(空项目)”是未选中的。同样的,我们也需要选中“Windows application(Windows应用程序)”作为我们应用程序的类型。如果一切正确,点击“Finish(完成)”。

这里写图片描述

最后,让我们开始写一个简单的demo程序,万年不变地,会在屏幕上显示一串文字“Hello World”。

必不可少地,你需要先添加一个“cpp”文件到这个创建的项目中。我们在解决方案资源管理器(Solution Explorer)中的“Source Files(源文件)”上右键鼠标,选择“Add(添加)”,然后点击“New Item…(新建项)”。于是乎,下面这个窗口就会出现了:

这里写图片描述

选择“C++文件”,输入名字,点击“Add(添加)”。然后打开这个文件,把下面这串代码站进去。

#include <windows.h> // 头文件,包含了WindowsAPI函数

// 主函数 - 与控制台程序中的int main()一样
int WINAPI WinMain(HINSTANCE hInstance, // 程序实例句柄[ handle of application instance ]
    HINSTANCE hPrevInstance, // 在Win32中不使用
    LPSTR lpCmdLine, // 在控制台模式下运行该窗口的模式
    int nCmdShow) // 窗口显示模式
    {
        // 该函数在屏幕上显示了一个带有“OK”按钮的对话框(我们稍后讨论其他样式)
        MessageBox(NULL, L"Hello, world!!!", L"Window function", MB_OK);
        return NULL; // 返回函数的结果
    }

程序编译成功后运行,会在屏幕上显示这样一个窗口:

这里写图片描述

现在,我们停下来详细看一下这段代码。

在第一行,我们包含了头文件 windows.h,它包含了所有必要的API函数[ function ]

在第4~7行,我们描述了函数 int WINAPI WinMain()。修饰词 WINAPI 对于主函数WinMain来说始终是必要的。只要记住这一点就好。WinMain是函数的名字。它有四个参数。第一个参数 HINSTANCE hInstance () 在第4行。hInstance 是窗口实例句柄[ window instance handler ]窗口程序[ window procedure ]的一种编码[ code ],用来标识该窗口不同于其他窗口)。使用hInstance ,你可以在其他函数中快速找到[ address to ]该窗口(稍后介绍),修改该窗口的设置。 HINSTANCE 是众多在 WinAPI 中定义的数据类型之一,就像 int 一样。 HINSTANCE hInstance 结构告诉我们,我们将创建一个新的变量,其类型为 HINSTANCE ,名称为hInstance

我们将在下一章详细讨论数据类型。so,我们先看下一个参数: HINSTANCE hPrevInstance (第5行)。就像注释中说的那样,在Win32中不被使用。接下来是 LPSTR 变量,变量名称为 lpCmdLine (第6行)。该参数的作用是,当我们在命令行中运行该窗口时,键入该参数。这是很奇异[ exotic ]的一种方法[ solution ],所以我们不再赘述。

最后一个参数:整型,它定义了窗口将以怎样的形式显示。我们需要ShowWindow函数,我们将稍后描述。举例来说,通过该参数,我们可以最大化窗口以填充屏幕,或者使窗口具有一个特定的高度、透明度,或者把它放到屏幕最上方。

现在,我们来到MessageBox ()函数中(第10行)。它有四个变量,用来显示一条错误信息,例如,在我们的项目中,我们用它来展示“Hello world”消息。通常,该函数看起来像这样:

int MessageBox(HWND hWnd, // 父窗口句柄[ parent window handler]
    LPCTSTR lpText, // 指向消息文本字符串的指针
    LPCTSTR lpCaption, // 指向标题文本字符串的指针
    UINT uType); // 用来显示按钮和其他风格图标的标志位

在我们的项目中,第一个参数被设为零。这是因为我们没有父窗口(我们的窗口不从任何其他程序中运行)。接下来,我们有两个类型为 LPCWSTR 的变量 lpText lpCaption。第一个变量包含了我们在窗口中以文本的形式展示的信息。第二个包含了窗口标题的文本。它几乎和char * str 一样,但是还有其他一些特点。如果你在主字符串前输入一个字母 L (UNICODE string) 的话,文本将以合适的方式显示。最后一个数据类型 - UINT - 32位无符号整型。它是简单无符号整型[ simple unsigned integer ]的一个相似物[ analogue ]。通过该变量,你可以传递一些值(稍后详述),用来改变按钮的显示。在我们的例子中, MB_OK 表示窗口创建一个写有“OK”的按钮,并且,当按钮被按下后它将有相应的反应[ action ](它将结束程序)。

在第11行,我们返回了主函数的值,因为它是个空类型函数[ void ]。现在,你对 Windows API 以及如何使用它应该有个大概的印象了。

回到目录
下一篇

这里写图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值