本人正在学习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. 最终总结

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

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

以上就是入门的第一步;

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

Windows入门(一)相关推荐

  1. ros2与windows入门教程-windows上安装ROS2 foxy

    系列文章目录 ros2与windows入门教程-windows上安装ROS2 foxy ros2与windows入门教程-控制小乌龟 ros2与windows入门教程-监听和发布话题 ros2与win ...

  2. 《SAS 统计分析与应用从入门到精通(第二版)》一第1章 SAS for Windows入门1.1 SAS简介...

    本节书摘来自异步社区<SAS 统计分析与应用从入门到精通(第二版)>一书中的第1章,第1.1节,作者汪海波 , 罗莉 , 吴为 , 孟玲 , 杨世宏 , 汪海玲,更多章节内容可以访问云栖社 ...

  3. elasticsearch 6.x (一) 部署 windows入门 spingboot连接

    大家好,我是烤鸭: 今天分享的是 elasticsearch 6.x 部署 windows服务器. 环境: win10 elasticsearch-6.2.4 springboot 2.0.0.REL ...

  4. zookeeper windows 入门安装和测试

    一.序言       以下是我对zookeeper 的一些理解:      zookeeper 作为一个服务注册信息存储的管理工具,好吧,这样说得很抽象,我们举个"栗子". 栗子1 ...

  5. [PHP实战]ThinkPHP入门-1[windows]入门教程(带完整图文) + WampServer环境配置

    ThinkPHP入门 0.介绍 0.1 ThinkPHP介绍 0.2 WampServer介绍 0.3 完整案例 1.环境 2.安装步骤 2.1 安装wampserver 2.2 安装好Wamp后访问 ...

  6. DirectX教程(1):基本Windows入门

    Win32控制台程序 vs. Windows程序   下面是一个简单的Win32程序,main函数是程序的起点,Windows能够向程序输入任何你认为必要的参数. #include <stdio ...

  7. Windows 入门 AI 视觉处理 --- 搭建姿势识别应用 之 利用NVIDIA Maxine识别人体姿势

    随着AI技术的发展, 数字内容创建业务也变得越来越火热.人脸美化,身材修图,虚拟姿势和背景等功能也让我们的照片视频等数字内容越来越丰富.而在这些功能背后,离不开姿势识别,人脸特征点识别,虚拟背景,现实 ...

  8. Pelican 的Windows 入门教程

    为什么选择TA 在windows下可以很方便的运行,不需要ruby,只要安装pytho n,而且不需要知道python脚本怎么使用 简洁,带有code 高亮,如果用rst写的话还支持更多代码显示 模块 ...

  9. windows入门Elasticsearch(es)之4:插件

    常用的es操作 list 查询插件 elasticsearch-plugin list 添加插件install elasticsearch-plugin install 插件名字 下面说说分词插件有哪 ...

最新文章

  1. 北大成功研发 “忘情水” ,可精准删除特定记忆,有望今年进行人体测试
  2. 【网页前端设计Front end】HTML语言基础.下(看不懂你来打我)
  3. 动态折线图-Android篇
  4. Kubernetes(六) - Secret和私有仓库认证
  5. 125KHz 100cm ID 读卡电路_智能卡制作频率13.25MHZ与125KHZ的区别
  6. base cap 分布式_高并发架构系列:详解分布式一致性ACID、CAP、BASE,以及区别
  7. 【转】1.B(译).NET4.X并行任务Task需要释放吗?
  8. 信息学奥赛一本通 1123:图像相似度 | OpenJudge NOI 1.8 06:图像相似度
  9. aws rds监控慢sql_在AWS RDS SQL Server上使用SSIS包
  10. Hadoop伪分布式搭建(本人新手,欢迎大家多多指导和关照)
  11. ipv6单播地址包括哪两种类型_IPv6基础介绍
  12. ORA-01790:表达式必须具有与对应表达式相同的数据类型
  13. 长白山沟谷地带珍贵药材选址设计实习
  14. 解决苹果电脑OS X 10.8.5或10.7.5 老版本系统升级问题
  15. SharpShooter Reports.Web 7.5 Crack
  16. 字节二面(估计是凉了)
  17. excel表格合并程序
  18. 成功卸载norton antivirus企业版
  19. 百度商家口碑将停止运营并下线
  20. 在python中读取npz文件

热门文章

  1. PHP短信在订单通知中的应用
  2. 贴吧楼中楼回复机器人_如何在贴吧引流?贴吧引流都有什么玩法,以及怎么操作...
  3. linux东软培训答案,东软Linux实验报告.doc
  4. 蓝桥杯:翻硬币(贪心)
  5. dword 占用多少信_word 信纸是多少
  6. 简单双向LSTM模型实战项目
  7. TIPTOP ERP 用户密码修改
  8. SQL Server--嵌套查询
  9. 正确串/并联锂电池(转)
  10. java日期月份转英文格式