按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 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