zoukankan      html  css  js  c++  java
  • 第一章 起步

    第一部分 基础知识

    第一章 起步

    导言:  

      (1)API(Application Programming Interface)应用程序接口。  

      (2)对C的结构(Structure)和指针(Pointer)重点理解。  

      (3)标准运行时库(Run-Time Library, RTL),有所了解就更好了。

    1.1. Windows环境  
      1.1.1 Windows简史(略)  

      1.1.2 Windows的方方面面   

        介绍几个名词概念    

          GUI:(Graphical User Interface),图像用户界面。所有GUI都用位图(Bitmap)视频显示器显示图形。    

          DLL:(Dynamic-Link Libraries),动态链接库。Windows本身基本上就是一套动态链接程库。    

          GDI:(Graphics Devices Interface),图形设备接口。  

      1.1.3 动态链接   

        a)Windows工作原理的中心思想就是“动态连接”概念。Windows自身带有一大套函数,这些函数都是在动态链接库里实现的。  这些文件爱你的名称都带有.DLL,或有时带有后缀.EXE。   

        b)早期Windows的大部分只是实现了3个动态链接库,分别代表了Windows的3个主要的子系统,     即内核(kernel)、用户(user)以及GDI。  

        c)系统有上千个函数以供应用程序调用。应用程序可能调用的所有函数必须先要在头文件里声明。  

        d)在Windows程序中,调用Windows函数与调用C语言的库函数(如Strlen),没什么两样。 最要区别就是C语言库函数的机器代码会直接连接到你的程序代码中,

           而Windows函数则是放在你的程序之外的DLL里。   

        e)当Windows程序运行时,它通过一个叫做“动态链接”(dynamic linking)的进程与Windows接口。每个Windows的EXE文件包含它所要用的各个动态链接库以及库中的函数的引用地(reference)。

              当一个Windows程序被装入内存之后,程序中的函数调用都被解析成DLL函数入口的指针,同时这些被调用函数也被装入内存(如果还没有在内存中的话)。  

        f)当链接Windows程序以生成执行文件时,一定得链接你的编程环境所提供的特殊的“导入库”(import library)。     

          这些导入库包含所有Windows函数调用要碰到的动态链接库的名称及引用信息。    

          链接程序利用这些信息构建EXE文件中的表格,当装入程序的时候,Windows要靠这些表格来解析,Windows函数调用。  

    1.2  Windows编程选项

      1.2.1 API及内存管理模式   

        a)对于程序员来说,OS的功能完全由API来定义。API涵盖了APP所能调用的全部OS函数,以及相关的数据类型和结构。  

        b)把32位的Windows(95,98及所有NT版)的API成为Win32 API。     

      1.2.2 语言选择   

        a)无论你用什么来编写Windows程序,搞熟API都能让你对Windows的内部有更深刻的理解。  

        b)近几年,很多专业程序员当中,带有微软基本类库(Micrsoft Foundation Class Library,MFCL)的Visual C++相当流行。

          MFC把很多Windows编程中的繁杂的东西都打包到了C++的类集当中。       

      1.2.3 编程环境   

        a)Visual C++6.0 (经典!)(我目前用的VS2008)  

        b)MSDN代表微软开发员网络(Microsoft Developer Netword, MSDN)。   

       1.2.4 API文档   

        a) 安装VS2008时,同时把MSDN装上,就OK啦。

     

    1.3 你的第一个Windows程序  

       1.3.1 字符模式  

         a)创建一个控制台应用程序,代码如下:   

    1 #include "stdafx.h"
    2 //#include "stdio.h"
    3 int _tmain(int argc, _TCHAR* argv[])
    4 {
    5   printf("Hello, Word
    ");
    6   return 0;
    7 }

        运行下,查看结果为: Hello, Word   

        这个程序是可以直接调用C运行库函数,如:printf而不需要事先声明的。     

         以上这个程序包括了include语句,程序入口,运行库函数调用,以及return语句。  

       1.3.2 Windows对应程序      

       1.3.3 头文件   在cpp里打头的几乎都是预处理器(preprocessor)指令:   

        #include <winddows.h>   

        WINDOWS.H是一个最重要的包含文件,它包括了若干其他Windows头文件,其中的某些头文件又包含   另外的一些头文件。

        下列几个是最重要也是最基本的头文件:    

          WINDEF.H :基本数据类型定义。    

          WINNT.H  :支持Unicode的类型定义。   

          WINBASE.H :内核函数。    

          WINUSER.H :用户界面函数。    

          WINGDI.H  :图形设备接口函数。     

       1.3.4 程序入口   

        具体的WinMain例子由来,没做具体分析。   

          a)前缀LP代表长指针(Long Pointer),它是16为Windows的产物。  

          b)在Windows程序中,句柄无非就是一个数值,程序里用它来标识某些东西。    

       1.3.5 MessageBox函数   此函数用来显示短消息的。所显示的小小窗口实际上也是一个对话框。  

    1 int MessageBox(         
    2     HWND hWnd,            //通常是窗口的句柄(第三章详解)    
    3     LPCTSTR lpText,       //将要在信息框里出现的文本字符串。
    4     LPCTSTR lpCaption,    //将要在标题栏上显示的文本字符串。        
    5     UINT uType            //以MB_打头的一些常量的组合。
    6 );

        在范例程序中,MessageBox函数返回的数值为1,更精确的说返回IDOK。   

        在WINUSER.H中,IDOK定义为1。     

       1.3.6 编译、连接、及运行   

          a)通常情况下在编译阶段,编译器从C源代码文件产生一个.OBJ(目标)文件。     

              连接阶段,连接器又把.OBJ文件和.LIB(库程序)文件放到一起产生.EXE(可执行)文件。  

          b)在VS里,可以在不同的配置下编译和连接程序。默认情况下,这些配置通常称为Debug配置和Release配置。

              在Debug配置下,.EXE文件中加入了一些有助于程序调试以及源代码跟踪的信息。               

     第一章,OVER !              

         

  • 相关阅读:
    linux下mysql基于mycat做主从复制和读写分离之基础篇
    HttpClient之基本使用
    查阅资料学习的书签(补充中.......)
    java架构《Socket网络编程基础篇》
    Redis常见配置文件详解
    redis学习教程五《管道、分区》
    redis学习教程四《管理、备份、客户端连接》
    js将json数组转成tree对象
    小程序转发事件生命周期
    mpvue开发小程序添加页面
  • 原文地址:https://www.cnblogs.com/s2isoldier/p/3380701.html
Copyright © 2011-2022 走看看