WEB开发网
开发学院软件开发VC 一个关于#include的问题 阅读

一个关于#include的问题

 2010-07-11 20:44:20 来源:WEB开发网   
核心提示:是否能对它进行处理呢?当然可以,你可能注意到了App Studio将自己专用的信息嵌入到资源文件中,一个关于#include的问题(2),例如,你可能创建了一个带边空的对话框(如图八),此外——也是最重要的一点——App Studio在它存储你的.rc文件时会保护你的#i

是否能对它进行处理呢?当然可以。你可能注意到了App Studio将自己专用的信息嵌入到资源文件中。例如,你可能创建了一个带边空的对话框(如图八)。你是否知道App Studio将边空尺寸存在哪了吗?并没有存在对话框的语句中,因为它没有MARGINS选项。其实,App Studio将这些信息存在了一个特殊的段中:

//
#ifdef APSTUDIO_INVOKED
GUIDELINES DESIGNINFO DISCARDABLE
BEGIN
  IDD_MYDIALOG, DIALOG
  BEGIN
    LEFTMARGIN, 8
    RIGHTMARGIN, 502
    TOPMARGIN, 8
    BOTTOMMARGIN, 273
  END
END
#endif // APSTUDIO_INVOKED
//

APSTUDIO_INVOKED是在当App Studio 处理.rc文件时定义的,而不是在通常资源编译器编译它的时候定义的。资源编译器根本就不会明白“GUIDELINES”的意思;只有App Studio才会明白。为什么#include的问题会牵扯到“GUIDELINES”呢?因为这个问题的答案依赖于APSTUDIO_INVOKED。你要做的全部工作只是将要包含的文件一下面的形式#include就可以了:

//
#ifndef APSTUDIO_INVOKED // if NOT defined
#include "MyOtherHeader.h"
#endif
//

App Studio在运行时,因为定义了APSTUDIO_INVOKED,所以它忽略掉你的#include。但当没有定义APSTUDIO_INVOKED时,RC编译器就会编译你#include的文件。此外——也是最重要的一点——App Studio在它存储你的.rc文件时会保护你的#include语句。它识别: “这里的这个#ifndef块不是我的,所以我想最好还是不删除它...”

如果你的好奇心想知道为什么App Studio总是要删除开始那样添加的代码——那是另外一个故事! 我们下次再讲吧。

上一页  1 2 

Tags:一个 关于 include

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接