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

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

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




       Doc。cpp 

      View。cpp 

      RecSet。cpp 

       SrvrItem。cpp 

       IpFrame。cpp 

       CntrItem。cpp 

      NewProj。inf 

       Confirm。inf 



Macros 



      我们惯常所说的程序中的macro,通常带有「动作」。这里的macro 则是用来代表一个 



      常数。前后以 包夹起来的字符串即为一个macro 名称,例如: 



                                                                                               781 


…………………………………………………………Page 844……………………………………………………………

                   第篇    深入  MFC  程式設計 



                       class FRAME_CLASS : public FRAME_BASE_CLASS 



                   程序代码产生器看到这样的句子, 如果发现FRAME_CLASS 被定义为 



                    〃CMDIFrameWnd〃,FRAME_BASE_CLASS 被定义为〃CFrameWnd〃,就产生出这样 



                    的句子: 



                        class CMDIFrameWnd : public CFrameWnd 



                    Developer Studio 系统已经内建一组标准的macros 如下,给AppWizard 所产生的每一 



                    个项目使用: 



                    宏名称                 意义 



                    APP                应用程序的CWinApp…driven class。 



                    FRAME                       应用程序的main frame class。 



                    DOC                              应用程序的document class。 



                    VIEW                 应用程序的view class。 



                    CHILD_FRAME         应用程序的MDI child frame class   (如果有的话) 



                    DLG                应用程序的main dialog box class   (在dialog…based 程序中) 



                    RECSET             应用程序的recordset class    (如果有的话) 



                    SRVRITEM              应用程序的main server…item class (如果有的话) 



                    CNTRITEM            应用程序的main container…item class  (如果有的话) 



                    IPFRAME              应用程序的in…place frame class (如果有的话) 



                   另外还有一组macro,可以和前面那组搭配运用: 



                    宏名称                       意义 



                    class                      类别名称(小写) 



                    CLASS                    类别名称(大写) 



                    base_class                  基础类别的名称(小写) 



                    BASE_CLASS              基础类别的名称(大写) 



                    ifile                       实作档名称(。CPP 档,不含扩展名)(小写) 



782 


…………………………………………………………Page 845……………………………………………………………

                                                            15              AppWizard 

                                                          第 章 定製個 



        IFILE                实作档名称(。CPP 档,不含扩展名)(大写) 



        hfile                              头文件名称(。H 档,不含扩展名)(小写) 



        HFILE             头文件名称(。H 档,不含扩展名)(大写) 



        ROOT             应用程序的项目名称(全部大写) 



        root                 应用程序的项目名称(全部小写) 



        Root                 应用程序的项目名称(可以引大小写) 



              图15…3 列出项目名称为Scribble  的某些个标准宏内容。 



         宏                实际内容 



       APP_CLASS           CScribbleApp 



       VIEW_IFILE          SCRIBBLEVIEW 



       DOC_HFILE           SCRIBBLEDOC 



       doc_hfile           scribbledoc 



       view_hfile          scribbleview 



             图15…3 项 目名称为Scribble 的数个标准宏内容。 



Directives 



       所谓directives ,类似程序语言中的条件控制句(像是if、else 等等),用来控制text 



       templates  中的流程。字符串前面如果以 开头,就是一个directive,例如: 



             IF(PROJTYPE_MDI) 



             。。。 



             ELSE 



             。。。 



             ENDIF 



        每一个directive 必须出现在每一行的第一个字符。 



        系统提供了一组标准的directives 如下: 



                                                                                          783 


…………………………………………………………Page 846……………………………………………………………

                第篇    深入  MFC  程式設計 



                    IF 



                    ELIF 



                    ELSE 



                    ENDIF 



                    BEGINLOOP 



                    ENDLOOP 



                    SET_DEFAULT_LANG 



                    // 



                    INCLUDE 



         动手修改Top Studio AppWizard 



                我的目的是做出一个属于我个人研究室专用的Top Studio AppWizard ,以原本的MFC 



                AppWizard ((((exe ))))为基础,加上第7个步骤,让程序员填入姓名、简易 



                说明,然后TopSt  udio AppWizard 就能够把这些资料加到每一个源代码文件最前端。 



                看来我们已经找到出口了。我们应该先为Top Studio AppWizard 产生一个对话窗,当 



                做步骤7的画面,再产生一个对应的C++ 类别,于是DDX 功能便能够取得对话窗所接 



                收到的输入字符串(程序员姓名和程序主旨)。然后我们设计一些macros ,再撰写一小段 



                码(其中用到那些macros ),把这一小段码加到每一个。CPP 和。H 档的最前面。大功 



                告成。 



                本例不需要我们动手写directives 。 



                我想我遗漏了一个重要的东西。Macros 如何定义?放在什么地方?我曾经在本书第8章 



                介绍Scribble 的数据结构时,谈到collection classes 。其中有一种数据结构名为Map       (也 



                就是Dictionary )。Macros 正是被定义并储存在一个Map 之中,并以macro 名称做为 



                键值(key )。 



                让我们一步一步来。 



784 


…………………………………………………………Page 847……………………………………………………………

                                                  15           AppWizard 

                                               第 章 定製個 



 利用资源编辑器修改IDD_CUSTOM1 对话窗画面 



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