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;并遵守…

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

题目&#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算…

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;…

[汇总] 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;我们的喜…

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

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

Hi3861 OpenHarmony嵌入式应用入门--LiteOS Mutex

CMSIS 2.0接口中的Mutex&#xff08;互斥锁&#xff09;是用于在多线程环境中保护共享资源的访问机制。Mutex&#xff08;互斥锁&#xff09;是一种特殊的信号量&#xff0c;用于确保同一时间只有一个线程可以访问特定的共享资源。 在嵌入式系统或多线程应用中&#xff0c;当多…

Mysql索引底层数据结构——Java全栈知识(28)

Mysql索引底层数据结构 1、什么是索引 索引在项目中还是比较常见的&#xff0c;它是帮助MySQL高效获取数据的数据结构&#xff0c;主要是用来提高数据检索的效率&#xff0c;降低数据库的IO成本&#xff0c;同时通过索引列对数据进行排序&#xff0c;降低数据排序的成本&…

arduino按钮

Arduino - Button Arduino - 按钮 参考&#xff1a; ezButton-按钮库从按钮开关看上拉pull-up电阻、下拉电阻按键的防抖动处理 The button is also called pushbutton, tactile button or momentary switch. It is a basic component and widely used in many Arduino projec…

【gif制作】Win下视频生成GIF;工具GifCam单色保存,灰度保存,调速,编辑删除帧添加文本

下载地址 https://blog.bahraniapps.com/gifcam/#download https://gifcam.en.softonic.com/ 界面功能 GifCam 简洁、小巧的 gif 录制软件。GifCam就像照相机一样位于所有窗口的顶部&#xff0c;可以移动它并调整其大小录屏所需的区域。 如图&#xff1a;空闲状态下窗口内…

给XPTABLE添加右键菜单(XPTable控件使用说明十一)

用户右键点击TABLE控件&#xff0c;弹出一个菜单&#xff0c;选择菜单对应到相关的操作 1、增加一个contextMenuStrip6控件&#xff0c;在里面增加2个ITEM&#xff0c;名称用中文命名 2、给两个ITEM添加点击后的事件 3、在XPTABLE上增加点击事件&#xff1a; 4、当用户右键点击…

vantUI upload 上传组件v-model绑定问题

直接绑定一个数组会有问题,删除失效/上传不了等等 解决在v-model绑定的数组外包一个对象即可

零基础MySQL完整学习笔记

零基础MySQL完整学习笔记 1. 基础操作(必须会!)1.1 修改密码(4种方法)1.2 创建新用户1.3 导入数据库 2. SQL四种语言介绍2.1 DDL(数据库定义语言)2.2 DML(数据操纵语言)2.3 DCL(数据库控制语言)2.4 TCL(事务控制语言) 3. 数据库操作3.1 创建数据库3.2 查询数据库3.3 删除数据库…

聊聊 oracle varchar2 字段的gbk/utf8编码格式和字段长度问题

聊聊 oracle varchar2 字段的gbk/utf8编码格式和字段长度问题 1 问题现象 最近在排查某客户现场的数据同步作业报错问题时&#xff0c;发现了部分 ORACLE 表的 varchar2 字段&#xff0c;因为上游 ORACLE数据库采用 GBK 编码格式&#xff0c;而下游 ORACLE 数据库采用UTF8 编…