windows c++开发

一  安装 离线MSDN 

MSDN:microsoft developer network ,微软向开发人员提供的一套帮助系统。

运行vs 2017  -》运行  vs studio installer ->点击修改-》单个组件-》代码工具-》help viewer->

安装完后,启动vs 在“帮助”菜单,“设置帮助首选项”-》“在帮助查看器中启动”-》

按F1可以调出帮助。

二 windows 程序内部运行机制

2.1  win api 就是windows 就是windows 系统提供的,以便用户开发windows 的应用程序。 主要的windows 函数都包含在  Windows.h里面。

2.2 什么是win32 SDK?

答:windows 32位平台下的软件开发包,包括api函数 、帮助文档、辅助工具等。

2.3  windows 系统和用程序相互调用是通过传递消息来实现的,不同于传统的dos,windows 是基于事件驱动的程序设计模式。比如鼠标按键消息。

2.4 常用前缀:

WM : windows message   如 WM_LBUTTONDOWN

2.5 消息队列

每个windows 应用程序在开始执行后,系统都会为该程序创建一个消息队列,这个消息队列用来存放该程序创建的窗口的消息。例如,当我们按下鼠标左键的时候,将会产生WM_LBUTTONDOWN 消息,系统会将这个消息放到窗口所属的应用程序的消息队列中,等待应用程序的处理。windows 将产生的消息依次放到消息队列中,而应用程序则通过一个消息循环不断的从消息队列中取出消息,并进行响应,这种消息机制就是windows 程序运行的机制。

2.6  进队消息和不进队消息。

不管进队还是不进队都由系统调用窗口过程函数对消息进行处理。

2.7 windows 的窗口过程函数调用

针对windows 的消息处理机制,窗口过程函数被调用的过程如下:

(1). 在设计窗口类的时候,将窗口过程函数的地址赋值给lpfnWndProc成员变量。

(2)调用RegisterClass(&wndclass)注册窗口类,那么系统就有了我们所编写的窗口过程函数的地址。

(3) 当应用程序接收到某一窗口的消息时,调用DispatchMessage(&msg)将消息回传给系统。系统则利用先前注册窗口类时得到的函数指针,调用窗口过程函数对消息进行处理。一个windows 程序可以包含多个窗口过程函数,一个窗口过程总是与某一个特定的窗口类相关联,(通过WNDCLASS结构体中的lpfnWndProc成员变量指定),基于该窗口类创建的窗口使用同一个窗口过程。

lpfnWndProc 成员变量的类型是WNDPROC ,我们在vs 里面的“转到定义”功能,可以看到WNDPROC的定义:

typedef  LRESULT (CALLBACK *WNDPROC)(HWND,WPARAM,LPARAM);

LRESULT :long   CALLBACK:_stdcall

2.8 _stdcall 与 _cdecl  调用

在函数调用过程中,会使用栈。_stdcall 与 _cdecl 是两种不同的函数调用约定,定义了函数参数入栈的顺序,由调用函数还是被调用函数将参数弹出栈,以及产生函数修饰名的方法。对于参数个数可变的函数,如printf ,使用的是_cdecl 调用约定,win32 的API函数都遵循_stdcall调用约定。在vs中默认编译选项是_cdecl,对于那些需要_stdcall 调用约定的函数,在声明时必须显示的加上 _stdcall 。在windows 程序中,回调函数必须遵循_stdcall 调用约定,所以我们在声明回调时要使用CALLBACK .使用CALLBACK而不是_stdcall的原因是为了告诉我们这是一个回调函数。

2.9 windows 窗口的创建

设计->注册->创建->显示及更新   消息循环。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用Kohya_ss训练Stable Diffusion Lora

Stable Diffusion模型微调方法 Stable Diffusion主要有 4 种方式:Dreambooth, LoRA, Textual Inversion, Hypernetworks。 Textual Inversion (也称为 Embedding),它实际上并没有修改原始的 Diffusion 模型, 而是通过…

Sonar生成PDF错误Can‘t get Compute Engine task status.Retry..... HTTP error: 401

报错及修改: 报错:INFO: Can’t get Compute Engine task status.Retry… org.sonarqube.ws.connectors.ConnectionException: HTTP error: 401, msg: , query: org.apache.commons.httpclient.methods.GetMethod7a021f49 ERROR: Problem generating PD…

Python-pptx教程之二操作已有PPT模板文件

文章目录 简单的案例找到要修改的元素修改幻灯片中的文本代码使用示例 修改幻灯片的图片代码使用示例 删除幻灯片代码使用示例 获取PPT中所有的文本内容获取PPT中所有的图片总结 在上一篇中我们已经学会了如何从零开始生成PPT文件,从零开始生成较为复杂的PPT是非常消…

基于边缘智能网关的冬季管网智能监测应用

随着我国北方全面进入到冬季,多日以来严寒、降雪天气频发,民生基础设施也迎来冬季考验。尤其是民众生活仰赖的水、电、气管网,面临极端冰雪天气时易存在各种风险,包括管道水/气泄露损耗、低温冻裂、积雪压塌压损、冻结受阻等。 针…

前端常用的几种加密方法

文章目录 前端常用的几种加密方法md5 加密(不可逆)base64 位加密(可加密可解密)RSA 加密(公钥加密,私钥解密)AES 加密(需要密钥才能解密)CryptoJS 常用的加密方式--demo ✒️总结 前端常用的几种加密方法 在信息安全越来越受重视的今天,JS 安全一直是前端…

无需API实现MySQL与巨量引擎的对接

通过数环通,您可以使用不到几分钟的时间即可实现MySQL与巨量引擎的对接与集成,从而高效实现工作流程自动化,降本增效! 1.产品介绍 巨量引擎是字节跳动旗下的营销服务品牌,它整合了字节跳动旗下的产品及海量内容&#…

asp.net购物网站源码-系统销售毕业设计

采用典型的三层架构进行开发,包含购物车、登陆注册、个人中心、留言板、新闻系统,前台页面、后台管理等主要技术:基于asp.net架构和sql server数据库 功能模块: 本源码是一个三层购物网站源码,功能齐全,界面…

【PyQt小知识 - 4】:QGroupBox分组框控件 - 边框和标题设置

QGroupBox QGroupBox 是 PyQt 中的一个小部件,用于创建一个带有标题的组框。 可以使用 QGroupBox 将相关控件分组并添加一个标题。 以下是一个使用 QGroupBox 的示例代码(示例一): from PyQt5.QtWidgets import * import sysa…

Linux_虚拟机常用目录汇总

根目录(cd /):/ 表示根目录,cd和 / 之间有个空格! 用户目录(cd ~):~ 表示用户目录,也称为家目录。cd 和 ~ 之间有个空格! 当前路径:执行 pwd 指令…

linux运行java程序

这个帖子实现的是linux上运行java代码 文章目录 前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据总结 前言 事情发生的原因是博洋需要知道海外城市的数量,我一开始准备将全量数据拉取到本地,用代码遍历一遍。但是打包好全量数据&…

SystemVerilog学习 (9)——随机化

目录 一、概述 二、随机化 2.1、如何简单地产生一个随机数 2.1.1 利用系统函数产生随机数 2.1.2 urandom() 2.2、什么需要随机化 2.3、随机约束 2.3.1 rand 和 randc 2.3.2 随机约束的使用 2.3.3 约束块 三、总结 一、概述 随着设计变得越来越大,要产生一个完整的激…

vivado产生报告阅读分析6-时序报告2

1、复查时序路径详情 单击“ OK ”运行报告命令后 , 将打开一个新窗口。这样您即可复查其中内容。在其中可查看执行选定的每种类型 (min/max/min_max ) 的分析之后所报告的 N 条最差路径。 下图显示的“Report Timing ” ( 时序报告 ) 窗口…

知识梳理到了领域榜一,意外,开心。

我的护城河 就是掌握的不断更新的技术。 一直被认可的能力。 完美的项目交付。 写的文章得到了读者们的认可。 希望我做的努力被更多的人看到。 分享的代码片可以解决他人的问题。 很惊喜,今早我的文章被数据结构和算法领域内容榜排到了第一名。 被认可的感觉很棒。…

基于IGT-DSER实现工业触摸屏与PLC设备之间WIFI无线通讯

本文是基于IGT-DSER系列智能网关设备实现工业触摸屏与PLC设备之间WIFI无线通讯的案例。PLC之间无线通讯的案例 网络结构如下图,触摸屏通过网线连接IGT-DSERWIFI智能网关,实现WIFI的AP功能;一台串口型PLC和一台网口型PLC分别通过IGT-WSER智能网…

接口自动化测试面试题

前言 前面总结了一篇关于接口测试的常规面试题,现在接口自动化测试用的比较多,也是被很多公司看好。那么想做接口自动化测试需要具备哪些能力呢? 也就是面试的过程中,面试官会考哪些问题,知道你是不是真的做过接口自动…

【第2章 Node.js基础】2.7 Node.js 的流(一)可写流

🌈可写流 🚀什么是可写流 可写流是对数据被写入的目的地的一种抽象。 所有可写流都实现了 stream.Writable类定义的接口。 可写流的例子包括,也都是实现了可写流接口的双工流 客户端的 HTTP 请求、服务器的HTTP 响应、fs 的写入流、zlib…

JUNIT使用和注意、以及断言的介绍使用、SpringBoot Test测试类的使用、maven配置使用junit详细介绍

参考文章: https://www.cnblogs.com/zhukaile/p/14514238.html,https://blog.csdn.net/qq_36448800/article/details/126438339 一、什么是单元测试 在平时的开发当中,一个项目往往包含了大量的方法,可能有成千上万个。如何去保…

最小生成树

目录 带权图 带权图java代码实现 最小生成树 Kruskal算法 ​切分定理 Kruskal算法的java代码实现 Prim算法 Prim算法的java代码实现 总结 带权图 边上的权是附加的额外信息,可以代表不同公路的收费等你需要的信息。 带权图java代码实现 port java.io.File…

mysql---squid代理服务器

squid代理服务器 nginx也可以代理:反向代理--------负载均衡 squid:正向代理服务器。例:vpn squid :正向代理,缓存加速,acl过滤控制 代理的工作机制 1、代替客户端向网站请求数据,不需要访问代理的IP地址…

AI时代,如何防范诈骗的建议

以下是一些防范AI诈骗的方法: 认知教育:了解AI技术的应用和局限性,学习如何识别虚假信息和诈骗手段。保护个人信息:不要轻易泄露个人信息,尤其是身份证号码、银行卡号等敏感信息。谨慎对待陌生人的联系和信息&#xf…