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.hqwc.cn/news/185992.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

git 指定时间代码统计

指定时间代码统计 用法 13 - 17 号 代码情况 近一周 git log --since2023-11-13 00:00:00 --until2023-11-17 23:00:00 --prettytformat: --numstat | awk { add $1; subs $2; loc $1 - $2 } END { printf "added lines: %s, removed lines: %s,total lines: %s\n&…

SaaS与PaaS平台的区别

目录 一、前言 二、SaaS化与PaaS化平台的区别 三、PaaS化的低代码平台更胜一筹 PaaS优势: 支持PaaS服务的低代码平台 1.私有化部署,为数据安全保驾护航 2.业内领先技术,为开发强势赋能 3.超强集成能力,系统对接无忧 4.源代码交付&…

关于圆通物流在AppLink上的操作

在使用物流系统时,我们会出现订单变化而导致物流轨迹发生改动,如果反馈不及时会造成额外的工作量以及会出现人为的操作失误,我们尝试借助AppLink来实现圆通物流在发生变化时的信息同步 登录开放平台 复制右侧登录地址登录圆通速递管理后台&…

内衣洗衣机和手洗哪个干净?性价比高的迷你洗衣机推荐

洗衣机已经成为了每户每家的生活中必不可少的家用电器,在最近的几年以来,家用洗衣机的技术得到了广泛的发展,这不但给了消费者一个干净的生活环境,也让每一个家庭都享受到了科技的便捷。人们对传统的大尺寸的洗衣机已经很熟悉了。…

jvm 内存结构 ^_^

1. 程序计数器 2. 虚拟机栈 3. 本地方法栈 4. 堆 5. 方法区 程序计数器 定义: Program Counter Register 程序计数器(寄存器) 作用,是记住下一条jvm指令的执行地址 特点: 是线程私有的 不会存在内存溢出 虚拟机栈…

IaaS、PaaS、SaaS 的区别

文章1:软件系统的分类 文章2:有哪些通俗易懂的例子可以解释 IaaS、PaaS、SaaS 的区别?——原文 写的很好的两篇文章值得一看 你一定听说过云计算中的三个“高大上”的你一定听说过云计算中的三个“高大上”的概念:IaaS、PaaS和…

Windows安装nvm【node.js版本管理工具】

目录 下载安装包 安装 配置 配置node的国内镜像源 配置npm的国内镜像源 常用命令 查看可安装的node版本 安装指定的版本 查看已有的node版本列表 切换版本 下载安装包 https://github.com/coreybutler/nvm-windows/releases/tag/1.1.11 安装 安装过程就不贴了&#xff0…

UE基础篇八:平衡蓝图与C++的使用

一、蓝图转换C++ 案例结构: 1.1 蓝图和C++对比 1.2 将蓝图变量转C++ 现在C++中定义同样的类型

7.docker运行redis容器

1.准备redis的配置文件 从上一篇运行MySQL容器我们知道,需要给容器挂载数据卷,来持久化数据和配置,相应的redis也不例外。这里我们以redis6.0.8为例来实际说明下。 1.1 查找redis的配置文件redis.conf 下面这个网址有各种版本的配置文件供…

制造业工厂的MES系统数据采集功能概述

一、MES系统与数据采集 MES系统是专门针对制造业工厂的信息化管理系统,旨在提高生产效率、降低成本、优化资源配置。数据采集作为MES系统的重要功能之一,能够实时获取生产现场的数据信息,为生产管理提供可靠的决策依据。 二、MES数据采集功能…

3.3 Windows驱动开发:内核MDL读写进程内存

MDL内存读写是一种通过创建MDL结构体来实现跨进程内存读写的方式。在Windows操作系统中,每个进程都有自己独立的虚拟地址空间,不同进程之间的内存空间是隔离的。因此,要在一个进程中读取或写入另一个进程的内存数据,需要先将目标进…

JAVAEE初阶 计算机如何工作

计算机的工作 一.冯诺依曼体系二.CPU基本工作流程1.逻辑门1.1电子开关1.2门电路 2.算术逻辑单元2.1 进制的理解2.2 算术单元2.3逻辑单元 3.寄存器和内存4.控制单元5.指令 一.冯诺依曼体系 二.CPU基本工作流程 1.逻辑门 1.1电子开关 1.2门电路 1.非门 2.与门 3.或门 4.异或…