友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!阅读过程发现任何错误请告诉我们,谢谢!! 报告错误
狗狗书籍 返回本书目录 我的书架 我的书签 TXT全本下载 进入书吧 加入书签

深入浅出MFC第2版(PDF格式)-第27章

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!






   制造方式 



     在Windows 环境下的DOS Box  中,或是在Windows 版本的各种C++ 编译器套件的 



     整合环境(IDE )中(第4章「Console 程序项目管理」),利用Windows 编译器、联 



     结器做出来的程序,都是所谓Win32 程序。如果程序是以main 为进入点,调用C 



     runtime        GUI   Win32 API            console  console 

          函数和「不牵扯      」的        函数,那么就是一个          程序, 



     窗口将成为其标准输入和输出装置(cin 和cout )。 



     过去在DOS 环境下开发的程序,称为DOS 程序,它也是以main 为程序进入点,可 



     以调用C runtime  函数。但,当然,不可能调用Win32 API 函数。 



   程序能力 



     过去的DOS 程序仍然可以在Windows  的DOS Box  中跑(Win95  的兼容性极高, 



     WinNT  的兼容性稍差)。 



                                                                  29 


…………………………………………………………Page 92……………………………………………………………

  Console 程序当然更没有问题。由于console 程序可以调用部份的Win32 API                  (尤其是 



  KERNEL32。DLL 模块所提供的那一部份),所以它可以使用Windows 提供的各种高级 



                       processes                 threads 

  功能。它可以产生进程(                  ),产生执行线程(              )、取得虚拟内存的信息、 



  刺探操作系统的各种资料。但是它不能够有华丽的外表…因为它不能够调用与GUI 有 



  关的各种API 函数。 



  DOS       console               pr intf    cout               scanf  

       程序和         程序两者都可以做            输出和       输出,也都可以做            输 



  入和cin 输入。 



可执行档格式 



  DOS 程序是所谓的MZ 格式(MZ 是Mark Zbikowski  的缩写,他是DOS 系统的一位 



                Console                   Win32                  PE   Portable 

  主要构造者)。              程序的格式则和所有的               程序一样,是所谓的            ( 



  Executable                            Win32  

           )格式,意思是它可以被拿到任何                    平台上执行。 



  Visual C++  附有一个DUMPBIN 工具软件,可以观察PE 文件格式。拿它来观察本节 



  的JBACKUP 程序和MFCCON 程序(以及第3章的所有程序),得到这样的结果: 



  H:u004progjbackup 。01》dumpbin /summary jbackup 。exe 



  Microsoft  (R) COFF Binary File Dumper Version 5。00。7022 



  Copyright  (C) Microsoft Corp 1992…1997。 All rights reserved。 



    Dump of file jbackup 。exe 



    File Type: EXECUTABLE IMAGE 



           Summary 



             5000  。data 



             1000  。idata 



             1000  。rdata 



             5000  。text 



  拿它来观察DOS 程序,则得到这样的结果: 



                                                                                    30 


…………………………………………………………Page 93……………………………………………………………

       C:UTILITY》dumpbin /summary dsize。exe 

       Microsoft (R) COFF Binary File Dumper Version 5。00。7022 

       Copyright (C) Microsoft Corp 1992…1997。 All rights reserved。 



       Dump of file dsize。exe 

       DUMPBIN : warning LNK4094: 〃dsize。exe〃 is an MS…DOS executable; 

       use EXEHDR to dump it 



            Summary 



Console  程序的编译联结 



       你可以写一个makefile,编译时指定常数/D_CONSOLE ,联结时指定subsystem 为 



       console  ,如: 



           #0001  # filename : pedump。mak 

           #0002  # make file for pedump。exe 

           #0003  # usage : nmake pedump。msc (Visual C++ 5。0) 

           #0004 

           #0005  all : pedump。exe 

           #0006 

           #0007  pedump。exe: pedump。obj exedump。obj objdump。obj mon。obj 

           #0008     link /subsystem:console /incremental:yes  

           #0009          /machine:i386 /out:pedump。exe  

           #0010          pedump。obj mon。obj exedump。obj objdump。obj  

           #0011          kernel32。lib user32。lib 

           #0012 

           #0013  pedump。obj : pedump。c 

           #0014     cl /W3 /GX /Zi /YX /Od /DWIN32 /D_CONSOLE /FR /c pedump。c 

           #0015 

           #0016  mon。obj : mon。c 

           #0017     cl /W3 /GX /Zi /YX /Od /DWIN32 /D_CONSOLE /FR /c mon。c 

           #0018 

           #0019  exedump。obj : exedump。c 

           #0020     cl /W3 /GX /Zi /YX /Od /DWIN32 /D_CONSOLE /FR /c exedump。c 

           #0021 

           #0022  objdump。obj : objdump。c 

           #0023     cl /W3 /GX /Zi /YX /Od /DWIN32 /D_CONSOLE /FR /c objdump。c 



       如果是很简单的情況,例如本节的  JBACKUP  只有一个  C  原代码,那么这样也行 (在 



       命令列之下): 



           cl jbackup。c     A 将获得 jbackup。exe 



                                                                                              31 


…………………………………………………………Page 94……………………………………………………………

    注意,环境变量要先设定好(请参考本章稍早的「如何产生Generic。exe 」一节)。 



    第3章的Frame_ 程序则是这样完成的: 



    cl my。cpp mfc。cpp       my。exe 

                              将获得 



    至于到底该联结哪些链接库,全让CL。EXE 去伤脑筋就好了。 



JBACKUP :Win32 Console 程序设计 



    撰写console 程序,有几个重点请注意: 



    1。 进入点为main 。 



             pr intf scanf cin cout  

    2。 可以使用      、     、   、    等标准输出入装置。 



    3。 可以调用和GUI 无关的Win32 API 。 



    我的这个JBACKUP 程序可以有一个或两个参数,用法如下: 



      C:SomeoneDir》JBACKUP SrcDir 'DstDir' 



      例如JBACKUP g: k: 



      将磁盘目录SrcDir  中的新文件拷贝到磁盘目录DstDir , 



      并将DstDir  的赘余文件杀掉。 



                 DstDir      k:                  …MO … 

      如果没有指定          ,预设为      (那是我的可写入光驱              的代码啦) 



      并将k:  的磁盘目录设定与SrcDir 相同。 



      例如JBACKUP g: 



      而目前g: 是g:u002doc 



                 g:u002doc   k:u002doc        k:u002doc  

      那么相当于把              备份到            中,并杀掉             的赘余文件。 



    JBACK 检查SrcDir  中所有的文件和DstDir  中所有的文件,把比较新的文件从SrcDir 



    中拷贝到DstDir 去,并把Ds
返回目录 上一页 下一页 回到顶部 0 0
未阅读完?加入书签已便下次继续阅读!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!