我试图将一个头文件包含在工程的资源文件中。为此在.rc文件中添加了如下一行代码:#include "MyFile.h"虽然运行没有问题,但是每次在Visual Studio中打开资源时,它都把这一行代码删除掉了。我之所以要包含这个头文件是因为想使用第三方定义的菜单项ID号。如何 解决

解决方案 »

  1.   

    在打开.rc文件的时候,App Studio(Visual Studio资源编辑器的老名称)自己要对这个文件作一些处理。在存储文件时,它并不重新产生这个文件并另存。特别是App Studio喜欢有一个而且只有一个头文件来包含所定义的全部资源符号。通常,这个文件叫resource.h,但是你可以通过在MyApp上单击右键并选择“Resource Includes”(资源包含)来改变这个文件的名字。当App Studio写入资源文件的时候,它产生一个而且只产生一个#include语句。任何用手东方式敲入的附加的#include都会像前面那样被删掉。//
    #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
    //