windows程序设计基础--学习记录

一、Windows程序的Hello world

#include<windows.h>int WINAPI WinMain(HINSTANCE hInstance,		//程序实例句柄HINSTANCE hPreHinstance,	//上一个程序的实例句柄(被遗弃,参数始终为NULL)LPSTR lpCmdeLine,			//命令行参数int nCmdeShow				//显示方式
)
{MessageBoxA(0,"12333","Caption",MB_OK);return 0;//以上函数,如果忘记参数和返回值是什么//可以用鼠标双击想要查看的函数,然后按F1,就可以打开微软文档了
}

这是第一个Windows程序,Winmain函数必须写这些参数,不能省略。MessageBox函数有MessageBoxA和MessageBoxW,分别使用ANSI和Unicode字符集。

当然,如果使用VS2022,直接编译运行,会出现这样的错误:
在这里插入图片描述

就是提示找不到main的入口。因为VS2022默认是启动控制台的,我们需要右击解决方案,然后点击属性:
在这里插入图片描述

在子系统这里选择窗口。就可以正常编译运行程序了。

二、Windows程序的字符串处理

字符类型有CHAR和WCHAR,分别是用1字节代表一个字符和2字节代表一个字符。还有TCHAR,这个字符串的类型有可能是CHAR或者WCHAR,由环境决定,需要引入tchar.h头文件。

微软对这两种字符串类型进行了统一,所以有_T(“”)这样的字符串。

#include<windows.h>
#include<tchar.h>int WINAPI WinMain(HINSTANCE hInstance,		//程序实例句柄HINSTANCE hPreHinstance,	//上一个程序的实例句柄(被遗弃,参数始终为NULL)LPSTR lpCmdeLine,			//命令行参数int nCmdeShow				//显示方式
)
{CHAR str1[] = "456789";WCHAR str2[] = L"88888";TCHAR str3[] = _T("787979");//在前面加相应的表示符,那么这个字符串就是WCHAR或者TCHAR类型的了MessageBox(0,str3,str3,MB_OK);return 0;
}

三、Windows窗口程序

#include<windows.h>
#include<tchar.h>LRESULT CALLBACK Wndproc(_In_ HWND hwnd,_In_ UINT uMsg,_In_ WPARAM wParam,_In_ LPARAM lParam
)
{switch (uMsg){case WM_CREATE:MessageBoxW(hwnd, L"Create", L"Atten", MB_OK);break;case WM_CLOSE:MessageBoxW(hwnd, L"Close", L"Atten", MB_OK);DestroyWindow(hwnd);PostQuitMessage(0);break;}return DefWindowProcW(hwnd, uMsg, wParam, lParam);//然而,并不是所有的消息都需要你亲自处理;对于许多常见的消息,Windows 提供了默认的处理行为。//DefWindowProcW 函数就是用来提供这些默认行为的。
}
//以上是回调函数,就是告诉程序接收到相应的事件,应该执行什么操作int WINAPI WinMain(HINSTANCE hInstance,		//程序实例句柄HINSTANCE hPreHinstance,	//上一个程序的实例句柄(被遗弃,参数始终为NULL)LPSTR lpCmdeLine,			//命令行参数int nCmdeShow				//显示方式
)
{//1、创建一个窗口类WNDCLASS myclass = { 0 };myclass.lpszClassName = L"study"; //写win程序都用unicode字符,这样能表示的字符多点myclass.lpfnWndProc = Wndproc;	  //这个填回调函数//2、注册窗口类RegisterClassW(&myclass);		  //就是告诉操作系统我创建了这么一个窗口,用于和操作系统交互//3、创建窗口HWND hwindow = CreateWindowW(myclass.lpszClassName,L"study",WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,0,CW_USEDEFAULT,0,NULL,NULL,hInstance,myclass.lpfnWndProc);//这些参数按F1看看或者问文心一言吧//4、显示窗口ShowWindow(hwindow,SW_SHOWNORMAL);//5、获取消息MSG msg = { 0 };while (GetMessageW(&msg,0,0,0)){DispatchMessageW(&msg);				//分发消息给消息处理函数}//以上是对所有消息进行处理,如果没有消息处理的代码,程序会闪退return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

Jangow

关于靶场环境配置&#xff0c;确实这个靶场存在很大的问题&#xff0c;不仅仅是网络的配置问题&#xff0c;更重要的是明知道如何修改网络环境配置&#xff0c;但是键盘存在很大的问题。许多字符输入不一致。 Vulnhub靶场&#xff0c;Jangow靶机环境找不到ip解决方法。_jangow…

vue3运行若依前后台项目步骤(2024-07-19)

环境配置 1、jdk > 1.8 (我的1.8&#xff09; 2、mysql >5.7 (我的5.8&#xff09; 3、navicat (数据库管理器&#xff0c;连接mysql使用 ,我的是15) 4、mysql&#xff08;数据库&#xff0c;我的5.0&#xff09; 4、npm (我的是18.20.0) 5、idea编辑器,webtorm &#x…

API接口防刷实现(重复调用)

API接口 - 限制重复调用&#xff08;防刷&#xff09; 环境代码实现实现方式定义注解注解应用 环境 JDK 8 SpringBoot 代码实现 实现方式 定义注解&#xff0c;通过切面的方式&#xff0c;检测重复调用。 定义注解 import cn.nhd.fsl.entity.system.Prevent; import cn.nhd…

打造超酷的 React 迷你日历组件,只需几步!

你好&#xff0c;我是小白Coding日志&#xff0c;一个热爱技术的程序员。在这里&#xff0c;我分享自己在编程和技术世界中的学习心得和体会。希望我的文章能够给你带来一些灵感和帮助。欢迎来到我的博客&#xff0c;一起在技术的世界里探索前行吧&#xff01; 前言 现在市面…

基于Linux的USB-wifi配置流程

目录 内核配置 配置 CFG80211 配置usb 配置 Netlink 配置DHCP 工作流程 1.连接到无线网络 2.设置网络接口&#xff1a; 3.验证连接&#xff1a; 4. 接收数据&#xff1a; 最近daisy一直忙活这个linux的wifi驱动和bluze蓝牙驱动&#xff0c;相比较蓝牙&#xff0c;WiFi的驱动和内…

面对垃圾邮件的骚扰,U-Mail邮件安全网关来帮你

在近几年的时间里&#xff0c;企业面临垃圾邮件的威胁成指数级增长&#xff0c;据第三方统计&#xff0c;垃圾邮件占电子邮件总通讯量的60%以上。与此同时&#xff0c;垃圾邮件的类型以及发送手段也愈加复杂化、多样化&#xff0c;电子邮件也一跃成为病毒或恶意软件的主要传播渠…

金蝶官宣:法大大电子签章“星空旗舰版”来了!

融合了数字签名、实名认证、AI、区块链、大数据等能力的法大大电子签章“星空旗舰版”来了&#xff01;通过与金蝶云星空旗舰版的集成产品打造&#xff0c;法大大携手金蝶共同面向客户提供高质量的产品综合解决方案服务。以下内容转载自金蝶云生态&#xff1a; 产品与解决方案 …

kkfileView

目录 一、基本特性 二、安装与部署 三、项目接入使用 四、项目地址与文档 五、应用场景 六、前端使用 kkFileView是一个基于Spring Boot框架构建的文件文档在线预览解决方案&#xff0c;它提供了广泛的文件类型支持、易部署性、跨平台服务、二次开发友好等多种特性。以下是对…

Nginx(详解)

1. 什么是Nginx&#xff1f; Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件&#xff08;IMAP/POP3&#xff09;代理服务器&#xff0c;在BSD-like 协议下发行。其特点是占有内存少&#xff0c;并发能力强&#xff0c;事实上nginx的并发能力在同类型的网页服务器中表…

“点点通“餐饮点餐小程序-计算机毕业设计源码11264

"点点通"餐饮点餐小程序 XXX专业XX级XX班&#xff1a;XXX 指导教师&#xff1a;XXX 摘要 随着中国经济的飞速增长&#xff0c;消费者的智能化水平不断提高&#xff0c;许多智能手机和相关的软件正在得到更多的关注和支持。其中&#xff0c;微信的餐饮点餐小程序更…

C#知识|账号管理系统-账号信息管理界面[1]:账号分类选择框、Panel面板设置

哈喽,你好啊,我是雷工! 前一节实现了多条件查询后端代码的编写, 接下来继续学习账号信息管理界面的功能编写,本节主要记录账号分类选择框和Panel的设置, 以下为学习笔记。 01 功能说明 本节实现以下功能: ①:账号分类选择框只能选择,无法自由输入; ②:账号分类框默认…

11款常用的Python虚拟环境管理器,最受推崇的居然是最后一个

文章目录 1. venv2. virtualenv3. Pipenv4. pyenv5. Conda6. Poetry7. PDM8. Huak9. Pixi10. Rye11. uv《Python从入门到精通&#xff08;第3版&#xff09;&#xff08;软件开发视频大讲堂&#xff09;》编辑推荐内容简介作者简介目录 以下文章来源于Python学研大本营 &#x…

Elasticsearch:如何选择向量数据库?

作者&#xff1a;来自 Elastic Elastic Platform Team 向量数据库领域是一个快速发展的领域&#xff0c;它正在改变我们管理和搜索数据的方式。与传统数据库不同&#xff0c;向量数据库以向量的形式存储和管理数据。这种独特的方法可以实现更精确、更相关的搜索&#xff0c;并允…

ROS2从入门到精通2-3:详解机器人3D物理仿真Gazebo与案例分析

目录 0 专栏介绍1 什么是Gazebo?2 Gazebo架构2.1 Gazebo前后端2.2 Gazebo文件格式2.3 Gazebo环境变量3 Gazebo安装与基本界面4 搭建自己的地图4.1 编辑地图4.2 保存地图4.3 加载地图5 常见问题0 专栏介绍 本专栏旨在通过对ROS2的系统学习,掌握ROS2底层基本分布式原理,并具有…

Java面试八股之Redis怎么实现消息队列

Redis怎么实现消息队列 Redis实现消息队列主要依赖于其内置的数据结构&#xff0c;如List、Pub/Sub&#xff08;发布/订阅&#xff09;和Stream。下面将分别介绍这三种方式及其特点&#xff1a; 1. List实现消息队列 Redis的List是一个双向链表&#xff0c;支持快速的头部和…

ARM架构(二)—— arm v7/v8/v9寄存器介绍

1、ARM v7寄存器 1.1 通用寄存器 V7 V8开始 FIQ个IRQ优先级一样&#xff0c; 通用寄存器&#xff1a;31个 1.2 程序状态寄存器 CPSR是程序状态毒存器&#xff0c;保存条件标志位&#xff0c;中断禁止位&#xff0c;当前处理器模式等控制和状态位。每种异常模式下还存在SPSR&…

Unity扩展SVN命令

可以直接在unity里右键文件提交和查看提交记录 顶部菜单栏上回退和更新整个unity工程 SvnForUnity.CS 记得要放在Editor文件夹下 using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.IO; using UnityEditor; using Unity…

互联网行业的产品方向(二)

数字与策略产品 大数据时代&#xff0c;数据的价值越来越重要。大多数公司开始对内外全部数据进行管理与挖掘&#xff0c;将业务数据化&#xff0c;数据资产化&#xff0c;资产业务化&#xff0c;将数据产品赋能业务&#xff0c;通过数据驱动公司业务发展&#xff0c;支撑公司战…

PyTorch使用细节

model.eval() &#xff1a;让BatchNorm、Dropout等失效&#xff1b; with torch.no_grad() &#xff1a; 不再缓存activation&#xff0c;节省显存&#xff1b; 这是矩阵乘法&#xff1a; y1 tensor tensor.T y2 tensor.matmul(tensor.T)y3 torch.rand_like(y1) torch.matm…

19_Shell练习题

19_Shell练习题 一、获取并打印空行行号 awk /^$/{print NR} test.txt二、求一列的和 awk -v sum0 { sum$2 } END{ print sum } test.txt三、检查文件是否存在 #!/bin/bashecho "请输入要查询文件的全路径名称&#xff1a;" read -p "例如&#xff1a;/temp…