Windows程序设计之HelloWorld程序
我们学习一种编程语言,首先就是学习如何用这种语言在屏幕上输出一行Hello World
。下面我们会将用C语言编写一个“Hello World”级的Windows程序
。
程序效果
当我们运行编写完成的程序时,将会在屏幕上显示一个对话框
。对话框的标题为对话框标题
,对话框中的文本为Hello Win10!
。另外,窗口中还有一个确定
按钮。
源代码
#include <windows.h>
int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PWSTR pCmdLine, int nCmdShow)
{
MessageBoxW(NULL, L"Hello Win10!", L"对话框标题", 0);
return 0;
}
代码解释
头文件
在程序的开始我们include了一个windows.h
头文件。windows.h
头文件是windows编程中最重要的头文件(没有之一)。windows.h
中定义了大部分windows API
(Application Program Interface 应用程序接口)。所谓windows API,也就是操作系统提供的一些“工具”,我们可以通过这些“工具”来调用操作系统实现的功能。
程序入口
C/C++语言的程序入口是main函数
,而windows程序的程序入口时WinMain函数
以及wWinMain函数
。WinMain函数与wWinMain函数的区别在于程序使用的字符集不同。当我们使用WinMain函数时,程序的字符集为ANSI;当我们使用wWinMain函数时,程序的字符集为Unicode。由于我们的“HelloWorld”程序中使用了中文,所以我们使用wWinMain函数作为程序入口。
在wWinMain之前WINAPI标识符
规定了一种函数调用约定,表明如何生成在函数中放置调用参数的机器代码。
hIntance
参数是程序的实例句柄
,操作系统用实例句柄来标识可执行文件。
hPrevInstance
曾经在Windows16中使用,现在已经没有任何意义,它的值始终是0。
pCmdLine
参数包含了Unicode字符串的命令行参数参数
nCmdShow
参数是一个标识,它指定了主应用程序窗口是正常显示、最大化还是最小化。
MessageBoxW函数
MessageBoxW
函数用于在屏幕上显示一个对话框。其函数原型为:
int MessageBoxW(HWND hWnd, LPCWSTR lpText, LPCWSTR lpCaption, UINT uType);
MessageBoxW
函数的W
的含义是该函数使用Unicode字符集。相应地,使用ANSI字符集的函数为MessageBoxA
。
hWnd
参数是要创建的对话框的所有者窗口的句柄。在本程序中,对话框没有所有者窗口,所以hWnd的值为0。
lpText
参数是显示在对话框中的文本,它是一个Unicode字符串。
lpCaption
参数是窗口的标题,它是一个Unicode字符串。
uType
参数是对话框的内容和行为。