C++学习之旅Windows程序内部运行原理
学习C++与.net不同的是,一定要搞清楚Windows程序内部运行原理,因为他所涉及大多数是操作系统的调用,而.net毕竟是在.netFrameWork上唱戏。
那Windows应用程序,操作系统,计算机硬件之间的相互关系究竟什么了,下面的图就给予很好的解释。
向下箭头①是应用程序运行判断处理的结果,输出到输出的设备。
向上箭头②是输入设备,输入到操作系统中。
向下箭头③代表API,我们要解释以下API是什么。API是应用程序接口, 表示应用程序可以通知操作系统执行某个具体的动作,如操作系统能够控制声卡发出声音,但它并不知应该何时发出何种声音,需要应用程序告诉操作系统该发出什么样的声音。这个关系好比有个机器人能够完成行走的功能,但是,如果人们不告诉它往哪个方向上走,机器人是不会主动行走的。这里的机器人就是操作系统,人们就是应用程序。对程序员来说,就可以理解为可以调用函数库,C++程序员是对操作系统的同用。Java中调用的API是jdk中提供的函数库,而。net程序员则是.netframework提供的函数库。
向上的箭头④表示操作系统能够将输入设备的变化上传给应用程序。如用户在某个程序活动时按敲了一下键盘,操作系统马上能够感知到这一事件,并且能够知道用户按下的哪一键,操作系统并不决定对这一事件如何作出反应,而是将这一事件转交给应用程序,由应用程序决定如何对这一事件作出反应。好比有个司机开车看见前面遇到一辆车,我们的神经末梢(相当于操作系统)马上感知到这一事件,并传递给了我们的大脑(相当于应用程序),我们的大脑最终决定如何对这一事件作出反应,如将踩刹车,停下来,或是英勇撞上去(则是一个sb做法)。对事件作出反应。
操作系统是怎样将感知到的事件传递给应用程序的呢?这是通过消息机制(Message)来实现的。操作系统将每个事件都包装成一个称为消息的结构体MSG来传递给应用程序,参看MSDN。
MSG结构定义如下:
typedefstructtagMSG{HWNDhwnd;UINTmessage;WPARAMwParam;LPARAMlParam;DWORDtime;POINTpt;}MSG;的过程就是消息响应。
其实,写在这里,作为一个做过3年.net开发人员。我这里有感而发,C++是如此,.net事件响应的机制。何尝不是一个消息机制。消息机制,是程序界一大质的飞跃,而也是这种消息机制,把.net程序员的控件封装太死,也造就一大批只能拖控件的程序员。我学了C++还是真的有一种豁然开朗的感觉。.net程序员,还是多看点C++吧!
相关文章
- C++学习——c++逗号操作符说明(附加全部运算符优先级)
- EasyC++01,从C++示例程序说起
- 未能连接一个windows服务器,Win7出现未能连接一个Windows服务的解决办法
- c++ 字符串流 sstream(常用于格式转换)
- 动态规划C++实现–最长递增子序列
- Windows端口被占用_windows如何打开端口
- windows shell命令大全_Windows shell
- C++基本概念_c语言 c++区别
- WINDOWS下安装系统_在Windows环境下
- Windows HotFix Check Via C/C++
- 【经验】怎么在win10,win8上运行vc++6.0?
- windows编程入门-六星云课堂:零基础学C/C++编程?看看下面这几个步骤
- C/C++ 应用层下遍历驱动列表
- 开心档之C++ 类 & 对象
- 实现Windows客户端通过SSH连接Linux服务器(windows连接linux服务器)
- C++ unordered_multimap用法详解
- C++ search(STL search)算法详解
- C++ while(do-while)循环详解
- Go语言与C/C++进行交互
- Windows中安装macOS:让你在同一台电脑上实现双系统切换(windows安装macos)
- 和windows比较Octave在Linux和Windows上的性能(octavelinux)
- 在Windows环境下实现Redis服务安装(windows下安装redis)
- and windows切换Linux和Windows系统:实现自由转换(swaplinux)
- 都会用windows多元化:从Linux服务器到Windows(连linux服务器)
- Linux挂载Windows共享文件夹:跨平台文件共享(linux挂载windows共享文件夹)
- 在Windows上安装Linux:体验双系统的乐趣(windows安装linux)
- 在Windows上安装Linux系统的步骤(windows安装linux系统)
- Linux远程控制Windows:让你的操作变得更轻松(linux远程windows)
- 比较:Linux和Windows哪更适合你?(linux和windows哪个好)
- Linux与Windows:共同打开软件世界的大门(linux和windows)
- c++中const的使用详解
- C++求阶乘的两种方法
- C++采用ring3读取MBR实例