当前位置: 首页 > article >正文

Windows 程序设计2:第一个Windows实例程序

文章目录

  • 前言
  • 一、新建项目
  • 二、调用Windows API函数示例
    • 1.MessageBox 函数API
  • 总结


前言

Windows 程序设计2:第一个Windows实例程序。


一、新建项目

点击文件->新建->项目
在这里插入图片描述
选择Windows桌面向导,这就是vs之前版本对应的Win32应用程序
在这里插入图片描述
选择桌面应用程序,且为了演示方便选择空项目
在这里插入图片描述
至此,项目建立完毕。在解决方案资源管理器中可以看到该项目包含的一些文件,由于新建的为空项目,这里目前没有文件。
在这里插入图片描述
如果没有自动出现解决方案资源管理器,则点击视图下的解决方案资源管理器即可
在这里插入图片描述
右键工程,点击添加->新建项
在这里插入图片描述
先添加一个FirstApp.cpp源文件
在这里插入图片描述
添加之后,源文件就加入到工程项目当中
在这里插入图片描述
此时进行编译,点击生成下的生成解决方案
在这里插入图片描述
会出现报错
在这里插入图片描述
这是由于目前的空项目缺少Windows编程的入口点函数WinMain()

// 前两个参数用的不多,后两个参数用的较多,
//第一个参数为当前程序的实例句柄;第二个参数为上一个程序的实例句柄;第三个参数为命令行参数(LPTSTR字符串类型);第四个参数为显示方式
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPreInstance, char* lpCmdLine, int nShowCmd)
{
	return 0;
}

此时编译是有问题的,
在这里插入图片描述

下面进行解决.出现报错的原因是程序找不到一些类型的定义,这是由于我们建立的是Windows程序,缺少了一些头文件的包含,

#include<windows.h>

// 前两个参数用的不多,后两个参数用的较多,
//第一个参数为当前程序的实例句柄;第二个参数为上一个程序的实例句柄;第三个参数为命令行参数(LPTSTR字符串类型);第四个参数为显示方式
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPreInstance, char* lpCmdLine, int nShowCmd)
{
	return 0;
}

此时编译成功
在这里插入图片描述
这里需要注意一点:微软的字符集有两种,见下图。一种为多字节的,一种是Unicode宽字节的。简单理解使用多字节的在中文系统上显示中文字符没有问题,但是在日文等系统上显示日文等字符会乱码。因此微软建议使用Unicode编码方式。
在这里插入图片描述
因此,我们将上述的WinMain函数进行一些修改,改为更加通用的类型

#include<windows.h>
#include<tchar.h>
// 前两个参数用的不多,后两个参数用的较多,
//第一个参数为当前程序的实例句柄;第二个参数为上一个程序的实例句柄;第三个参数为命令行参数(字符串类型);第四个参数为显示方式
int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPreInstance, LPTSTR lpCmdLine, int nShowCmd) // 通用字节类型的入口点函数
{
	return 0;
}

二、调用Windows API函数示例

1.MessageBox 函数API

MessageBox 函数为提示框函数,具体使用如下

#include<windows.h>
#include<tchar.h>
// 前两个参数用的不多,后两个参数用的较多,
//第一个参数为当前程序的实例句柄;第二个参数为上一个程序的实例句柄;第三个参数为命令行参数(字符串类型);第四个参数为显示方式
int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPreInstance, LPTSTR lpCmdLine, int nShowCmd) // 通用字节类型的入口点函数
{
	MessageBox(NULL, _T("提示文本"), _T("标题"), MB_OK);// 第一个参数为窗口句柄(没有创建窗口传递NULL即可);第二个参数为字符串,即提示的文本;第三个参数为字符串,即提示框的标题;第四个参数为提示框上的按钮
	return 0;
}

编译运行后结果为
在这里插入图片描述


总结

Windows 程序设计2:第一个Windows实例程序。


http://www.kler.cn/a/488669.html

相关文章:

  • 计算机网络之---传输层的功能
  • 面试:C++类成员初始化顺序
  • 【Linux】模拟Shell命令行解释器
  • 【SpringAOP】Spring AOP 底层逻辑:切点表达式与原理简明阐述
  • C++ 如何将 gRPC集成到机器人系统中
  • 云计算基础,虚拟化原理
  • 什么是数据湖?大数据架构的未来趋势
  • C++ 中的 template <typename T> 用法 ← 泛型
  • 【UE5 C++课程系列笔记】23——多线程基础——AsyncTask
  • vscode开启调试模式,结合Delve调试器调试golang项目详细步骤
  • 每日算法Day14【删除二叉搜索树中的节点、修剪二叉搜索树、将有序数组转换为二叉搜索树、把二叉搜索树转换为累加树】
  • PHP 循环控制结构深度剖析:从基础到实战应用
  • 后端技术选型 sa-token校验学习 上 登录校验复习
  • 【YashanDB知识库】YMP从mysql迁移到崖山,报错:服务器错误
  • 从企业级 RAG 到 AI Assistant , Elasticsearch AI 搜索技术实践
  • STM32 中的 CRH 和 CRL 寄存器
  • React+css+切换主题色
  • 金融智能引擎
  • 力扣每日刷题
  • PySpark学习笔记4-共享变量,内核调度
  • Erlang语言的网络编程
  • 力扣 74. 搜索二维矩阵
  • Flask返回浏览器无乱码方法
  • selenium如何分析网页呢 python爬虫,
  • RK3568-ubuntu旋转显示和触摸
  • 准备机器学习数据的完整指南