C++ 学习之旅 Windows程序内部运行原理

2016-02-19 11:51 4 1 收藏

下面是个超简单的C++ 学习之旅 Windows程序内部运行原理教程,图老师小编精心挑选推荐,大家行行好,多给几个赞吧,小编吐血跪求~

【 tulaoshi.com - 编程语言 】

学习C++与.net不同的是,一定要搞清楚Windows程序内部运行原理,因为他所涉及大多数是操作系统的调用,而.net毕竟是在.netFrameWork上唱戏。

       那Windows应用程序,操作系统,计算机硬件之间的相互关系究竟什么了,下面的图就给予很好的解释。

      向下箭头①是 应用程序运行判断处理的结果,输出到输出的设备。

      向上箭头②是输入设备,输入到操作系统中。

      向下箭头③代表API,我们要解释以下API是什么。API是应用程序接口, 表示应用程序可以通知操作系统执行某个具体的动作,如操作系统能够控制声卡发出声音,但它并不知应该何时发出何种声音,需要应用程序告诉操作系统该发出什么样的声音。这个关系好比有个机器人能够完成行走的功能,但是,如果人们不告诉它往哪个方向上走,机器人是不会主动行走的。这里的机器人就是操作系统,人们就是应用程序。 对程序员来说,就可以理解为可以调用函数库,C++程序员是对操作系统的同用。Java中调用的API是jdk中提供的函数库,而。net程序员则是.netframework提供的函数库。

     向上的箭头④表示操作系统能够将输入设备的变化上传给应用程序。如用户在某个程序活动时按敲了一下键盘,操作系统马上能够感知到这一事件,并且能够知道用户按下的哪一键,操作系统并不决定对这一事件如何作出反应,而是将这一事件转交给应用程序,由应用程序决定如何对这一事件作出反应。好比有个司机开车看见前面遇到一辆车,我们的神经末梢(相当于操作系统)马上感知到这一事件,并传递给了我们的大脑(相当于应用程序),我们的大脑最终决定如何对这一事件作出反应,如将踩刹车,停下来,或是英勇撞上去(则是一个sb做法)。对事件作出反应。

      操作系统是怎样将感知到的事件传递给应用程序的呢?这是通过消息机制(Message)来实现的。操作系统将每个事件都包装成一个称为消息的结构体MSG来传递给应用程序,参看MSDN。

MSG结构定义如下:
typedef struct tagMSG { HWND hwnd; UINT message; WPARAM wParam; LPARAM lParam; DWORD time; POINT pt; } MSG;的过程就是消息响应。  

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

     其实,写在这里,作为一个做过3年.net开发人员。我这里有感而发,C++是如此,.net事件响应的机制。何尝不是一个消息机制。 消息机制,是程序界一大质的飞跃,而也是这种消息机制,把.net程序员的控件封装太死, 也造就一大批只能拖控件的程序员。 我学了C++还是真的有一种豁然开朗的感觉。.net程序员,还是多看点C++吧!

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

来源:https://www.tulaoshi.com/n/20160219/1598899.html

延伸阅读
在高级语言中,程序的优化主要应该从数据结构、算法、控制流程等方面入手。各种语言各有它自身的特点,我们只能根据具体的语言来说明代码优化的方法。当然,高级语言太多,不可能把每一种语言都拉进来,主要就谈谈C,C++,JAVE,Delphi等语言相关的 代码优化。而对于其它一些语言,也 可以从这些方面中找到适合自己的优化方案。 对C++程...
简介 C++/CLI代表 ISO-C++标准语言的一个动态编程泛型扩展 (dynamic programming paradigm extension)。在原版语言设计 (V1) 中有许多显著的弱点,我们觉得在修订版语言设计 (V2) 中已经修正了这些弱点。本文列举了 V1 版本语言的功能和它们在 V2 版本中的对应功能(如果存在);并指出了其对应功能不存在的构造。对于有兴趣的读者,可以查看附...
处理 C++ 中的异常会在语言级别上碰到少许隐含限制,但在某些情况下,您可以绕过它们。学习各种利用异常的方法,您就可以生产更可靠的应用程序。 保留异常
    Tray(托盘)是Windows9x任务条上的一个非凡区域,它的技术名称为“任务栏布告区”,一些软件(如金山词霸Ⅲ)运行时会在托盘上放置一个图标,使用户一眼就能知道这个程序正在后台运行,要想激活它也很轻易,通常只需单击一下这个图标即可,非常方便。 Tray的编程比较非凡,但并不难,主要包括图标、工具提示和消...
    C++ Builder提供了所有开始设计应用程序所必需的工具: · 一个称为“窗体”的空白窗口,作为用于设计应用程序的用户界面。 · 一个包容许多可重用的对象的扩展的类库。 · 一个对象观察器,用于检查和改变对象的特性。 · 用于直接访问基本程序逻辑的源代码编辑器。 ·一个可以治理多个工程...

经验教程

33

收藏

64
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部