Windows入门(一)

article/2025/9/1 14:44:08

本人正在学习Windows编程操作,所以进行一些记录,希望对刚入门的个位有所帮助。

目录

1.什么是win32编程

2. 一个简单的win32程序

    2.1 创建一个空项目

    2.2  入口函数

    2.3   注册窗口

   2.3.1 窗口回调函数  

    2.4 创建窗口

    2.5 显示窗口

    2.6 更新窗口

3. 最终总结


1.什么是win32编程

       1.在32位的windows操作系统中 调用Windows 的 提供的API来进行编程。和c++时期原来不同的是c++时期我们一般创建控制台应用程序(Console Application),而在win32编成时期,我们使用的是 标准 windows窗口程序。

2. 一个简单的win32程序

    2.1 创建一个空项目

 首先我们创建一个win32的一个空项目。

windows桌面向导:在这里可以自主创建win32空项目和带有预编译头的项目(注:一定要在应用程序类型中选择桌面应用程序,然后在选择)

Windows桌面应用程序:系统自动为搭建好了框架

     2.2  入口函数

和以往的c++应用程序入口函数不同,Windows函数的入口函数为WinMain函数

 该入口函数的返回值为 Int 整形 , APIENTRY 用于标志该函数为入口函数(有的程序有时会写_stdcall 是一样的东西,应为在Windows宏定义中,WINAPI和APIENTRY都是__stdcall的宏定义),HINSTANCE 该参数可以看作是一个标识,用于记录操作的窗口是哪个。

        2.3   注册窗口

前面所说,Win32编程是写窗口程序,所以我们要先进行注册窗口然后才能创建窗口,注册窗口函数函数为RegisterClass

 在windows中我们用 RegisterClass(注:RegisterClassEX 为RegisterClass的扩展函数,基本已经代替RegisterClass) 来注册一个窗口(其实可以看做就是创建了一个带有窗口属性的类),而在这里我们用WNDCLASS 该结构体来保存窗口的属性 

cbsize : 设置WNDCLASS的大小

style: 定义窗口菜单的一些风格

CS_HREDRAW若移动或改变窗口宽度,则刷新整个页面
CS_VREDRA若移动或改变窗口高度,则刷新整个页面
CS_DBLCLKS当用户双击窗口时向窗口发送双击消息
CS_NOCLOSE禁用系统菜单的关闭指令
CS_DROPSHADOW实现窗体边框阴影效果
............

LpfnWndProc : 窗口消息处理函数,是一个回调函数,当窗口有消息时系统自动调用

cbClsExtra: 窗口类结构分配的额外字节数,一般默认为0

cbWndExtra:在窗口实例之后分配的额外字节数。 系统将字节初始化为零。 如果应用程序使                    用 WNDCLASSEX 在资源文件中使用 CLASS 指令创建对话框,则必须将此成员设置                    为 DLGWINDOWEXTRA
 hInstance; 要实例化的窗口的实例句柄
 hIcon: 设置图标资源的句柄
 hCursor:设置应用程序的鼠标样式
 hbrBackground :默认窗口,设置窗口默认背景颜色
 lpszMenuName:菜单的资源名称,名称显示在资源文件中

lpszClassName : WNDCLASS的另一个标识名

   2.3.1 窗口回调函数  

    hwnd : 用于获取控制台窗口句柄                            uint :  该变量为窗口传来的消息     

    wparam: 信息中附带的字参数(后面再说)           lparam :  信息中附带的长参数(后面再说)

 (注:窗口处理函数是必须的,只有当返回true的时候窗口的注册才会成功;如果为默认 要返回       默认的Windows自带的处理函数 DefWindowProchan函数)

 2.4 创建窗口

创建窗口我们使用的是CreateWindow函数

 LpClassName:  注册的窗口的标识                                  LpWindowName :窗口的TItle

DWstyle: 窗口的风格          x:窗口左上角距屏幕顶的距离     y:窗口左上角距屏幕左边框的距离 

nWidth: 窗口的宽                nHeight:窗口的高            hwndParent : 父窗口的句柄

hmenu:菜单句柄                        hinstance:实例句柄                                    lparam:附带信息

2.5 显示窗口

 ShowWindow(HWND hwnd,int nCmdShow);

第一个参数 hwnd 表示显示的窗口是哪个

第二个参数 是表示窗口的显示风格

2.6 更新窗口

UpdateWindow(hwnd);

发送一些消息,更新绘图等等;

3. 最终总结

经过以上步骤 ,就可以创建出一个简单的窗口

(注:因为我们还没有写消息循环函数,所在我们创建窗口的一瞬间就会死掉,如果想看窗口可打断点观看)

以上就是入门的第一步;

如果文章哪里有错误,欢迎指出,我会进行修改。


http://chatgpt.dhexx.cn/article/UdK5MRcw.shtml

相关文章

win11网页版

网页版地址 点它 https://win11.blueedge.me/ 其github库地址其github库地址https://github.com/blueedgetechno/win11React/

windows10/11子系统安装ubuntu22.04

学习目标: winfows10/11 安装wsl内核 基于wsl内核安装Ubuntu系统 基于ubuntu系统安装docker环境 学习内容: 系统下安装wsl2下载ubuntu安装包windows11 安装ubuntu 22.04系统ubuntu 22.04 安装dockerdocker 启动、测试 windows下安装wsl2内核 1、如果未…

快速教你在虚拟机上完美安装Windows1.0

想必不用我说大家用虚拟机安装Windows1.0时都是这样的: 今天我就来教大家如何正确安装Windows1.0 因为在1985年(Windows1.0诞生的年代)的鼠标驱动已经不匹配我们的电脑了,所以我们需要先解决鼠标这个问题。 第一步: 打开UltraISO,在里面打开我们Windows1.0第一个镜像(…

Windows:

服务主机:本地系统(网络受限) CPU利用率高,磁盘利用率高 解决方法: 方法一:禁用SuperFetch服务 计算机:—右键“管理”—SuperFetch—停止。或属性—-禁用。 开机就占用50%的内存(共8G) 关闭家庭组  家…

Windows1.0到Windows10三十年进化史,你还记得自己最初使用的系统吗?

从1985年Windows 1.0正式诞生到2015年Windows 10诞生,微软花了三十年的时间,从像素化桌面到现在扁平化的界面。让我们来看一下Windows 1.0到Windows10三十年来的变化。 1、1985年11月20日,微软发布了第一版的Windows操作系统——Windows1.0。…

【Docker】 Windows10运行Windows镜像时常见错误

项目场景:【Docker】 Windows10运行Windows镜像常见错误 很多项目要求在Windows系统下运行,但开发环境的安装相对复杂,并且难以重新配置到新设备,甚至会出现多个项目的运行环境相互冲突和干扰的情况,这时候配置好一个镜像后就可以一劳永逸解决很多问题,直接用docker拉取Window…

Windows 1.0

Windows 1.0 是微软于1985年11月发布的第一款基于dos的pc图形操作平台.要安装Windows 1.0 先安装好ms-dos2.11.对于ms-dos3以上的,只能看见一个类似资源管理器的程序.因为现在很找到一个很破旧的电脑,所以只能通过虚拟机来实现.推荐使用VMware虚拟机.先进入dos2.11,如下图所示 …

重温经典:Windows1.0系统体验和尝试自己编写Windows1.0系统

相关说明 如果你觉得文章含有侵权部分,可以联系CSDN私聊,我会适当修改。 未经允许,不得转载,如需转载,请CSDN私聊。 Windows Windows,意思是窗口,窗户。当然,他也是一个操作系统的…

[笔记]深入解析Windows操作系统《一》概念和工具

文章目录 前言1.1 Windows操作系统的版本1.2 基础概念和术语Windows API关于 .NetWin32 API 历史服务、函数、例程进程、线程和作业进程tlist /t 查看进程树任务管理查看进程Process Explorer查看进程的细节 线程纤程与用户模式调度器线程 虚拟内存内核模式和用户模式终端服务及…

Windows操作系统各版本的历史 Windows系统历史版本简介

30年间Windows系统有哪些版本?还记得你第一次了解到Windows操作系统存在的时候是哪一年吗?这些操作系统又有哪些特点呢?隐约知道计算机变得越来越小了吗……现在笔者将通过收集的资料,为各位细细解说曾经的操作系统。 30年间Wind…

[字符串]ASCII码表

数字,字母位置 数字0~9对应的ASCII码(十进制)袭为“48”~“57”大写字母A~Z对应的ASCII码(十进制)为“65”~“90”小写字母a~z对应的百ASCII码(十进制)为"97"~“122”表

ASCII 码不同的两种空格:32 和160

背景 在 Linux 下手写一个命令和拷贝 html 页面文本域中的命令执行结果完全不同,后者的命令无法被 Linux 识别。 问题截图 肉眼根本看不出来这两行有什么区别,但执行结果就是有问题。 问题定位 编写测试代码,执行两个字符串的 equals 方法…

ASCII码作用简介

《Linux下的^M困惑》曾提到\r对应的ASCII码十进制形式是13(无显示形式),对应的八进制形式是15(显示为^M),有朋友在后台反馈对ASCII码有些疑惑,因此在这,简单介绍下ASCII。 ASCII,英文全称是American Standard Code for…

什么是ASCII码?

ASCII 表 分类 编程技术 ASCII(发音:,American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统。它主要用于显示现代英语,而其扩展版本延伸美国标准信…

ASCII码对照表(嘤嘤怪自用)

软件Visual Studio 2022 C语言 ASCII码中 字母的ASCII码大小&#xff1a; “A”为65&#xff1b;“a”为97&#xff1b;“0”为 48 同个字母的大写字母比小写字母要小32 因此字母的大小转换可以加减32实现 ASCII码 1. 数字表达字母 源代码 #include <stdio.h…

字符串 ASCII码

ASCII码、 汉字也可以表示。有7745个 字形码

ASCII码与Unicode编码

1. ASCII码 我们知道&#xff0c;在计算机内部&#xff0c;所有的信息最终都表示为一个二进制的字符串。每一个二进制位&#xff08;bit&#xff09;有0和1两种状态&#xff0c;因此八个二进制位就可以组合出256种状态&#xff0c;这被称为一个字节&#xff08;byte&#xff0…

【ASCII码】

定义 ASCII (American Standard Code for Information Interchange)&#xff1a;美国信息交换标准代码是基于拉丁字母的一套电脑编码系统&#xff0c;主要用于显示现代英语和其他西欧语言。它是最通用的信息交换标准&#xff0c;并等同于国际标准 ISO/IEC 646。ASCII第一次以规…

ASCII码字符对照表

转载自 http://www.51hei.com/mcu/4342.html ASCII码大致由三部分组成&#xff1a; 1、ASCII 打印字符&#xff1a;数字 32–126 分配给了能在键盘上找到的字符&#xff0c;当您查看或打印文档时就会出现。注&#xff1a;十进制32代表空格 &#xff0c;十进制数字 127 代表 …

关于ASCII码

一、ASCII码 ASCII码实际上就是键盘上输入的字符&#xff0c;在计算机中二进制形式 ASCII码表如下图所示&#xff1a; 这张表中包括数字、字母、符号&#xff0c;共128个字符&#xff0c;所以可以用7位二进制编码&#xff0c;为了存入计算机&#xff0c;通常在最高位补0&#…