Windows入门(一)
本人正在学习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 窗口回调函数 ![](/assets/blank.gif)
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. 最终总结
经过以上步骤 ,就可以创建出一个简单的窗口
(注:因为我们还没有写消息循环函数,所在我们创建窗口的一瞬间就会死掉,如果想看窗口可打断点观看)
以上就是入门的第一步;
如果文章哪里有错误,欢迎指出,我会进行修改。
Windows入门(一)相关推荐
- ros2与windows入门教程-windows上安装ROS2 foxy
系列文章目录 ros2与windows入门教程-windows上安装ROS2 foxy ros2与windows入门教程-控制小乌龟 ros2与windows入门教程-监听和发布话题 ros2与win ...
- 《SAS 统计分析与应用从入门到精通(第二版)》一第1章 SAS for Windows入门1.1 SAS简介...
本节书摘来自异步社区<SAS 统计分析与应用从入门到精通(第二版)>一书中的第1章,第1.1节,作者汪海波 , 罗莉 , 吴为 , 孟玲 , 杨世宏 , 汪海玲,更多章节内容可以访问云栖社 ...
- elasticsearch 6.x (一) 部署 windows入门 spingboot连接
大家好,我是烤鸭: 今天分享的是 elasticsearch 6.x 部署 windows服务器. 环境: win10 elasticsearch-6.2.4 springboot 2.0.0.REL ...
- zookeeper windows 入门安装和测试
一.序言 以下是我对zookeeper 的一些理解: zookeeper 作为一个服务注册信息存储的管理工具,好吧,这样说得很抽象,我们举个"栗子". 栗子1 ...
- [PHP实战]ThinkPHP入门-1[windows]入门教程(带完整图文) + WampServer环境配置
ThinkPHP入门 0.介绍 0.1 ThinkPHP介绍 0.2 WampServer介绍 0.3 完整案例 1.环境 2.安装步骤 2.1 安装wampserver 2.2 安装好Wamp后访问 ...
- DirectX教程(1):基本Windows入门
Win32控制台程序 vs. Windows程序 下面是一个简单的Win32程序,main函数是程序的起点,Windows能够向程序输入任何你认为必要的参数. #include <stdio ...
- Windows 入门 AI 视觉处理 --- 搭建姿势识别应用 之 利用NVIDIA Maxine识别人体姿势
随着AI技术的发展, 数字内容创建业务也变得越来越火热.人脸美化,身材修图,虚拟姿势和背景等功能也让我们的照片视频等数字内容越来越丰富.而在这些功能背后,离不开姿势识别,人脸特征点识别,虚拟背景,现实 ...
- Pelican 的Windows 入门教程
为什么选择TA 在windows下可以很方便的运行,不需要ruby,只要安装pytho n,而且不需要知道python脚本怎么使用 简洁,带有code 高亮,如果用rst写的话还支持更多代码显示 模块 ...
- windows入门Elasticsearch(es)之4:插件
常用的es操作 list 查询插件 elasticsearch-plugin list 添加插件install elasticsearch-plugin install 插件名字 下面说说分词插件有哪 ...
最新文章
- 北大成功研发 “忘情水” ,可精准删除特定记忆,有望今年进行人体测试
- 【网页前端设计Front end】HTML语言基础.下(看不懂你来打我)
- 动态折线图-Android篇
- Kubernetes(六) - Secret和私有仓库认证
- 125KHz 100cm ID 读卡电路_智能卡制作频率13.25MHZ与125KHZ的区别
- base cap 分布式_高并发架构系列:详解分布式一致性ACID、CAP、BASE,以及区别
- 【转】1.B(译).NET4.X并行任务Task需要释放吗?
- 信息学奥赛一本通 1123:图像相似度 | OpenJudge NOI 1.8 06:图像相似度
- aws rds监控慢sql_在AWS RDS SQL Server上使用SSIS包
- Hadoop伪分布式搭建(本人新手,欢迎大家多多指导和关照)
- ipv6单播地址包括哪两种类型_IPv6基础介绍
- ORA-01790:表达式必须具有与对应表达式相同的数据类型
- 长白山沟谷地带珍贵药材选址设计实习
- 解决苹果电脑OS X 10.8.5或10.7.5 老版本系统升级问题
- SharpShooter Reports.Web 7.5 Crack
- 字节二面(估计是凉了)
- excel表格合并程序
- 成功卸载norton antivirus企业版
- 百度商家口碑将停止运营并下线
- 在python中读取npz文件