孙鑫C++视频01:Windows程序内部运行原理

2024-01-21 23:18

本文主要是介绍孙鑫C++视频01:Windows程序内部运行原理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

从去年开始学C++后,然后学MFC后,就在纠结一个问题,到底要不要深入学windows和MFC,经常看见有人说MFC不行了,没人用了,大家都用QT,JAVA,C#,但是我想了想,学这些东西要有项目锻炼,而实验室用的还是MFC,所以今天我下定决心每天花一点时间学习MFC。

看CSDN论坛里,都说看孙鑫的视频,我绝对还是刷一遍。

本文只是自己的学习记录,无任何参考价值,有兴趣可以B站看视频(无广告舒服),百度下pdf《VC++深入详解》,个人建议看完视频再看书。

应用程序、操作系统、硬件的关系

                                                   

 上图的关系,很重要。①箭头代表操作系统能控制输出设备,如控制声卡发声;②箭头代表操作系统能得到输入设备信息,如键盘输入;箭头③代表应用程序通知操作系统执行某具体操作,如让声卡发出什么声音,操作系统的确有的发出声音的功能,但他不知道发出什么声音,这些需要应用程序来告诉。问题是应用程序如何告诉操作系统完成什么操作,操作系统提供一系列函数集合,也就是Windows操作系统提供给应用程序的接口(Application Programming Interface),简称API。④箭头将输入设备的变化告诉应用程序,操作系统能得到输入设备的信息,如键盘输入,但是操作系统不做处理,而是把此信息传递给应用程序,由应用程序来决定进行什么操作。对事件做出反应的过程,就是消息响应。

应用程序通过调用操作系统API可以对输出设备进行操作,但是操作系统如何将感知到事件传递给应用程序?通过消息机制!操作系统将每个事件都包装成一个称为消息的结构体MSG来传递给应用程序。

MSG

typedef struct tagMSG {
HWND hwnd;
UINT message;
WPARAM wParam;
LPARAM lParam;
DWORD time;
POINT pt;
} MSG;

 窗口句柄HWND:首先介绍下句柄和

               

这篇关于孙鑫C++视频01:Windows程序内部运行原理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/631133

相关文章

使用Python创建一个功能完整的Windows风格计算器程序

《使用Python创建一个功能完整的Windows风格计算器程序》:本文主要介绍如何使用Python和Tkinter创建一个功能完整的Windows风格计算器程序,包括基本运算、高级科学计算(如三... 目录python实现Windows系统计算器程序(含高级功能)1. 使用Tkinter实现基础计算器2.

Java NoClassDefFoundError运行时错误分析解决

《JavaNoClassDefFoundError运行时错误分析解决》在Java开发中,NoClassDefFoundError是一种常见的运行时错误,它通常表明Java虚拟机在尝试加载一个类时未能... 目录前言一、问题分析二、报错原因三、解决思路检查类路径配置检查依赖库检查类文件调试类加载器问题四、常见

Windows系统宽带限制如何解除?

《Windows系统宽带限制如何解除?》有不少用户反映电脑网速慢得情况,可能是宽带速度被限制的原因,只需解除限制即可,具体该如何操作呢?本文就跟大家一起来看看Windows系统解除网络限制的操作方法吧... 有不少用户反映电脑网速慢得情况,可能是宽带速度被限制的原因,只需解除限制即可,具体该如何操作呢?本文

windows和Linux使用命令行计算文件的MD5值

《windows和Linux使用命令行计算文件的MD5值》在Windows和Linux系统中,您可以使用命令行(终端或命令提示符)来计算文件的MD5值,文章介绍了在Windows和Linux/macO... 目录在Windows上:在linux或MACOS上:总结在Windows上:可以使用certuti

redis中使用lua脚本的原理与基本使用详解

《redis中使用lua脚本的原理与基本使用详解》在Redis中使用Lua脚本可以实现原子性操作、减少网络开销以及提高执行效率,下面小编就来和大家详细介绍一下在redis中使用lua脚本的原理... 目录Redis 执行 Lua 脚本的原理基本使用方法使用EVAL命令执行 Lua 脚本使用EVALSHA命令

C#如何调用C++库

《C#如何调用C++库》:本文主要介绍C#如何调用C++库方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录方法一:使用P/Invoke1. 导出C++函数2. 定义P/Invoke签名3. 调用C++函数方法二:使用C++/CLI作为桥接1. 创建C++/CL

Java Spring 中 @PostConstruct 注解使用原理及常见场景

《JavaSpring中@PostConstruct注解使用原理及常见场景》在JavaSpring中,@PostConstruct注解是一个非常实用的功能,它允许开发者在Spring容器完全初... 目录一、@PostConstruct 注解概述二、@PostConstruct 注解的基本使用2.1 基本代

Golang HashMap实现原理解析

《GolangHashMap实现原理解析》HashMap是一种基于哈希表实现的键值对存储结构,它通过哈希函数将键映射到数组的索引位置,支持高效的插入、查找和删除操作,:本文主要介绍GolangH... 目录HashMap是一种基于哈希表实现的键值对存储结构,它通过哈希函数将键映射到数组的索引位置,支持

Windows 上如果忘记了 MySQL 密码 重置密码的两种方法

《Windows上如果忘记了MySQL密码重置密码的两种方法》:本文主要介绍Windows上如果忘记了MySQL密码重置密码的两种方法,本文通过两种方法结合实例代码给大家介绍的非常详细,感... 目录方法 1:以跳过权限验证模式启动 mysql 并重置密码方法 2:使用 my.ini 文件的临时配置在 Wi

Python如何精准判断某个进程是否在运行

《Python如何精准判断某个进程是否在运行》这篇文章主要为大家详细介绍了Python如何精准判断某个进程是否在运行,本文为大家整理了3种方法并进行了对比,有需要的小伙伴可以跟随小编一起学习一下... 目录一、为什么需要判断进程是否存在二、方法1:用psutil库(推荐)三、方法2:用os.system调用