Windows操作系统是由微软公司开发和维护的一系列图形化操作系统的统称。Windows操作系统主要用于个人计算机、笔记本电脑、平板电脑、服务器等设备上。Windows起源于Microsoft-DOS模拟环境,相比于DOS的指令化模式,Windows采用图形化的模式,因此更加的人性化。
Windows的程序主要分为控制台应用程序和GUI应用程序。控制台应用程序通常用于执行简单的命令行任务或系统管理,而GUI应用程序则用于提供更复杂的用户界面和功能,两种程序最显著的区别就是入口函数不同,控制台的入口函数是main函数,而WindowsGUI的入口函数是WinMain函数。本专栏主要以Windows的GUI应用程序为主。
开发环境:VS2022、Win11系统。
首先打开VS2022,然后创建一个Windows桌面应用程序。
值得注意的是,VS2022还有一个默认的"Windows桌面向导"项目模板,使用Windows桌面向导项目,我们可以选择不同的桌面应用程序框架(如WPF、Windows Forms等),并提供了一些默认的设置和布局,以帮助我们快速搭建应用程序的基本结构。通过这个项目模板,就可以专注于应用程序的功能和界面设计,而无需从头开始搭建整个项目架构。
第一个项目的初始文件如下图所示:
运行代码如下。
这是VS2022自带的WindowsGUI程序的默认模板,我们暂时先不管它。
把这些默认文件删除掉,然后创建一个新的.cpp文件。
#include<Windows.h>
int CALLBACK WinMain(HINSTANCE hInstance, HINSTANCE hPreInstance, LPSTR IpCmdLine, int nCmdSHow)
{
MessageBox(NULL, TEXT("Hello World"), TEXT("my first windows application"), MB_OK);
return 0;
}
将上述代码复制到CPP文件中,然后运行代码。
一个简单的WindowsGUI程序就做好了,由于VS2022十分适合开发Windows程序,所以我们用VS2022进行编程非常低舒服,不用配置任何复杂的环境,就可以直接运行。
Windows.h头文件包含了Windows API的头文件,提供了Windows应用程序开发所需要的函数和数据类型的定义。
Windows.h
WinMain函数,是WindowsGUI程序的入口函数,相当于控制台程序里面的main函数,WinMain函数的主要作用是初始化应用程序,显示主窗口,并进入一个消息接收--------发送的循环,这个循环是应用程序执行的其余部分的顶级控制结构。
int CALLBACK WinMain(HINSTANCE hInstance, HINSTANCE hPreInstance, LPSTR IpCmdLine, int nCmdSHow)
WinMain的函数声明如下:
int CALLBACK WinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow
);
- `hInstance`:当前实例的句柄。
- `hPrevInstance`:在32位Windows系统中已经废弃,始终为NULL。
- `lpCmdLine`:指向应用程序的命令行参数的指针。
- `nCmdShow`:初始窗口显示的方式,如最大化、最小化、正常等。
MessageBox函数,用于创建和显示一个消息框,其实用法就类似于大家刚学C语言时候用的printf函数,用于输出信息。
MessageBox(NULL, TEXT("Hello World"), TEXT("my first windows application"), MB_OK);
声明如下:
int MessageBox(
HWND hWnd,
LPCTSTR lpText,
LPCTSTR lpCaption,
UINT uType
);
- `hWnd`:消息框的父窗口句柄。如果为 `NULL`,消息框将显示在屏幕中央。
- `lpText`:要在消息框中显示的消息文本,通常是一个字符串。
- `lpCaption`:消息框的标题文本,将显示在消息框的标题栏中。
- `uType`:消息框的样式,指定了消息框的按钮组合、图标类型、默认按钮等属性。MB_OK就是一个OK按钮。