C++在VS2022开发Windows窗口程序1:第一个win窗口程序

咩咩大主教 2024-08-09 13:05:02 阅读 73

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文件。

<code>#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应用程序开发所需要的函数和数据类型的定义。

<code>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按钮。



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。