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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/33591.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OkHttp框架源码深度剖析【Android热门框架分析第一弹】

OkHttp介绍 OkHttp是当下Android使用最频繁的网络请求框架&#xff0c;由Square公司开源。Google在Android4.4以后开始将源码中的HttpURLConnection底层实现替换为OKHttp&#xff0c;同时现在流行的Retrofit框架底层同样是使用OKHttp的。 源码传送门 优点: 支持Http1、Http…

[保姆级教程]uniapp设置字体引入字体格式

文章目录 在 UniApp 中设置和引入自定义字体&#xff08;如 .ttf、.woff、.woff2 等格式&#xff09;通常涉及几个步骤。 准备字体文件&#xff1a; 首先&#xff0c;你需要有字体文件。这些文件通常以 .ttf、.woff 或 .woff2 格式提供。确保有权使用这些字体&#xff0c;并遵守…

如何在Web开发中创建、删除和修改按钮:实用指南

在Web开发中&#xff0c;创建、删除和修改按钮是常见的用户交互元素&#xff0c;用于管理数据、改变状态或执行特定操作。本篇博客将介绍如何设计和实现这些按钮&#xff0c;以及一些实用的技巧和最佳实践。 创建按钮 创建按钮通常用于添加新数据或执行新操作。在HTML中&…

代码随想录算法训练营第二十八天

题目&#xff1a;134. 加油站 暴力方法 暴力的方法很明显就是O(n^2)的&#xff0c;遍历每一个加油站为起点的情况&#xff0c;模拟一圈。 如果跑了一圈&#xff0c;中途没有断油&#xff0c;而且最后油量大于等于0&#xff0c;说明这个起点是ok的。 暴力的方法思路比较简单…

SCI一区TOP|电鳗觅食优化算法(EEFO)原理及实现【免费获取Matlab代码】

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献5.代码获取 1.背景 2024年&#xff0c;W Zhao受到自然界中电鳗群体觅食行为启发&#xff0c;提出了电鳗觅食优化算法&#xff08;Electric Eel Foraging Optimization, EEFO&#xff09;。 2.算法原理 2.1算…

通俗易懂四元数

基本概念 定义&#xff1a; 四元数是由实部和虚部组成的扩展复数。一个四元数可以表示为 q a b i c j d k q a bi cj dk qabicjdk&#xff0c;其中 w w w 是实部&#xff0c; ( x i , y j , z k ) (xi, yj, zk) (xi,yj,zk) 是虚部。他的共轭值定义为&#xff1a; …

泛微E9技术网站

泛微E9技术网站: 1、丸子小工具 - 丸子张丨OnesZha 2、官方文档网站首页&#xff1a; 泛微在线文档 (e-cloudstore.com) 2.1、E9表单建模前端接口API 泛微在线文档 (e-cloudstore.com) 2.2、E9流程表单前端接口API 泛微在线文档 (e-cloudstore.com)

SSRF漏洞原理与案例分析

一、什么是SSRF漏洞 SSRF (Server-Side Request Forgery&#xff1a;服务器端请求伪造)是一种由攻击者构造请求&#xff0c;由服务端发起请求的安全漏洞。一般情况下&#xff0c;SSRF攻击的目标是外网无法访问的内部系统(正因为请求是由服务端发起的&#xff0c;所以服务端能请…

Marin说PCB之如何在CST仿真软件中添加三端子的电容模型?--02

小编我在上期文章的结尾给大家留下一个小问题就是&#xff1a;在三端子电容创建模型中间的部分我有说了一句就是&#xff1a;&#xff08;其中有一个creat reference pin 设置我们也默认不勾选&#xff09;&#xff0c;这个勾选不勾选有啥区别呢&#xff1f;这期文章就来给大家…

提高LabVIEW程序可靠性

​提高LabVIEW程序的可靠性是确保系统稳定运行、减少故障和维护成本的重要措施。以下从多个方面详细分析如何提高LabVIEW程序的可靠性 1. 选择合适的架构 1.1 状态机架构 适用情况&#xff1a; 多状态、多步骤操作。 具体例子&#xff1a;在一个自动测试系统中&#xff0c;…

【Samba端口映射文件共享】

Samba端口映射文件共享 参考链接&#xff1a;windows和linux之间的共享目录,实现Windows和Linux之间的文件共享 首先需要安装samba&#xff0c;Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件&#xff0c;由服务器及客户端程序构成。SMB(Server Messages Block&#xff…

微信小程序canvas2d频繁重绘时图片闪烁问题

问题&#xff1a;使用了拖动事件&#xff0c;需要频繁重绘canvas&#xff0c;导致图片闪烁。 原因&#xff1a;官方示例中&#xff0c;canvas2d需要手动加载图片&#xff0c;再在图片的onLoad函数绘制图片&#xff0c;延迟太高&#xff0c;导致刷新时图片闪烁。 解决&#xff1…

[汇总] Docker容器详解 Macvlan 创建不同容器独立跑仿真(持续更新中)

一、概念介绍 1.1 什么是macvlan macvlan是一种网卡虚拟化技术&#xff0c;能够将一张网卡&#xff08;Network Interface Card, NIC&#xff09;虚拟出多张网卡&#xff0c;这意味着每个虚拟网卡都能拥有独立的MAC地址和IP地址&#xff0c;从而在系统层面表现为完全独立的网络…

mybatisplus字段注入MetaObjectHandler扫描不到我的指定填充字段

使用mybatisplus自带的字段填充策略注入值的时候&#xff0c;发现并没有扫描到我的指定字段。 1. 初始代码 Component Slf4j public class MyMetaObjectHandler implements MetaObjectHandler {private static final String createByFiled "createBy";private stati…

Python数据可视化---pygal模块(基础篇)

pygal模块 安装pygal模块 pygal模块的安装非常简单&#xff0c;只需输入一行pip命令即可 pip install pygal安装完成&#xff1a; pygal模块介绍 pygal官网地址 pygal是Python的第三方库&#xff0c;他的主要功能就是数据可视化&#xff0c;即将数字转化成图表的形式来呈…

情绪管理篇:让七情自然流露,不过分压抑也不掺杂极端的想法即可来去自如

情绪管理篇&#xff1a; 人有七情&#xff0c;本属常理&#xff0c;该哭的时候哭、该笑的时候笑、该怒的时候怒、该忧的时候忧 学习圣贤之学&#xff0c;并非让我们像木头人一样&#xff0c;枯木死灰&#xff0c;而要让自己不要被七情所缠缚、被七情所乱心&#xff0c;我们的喜…

CUDA-Programming-Guide-in-Chinese

CUDA-Programming-Guide-in-Chinese/第1章CUDA简介 at main HeKun-NVIDIA/CUDA-Programming-Guide-in-Chinese GitHub

ONLYOFFICE 文档 8.1 现已发布:功能全面的 PDF 编辑器、幻灯片版式等等

0、前言 在技术的快速发展和工作方式的持续演进下&#xff0c;现代办公软件正变得越来越强大和多样化。ONLYOFFICE&#xff0c;作为市场上备受瞩目的一体化办公解决方案&#xff0c;以其全面的文档编辑、表格处理和演示制作功能&#xff0c;满足了用户在不同办公场景下的需求。…

25、架构-微服务的驱动力

微服务架构的驱动力可以从多方面探讨&#xff0c;包括灵活性、独立部署、技术异构性、团队效率和系统弹性等。 灵活性和可维护性 灵活性是微服务架构的一个主要优势。通过将单体应用拆分成多个独立的微服务&#xff0c;开发团队可以更容易地管理、维护和更新各个服务。每个微…

前端 响应式设计的概念

响应式设计&#xff08;Responsive Design&#xff09;是一种网页设计和开发的方法论&#xff0c;旨在使网站能够适应各种不同的设备和屏幕尺寸&#xff0c;包括桌面电脑、平板电脑和手机等移动设备。其核心理念是一个网站能够根据访问者的设备特性自动调整布局、内容和功能&am…