当前位置:  编程技术>c/c++/嵌入式

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

    来源: 互联网  发布时间:2014-10-11

    本文导语:  学习C++与.net不同的是,一定要搞清楚Windows程序内部运行原理,因为他所涉及大多数是操作系统的调用,而.net毕竟是在.netFrameWork上唱戏。        那Windows应用程序,操作系统,计算机硬件之间的相互关系究竟什么了,下面的...

学习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;的过程就是消息响应。  

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


    
 
 

您可能感兴趣的文章:

  • 装好了ubuntu怎样学习c++,linux下C++学习的环境软件是什么?
  • 新手提问:学习c++同时也想学习unix和linux
  • unix下C++代码中如何进行数据库操作?给个完整代码学习学习
  • C++机器学习库 Shark C++
  • 请教学习c++有那些经典书籍?
  • 求教linux C++学习之路!
  • 求C++学习资料
  • 学习C++用什么资料??
  • linux菜鸟请教:C++的学习
  • 有c++基础,学习java需要多长时间?
  • 学习linux下c++编程,能推荐几本好书么?
  • linux中学习c++是不是比学习c语言用处要少?
  • 一个学习c++的向java过渡的最佳途径?
  • 想开始学习Linux下的C++编程,不知道如何开始?
  • 请问学习c++用什么工具最好?
  • 想好好学习c++,想找个开源项目练练手,大家推荐一下
  • 请问 我想成为linux下的C++程序员 要如何去学习liunx
  • 学习linux该从何而起,熟悉java,但不是很熟悉c或者c++
  • C++ 的机器学习库 MLPACK
  • 最进想学习LINUX程序设计,想了解一下在LINUX下的C++程序开发工具有哪些?有快速做界面的那种吗?
  • 我是学数学的,喜欢编程,计算机没有像数学一样的从原理出发的学习方法
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 帮帮我,我学习的第一个简单的SERVLET程序运行报错
  • 请推荐一套可在目前主流PC上运行的UNIX(非LINIX)操作系统和开发工具(C,C++),用于学习,最好是盗版,可在那个ftp站上下载
  • 下面是我学习linux环境中c语言的程序,但是运行后提示说‘段错误’,请大家看看,谢谢了
  • 真的有点灰心了,学java两个月才,最近在用jb6+weblogic6.1学习servlet,可使无论如何都无法运行,就连一个小小的.java格式的servlet程序我都没办法编译成.class文件,真的对java有点灰心了.....
  • PHP介绍及学习网站推荐
  • 想深入学习Java应该学习哪些东西
  • 准备学习docker: docker version命令查看版本
  • 学习c后,学习pb,大家提点建议,谢谢哦
  • HTML 学习总结及下一步学习教程推荐
  • 有最近开始学习Minix的吗?一起来学习吧
  • OpenStack相关学习资料搜集
  • 我想问问哪里有AIX下啊!~版本越新越好!~我想拿来学习学习
  • juqery的python实现:pyquery学习使用教程
  • 想找共同学习Linux的新手,一起学习,共同成长
  • 学习java好 还是学习嵌入式开发好??
  • 学习linux网络编程需要学习些内核知识吗?
  • 我想学习linux桌面编程,那么有没有必要学习linux的内核以及内核的相关编程呢?
  • 从Delphi开始学习Java,如何学习Java.欢迎大家的光临!
  • HTML教程 iis7站长之家
  • 谁有 电子版 mastering ejb 2e 多谢!!及学习EJB 集合什么实例学习比较快一点?
  • 我想学习Unix,请高手给个下载网址,用linux来学习Unix差别大吗?
  • 你们学习Linux是学习什么的?
  • 我想问一个大家,我现在刚学习LINUX,我想问一下在LINUX学习哪些知识有前途???
  • 学习Java是从基础知识开始学习好还是直接学习JBuilder好?
  • 我想学习LINUX,在哪里下手学习,我现在要看什么样的教材?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3