• 第一章 起步


    第一部分 基础知识

    第一章 起步

    导言:  

      (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 !              

         

  • 相关阅读:
    Call KernelIoControl in user space in WINCE6.0
    HOW TO:手工删除OCS在AD中的池和其他属性
    关于新版Windows Server 2003 Administration Tools Pack
    关于SQL2008更新一则
    微软发布3款SQL INJECTION攻击检测工具
    HyperV RTM!
    OCS 2007 聊天记录查看工具 OCSMessage
    CoreConfigurator 图形化的 Server Core 配置管理工具
    OC 2007 ADM 管理模板和Live Meeting 2007 ADM 管理模板发布
    Office Communications Server 2007 R2 即将发布
  • 原文地址:https://www.cnblogs.com/s2isoldier/p/3380701.html
Copyright © 2020-2023  润新知