Compartir a través de


TN035: Uso de varios archivos de recursos y archivos de encabezado con Visual C++

Nota:

La nota técnica siguiente no se ha actualizado desde que se incluyó por primera vez en la documentación en línea. Como resultado, algunos procedimientos y temas podrían estar obsoletos o incorrectos. Para obtener la información más reciente, se recomienda buscar el tema de interés en el índice de documentación en línea.

En esta nota se describe cómo el editor de recursos de Visual C++ admite varios archivos de recursos y archivos de encabezado compartidos en un solo proyecto o compartidos en varios proyectos y cómo puede aprovechar esa compatibilidad. Esta nota responde a estas preguntas:

  • Cuando quiera dividir un proyecto en varios archivos de recursos o archivos de encabezado, y cómo hacerlo

  • Cómo compartir un archivo de encabezado .H común entre dos .RC archivos

  • Cómo dividir los recursos del proyecto en varios .RC archivos

  • ¿Cómo gestionan usted (y las herramientas) las dependencias de compilación entre los archivos .RC, .CPP y .H?

Debe tener en cuenta que si agrega un archivo de recursos adicional al proyecto, ClassWizard no reconocerá los recursos en el archivo agregado.

Esta nota está estructurada para responder a las preguntas anteriores de la siguiente manera:

  • Información general sobre cómo Visual C++ administra archivos de recursos y archivos de encabezado proporciona información general sobre cómo el comando Resource Set Includes en Visual C++ le permite usar varios archivos de recursos y archivos de encabezado en el mismo proyecto.

  • En Análisis de .RC y .H ficheros creados mediante AppWizard se examinan los diversos archivos de recursos y encabezado que son usados por una aplicación creada mediante AppWizard. Estos archivos sirven como un buen modelo para archivos de recursos adicionales y archivos de encabezado que puede agregar al proyecto.

  • La inclusión de archivos de encabezado adicionales describe dónde puede que quiera incluir varios archivos de encabezado y proporciona detalles sobre cómo hacerlo.

  • Compartir un archivo de encabezado entre dos .RC archivos muestra cómo puede compartir un archivo de encabezado entre varios .RC archivos en proyectos diferentes o quizás en el mismo proyecto.

  • El uso de varios archivos de recursos en el mismo proyecto describe dónde es posible que quiera dividir el proyecto en varios .RC archivos y proporciona detalles sobre cómo hacerlo.

  • En Cumplimiento de archivos Visual C++ no editables se describe cómo puede garantizarse que Visual C++ no modifique o cambie de forma involuntaria el formato de un recurso personalizado.

  • La administración de símbolos compartidos por varios archivos editados .RC de Visual C++ describe cómo compartir los mismos símbolos en varios .RC archivos y cómo evitar asignar valores numéricos de identificador duplicados.

  • La administración de dependencias entre .RClos archivos , .CPPy .H describe cómo Visual C++ evita la recompilación .CPP innecesaria de archivos que dependen de los archivos de símbolos de recursos.

  • En Cómo administra Visual C++ la información sobre Set Includes se proporciona detallada información técnica sobre cómo lleva a cabo Visual C++ el seguimiento de varios archivos .RC (anidados) y varios archivos de encabezado que están incluidos por un archivo .RC.

Información general sobre cómo Visual C++ administra los archivos de recursos y los archivos de encabezado

Visual C++ administra un único .RC archivo de recursos y un archivo de encabezado correspondiente .H como un par de archivos estrechamente acoplado. Al editar y guardar recursos en un .RC archivo, edita y guarda símbolos indirectamente en el archivo correspondiente .H . Aunque puede abrir y editar varios .RC archivos a la vez (mediante la interfaz de usuario MDI de Visual C++), para cada archivo determinado .RC se edita indirectamente exactamente un archivo de encabezado correspondiente.

Cuadro de diálogo de archivos de inclusión de recursos de la vista de recursos

Para acceder a Resource Includes, abra la vista de recursos y haga clic con el botón derecho en el .RC archivo y seleccione Resource Includes (Incluye recursos).

Archivo de encabezado de símbolos

De forma predeterminada, Visual C++ siempre asigna un nombre al archivo RESOURCE.Hde encabezado correspondiente, independientemente del nombre del archivo de recursos (por ejemplo, MYAPP.RC). La sección Archivo de encabezado de símbolos: del cuadro de diálogo Inclusiones de recursos en Visual C++ le permite cambiar el nombre de este archivo de encabezado. Escriba un nuevo nombre de archivo en el cuadro de edición de la sección.

Nota:

Los archivos de recursos no se encuentran en el mismo directorio ya que el archivo .RC debe anteponer una ruta de acceso relativa con el carácter "\" de escape para que se lea correctamente.

Directivas de Símbolos Read-Only

Aunque Visual C++ solo edita un archivo de encabezado para cualquier archivo determinado .RC , Visual C++ admite referencias a símbolos definidos en archivos de encabezado de solo lectura adicionales. La sección Directivas de símbolos de solo lectura del cuadro de diálogo Archivos de inclusión de recursos le permite especificar cualquier número de archivos de encabezado de solo lectura adicionales como directivas de símbolos de solo lectura. La restricción de solo lectura significa que, al agregar un nuevo recurso en el .RC archivo, puede usar un símbolo definido en el archivo de encabezado de solo lectura. Sin embargo, si elimina el recurso, el símbolo sigue estando definido en el archivo de encabezado de solo lectura. No se puede cambiar el valor numérico asignado a un símbolo de solo lectura.

Directivas de tiempo de compilación

Visual C++ también admite el anidamiento de archivos de recursos, donde se incluye un .RC archivo dentro de otro mediante una #include directiva . Al editar un archivo determinado .RC mediante Visual C++, los recursos de los archivos incluidos no están visibles. Pero al compilar el .RC archivo, también se compilan los archivos incluidos. La sección Compile-Time Directivas: del cuadro de diálogo Resources Includes (Inclusión de recursos) le permite especificar una cantidad de archivos .RC para incluirlos como directivas Compile-Time.

Preste atención a lo que sucede si procesa en Visual C++ un .RC archivo que incluye otro .RC archivo que no está* especificado como una directiva de Compile-Time. Esta situación puede surgir al traer a Visual C++ un .RC archivo que había estado manteniendo manualmente con un editor de texto. Cuando Visual C++ lee el archivo incluido .RC , combina los recursos incluidos en el archivo primario .RC . Al guardar el archivo primario .RC, la declaración #include, efectivamente, se reemplazará por los recursos incluidos. Si no desea que se produzca esta combinación, debe quitar la #include instrucción del archivo primario .RCantes de leerlo en Visual C++; luego, usando Visual C++, vuelva a agregar la misma #include instrucción como una directiva Compile-Time.

Visual C++ guarda en un archivo .RC los tres tipos anteriores de información establecida de inclusión (Archivo de encabezado de símbolos, Directivas de símbolos de solo lectura y Directivas en tiempo de compilación) en directivas #includey en recursos TEXTINCLUDE. Los recursos TEXTINCLUDE, un detalle de implementación del que normalmente no hay que preocuparse, se explican en Cómo administra Visual C++ la información de inclusión establecida.

Análisis de .RC y .H archivos creados por AppWizard

Examinar el código de aplicación generado por AppWizard proporciona información sobre cómo Visual C++ administra varios archivos de recursos y archivos de encabezado. Los extractos de código examinados a continuación proceden de una MYAPP aplicación producida por AppWizard mediante las opciones predeterminadas.

Una aplicación creada por AppWizard usa varios archivos de recursos y varios archivos de encabezado, como se resume en el diagrama siguiente:

   RESOURCE.H     AFXRES.H
          \       /
           \     /
          MYAPP.RC
              |
              |
        RES\MYAPP.RC2
        AFXRES.RC
        AFXPRINT.RC

Puede ver estas relaciones de varios archivos mediante el comando de inclusión de archivos de Visual C++.

MYAPP.RC
El archivo de recursos de la aplicación que edita con Visual C++.

RESOURCE.H es el archivo de encabezado específico de la aplicación. AppWizard siempre le asigna el nombre RESOURCE.H, de manera coherente con la denominación predeterminada de Visual C++ para el archivo de encabezado. Para este archivo de encabezado, #include es la primera instrucción del archivo de recursos (MYAPP.RC):

//Microsoft Visual C++ generated resource script
//
#include "resource.h"

RES\MYAPP.RC2
Contiene recursos que Visual C++ no editará, pero se incluirán en el archivo compilado .EXE final. AppWizard no crea estos recursos de forma predeterminada, ya que Visual C++ puede editar todos los recursos estándar, incluido el recurso de versión (una nueva característica de esta versión). AppWizard genera un archivo vacío en caso de que desee agregar sus propios recursos con formato personalizado a este archivo.

Si usa recursos con formato personalizado, puede agregarlos a RES\MYAPP.RC2 y editarlos mediante el editor de texto de Visual C++.

AFXRES.RC y AFXPRINT.RC contienen recursos estándar requeridos por determinadas características del marco. Al igual que RES\MYAPP.RC2, estos dos archivos de recursos proporcionados por el marco se incluyen al final de MYAPP.RC y se especifican en las Directivas Compile-Time del cuadro de diálogo Incluir. Por lo tanto, no ve ni edita directamente estos recursos del marco mientras edita MYAPP.RC en Visual C++, pero se compilan en el archivo binario .RES de la aplicación y en el archivo final .EXE . Para obtener más información sobre los recursos del marco estándar, incluidos los procedimientos para modificarlos, vea Nota técnica 23.

AFXRES.H define símbolos estándar, como ID_FILE_NEW, que usa el marco y se usa específicamente en AFXRES.RC. AFXRES.H también utiliza #include para incluir WINRES.H, que contiene un subconjunto de WINDOWS.H que resultan necesarios para los archivos .RC generados por Visual C++ y AFXRES.RC. Los símbolos definidos en AFXRES.H están disponibles a medida que edita el archivo de recursos de la aplicación (MYAPP.RC). Por ejemplo, ID_FILE_NEW se usa para el FileNew elemento de menú del MYAPP.RC recurso de menú del archivo. No puede cambiar ni eliminar estos símbolos definidos por el marco.

Incluir archivos de encabezado adicionales

La aplicación creada por AppWizard solo incluye dos archivos de encabezado: RESOURCE.H y AFXRES.H. Solo RESOURCE.H es específico de la aplicación. Es posible que tenga que incluir archivos de encabezado de solo lectura adicionales en los casos siguientes:

Un origen externo proporciona el archivo de encabezado o desea compartir el archivo de encabezado entre varios proyectos o varias partes del mismo proyecto.

El archivo de encabezado tiene formato y comentarios que no desea que Visual C++ cambie o filtre cuando guarde el archivo. Por ejemplo, quizá desee conservar las instrucciones #define que utilicen aritmética simbólica, tales como:

#define RED 0
#define BLUE 1
#define GREEN 2
#define ID_COLOR_BUTTON 1001
#define ID_RED_BUTTON (ID_COLOR_BUTTON + RED)
#define ID_BLUE_BUTTON (ID_COLOR_BUTTON + BLUE)
#define ID_GREEN_BUTTON (ID_COLOR_BUTTON + GREEN)

Puede incluir archivos de encabezado adicionales de solo lectura utilizando el comando Resource Includes para especificar la instrucción #include como una segunda directiva de símbolos Read-Only, como en:

#include "afxres.h"
#include "second.h"

El nuevo diagrama de relación de archivo ahora tiene el siguiente aspecto:

                   AFXRES.H
    RESOURCE.H     SECOND.H
          \       /
           \     /
          MYAPP.RC
              |
              |
        RES\MYAPP.RC2  
        AFXRES.RC
        AFXPRINT.RC

Uso compartido de un archivo de encabezado entre dos .RC archivos

Es posible que desee compartir un archivo de encabezado entre dos .RC archivos que se encuentran en proyectos diferentes o posiblemente el mismo proyecto. Para ello, aplique la técnica de directivas de Read-Only descrita anteriormente a ambos .RC archivos. En el caso de que los dos .RC archivos sean para diferentes aplicaciones (proyectos diferentes), el resultado se ilustra en el diagrama siguiente:

     RESOURCE.H   AFXRES.H   RESOURCE.H  
    (for MYAPP1)  SECOND.H   (for MYAPP2)
          \       /     \       /
           \     /       \     /
          MYAPP1.RC      MYAPP2.RC
           /    \        /     \
          /      \      /       \
RES\MYAPP1.RC2  AFXRES.RC     RES\MYAPP2.RC2
                AFXPRINT.RC

A continuación se describe el caso en el que dos archivos de la misma aplicación (proyecto) comparten .RC el segundo archivo de encabezado.

Uso de varios archivos de recursos en el mismo proyecto

Visual C++ y el compilador de recursos admiten varios .RC archivos en el mismo proyecto mediante #include directivas que incluyen un .RC archivo dentro de otro. Se permite el anidamiento múltiple. Hay varias razones para dividir los recursos del proyecto en varios .RC archivos:

  • Es más fácil administrar un gran número de recursos entre varios miembros del equipo del proyecto si divide los recursos en varios .RC archivos. Si utiliza un paquete de gestión de control de código fuente para extraer archivos y guardar los cambios, dividir los recursos en varios archivos .RC le proporcionará un control más preciso sobre la gestión de cambios en los recursos.

  • Si desea usar directivas de preprocesador, como #ifdef, #endify #define, para partes de los recursos, debe aislarlas en recursos de solo lectura compilados por el compilador de recursos.

  • Los archivos de componentes .RC se cargarán y guardarán más rápido en Visual C++ que un archivo compuesto .RC .

  • Si desea mantener un recurso con un editor de texto en un formato legible para humanos, debe mantenerlo en un .RC archivo separado del que edita Visual C++.

  • Si necesita mantener un recurso definido por el usuario en un formulario binario o de texto que pueda interpretar otro editor de datos especializado, debe mantenerlo en un archivo independiente .RC para que Visual C++ no cambie el formato a datos hexadecimales. Los recursos de archivo .WAV (de sonido) del ejemplo de conceptos avanzados SPEAKN de MFC son un buen ejemplo.

Puede incluir SECOND.RC en las directivas de tiempo de compilación en el cuadro de diálogo Archivos de inclusión establecidos:

#include "res\myapp.rc2"  // non-Visual C++ edited resources
#include "second.rc"  // THE SECOND .RC FILE

#include "afxres.rc"  // Standard components
#include "afxprint.rc"  // printing/print preview resources

El resultado se muestra en el diagrama siguiente:

   RESOURCE.H     AFXRES.H
          \       /
           \     /
          MYAPP.RC
              |
              |
        RES\MYAPP.RC2
        SECOND.RC  
        AFXRES.RC
        AFXPRINT.RC

Si usa directivas de tiempo de compilación, puede organizar los recursos editables y no editables de Visual C++ en varios archivos .RC, donde el archivo MYAPP.RC principal solo aplica #include a los otros archivos .RC. Si usa un archivo de proyecto .MAK de Visual Studio C++, debe incluir el archivo principal .RC en el proyecto para que todos los recursos incluidos se compilen con la aplicación.

Aplicación de restricciones a los archivos no editables de Visual C++

El archivo RES\MYAPP.RC2 creado mediante AppWizard es un ejemplo de archivo que contiene recursos que no quiere que se lean accidentalmente en Visual C++ y, después, volverlos a escribir con pérdida de información de formato. Para protegerse contra este problema, coloque las siguientes líneas al principio del RES\MYAPP.RC2 archivo:

#ifdef APSTUDIO_INVOKED
    #error this file is not editable by Visual C++
#endif //APSTUDIO_INVOKED

Cuando Visual C++ compila el archivo .RC, define tanto el APSTUDIO_INVOKED como el RC_INVOKED. Si la estructura de archivos creada por AppWizard está dañada y Visual C++ lee la línea de #error anterior, notifica un error irrecuperable y anula la lectura del .RC archivo.

Administración de símbolos .RC compartidos por varios archivos editados con Visual C++

Se producen dos problemas al dividir los recursos en varios .RC archivos que desea editar por separado en Visual C++:

  • Es posible que quiera compartir los mismos símbolos en varios .RC archivos.

  • Debe ayudar a Visual C++ a evitar asignar los mismos valores numéricos de identificador a distintos recursos (símbolos).

En el diagrama siguiente se muestra una organización de .RC archivos y .H que se ocupa del primer problema:

              MYAPP.RC
             /         \
            /           \
MYSTRS.H   / MYSHARED.H  \  MYMENUS.H
     \    /    /      \   \    \
      \  /    /        \   \    \
      MYSTRS.RC         MYMENUS.RC

En este ejemplo, los recursos de cadena se mantienen en un archivo de recursos, MYSTRS.RCy los menús se mantienen en otro, MYMENUS.RC. Es posible que algunos símbolos, como para los comandos, deba compartirse entre los dos archivos. Por ejemplo, ID_TOOLS_SPELL puede ser el identificador de comando de menú del elemento Spell en un menú Herramientas; y también puede ser el identificador de cadena del indicador de comando mostrado por el marco en la barra de estado de la ventana principal de la aplicación.

El ID_TOOLS_SPELL símbolo se mantiene en el archivo de encabezado compartido, MYSHARED.H. Mantiene este archivo de encabezado compartido manualmente con un editor de texto; Visual C++ no lo edita directamente. En los dos archivos de recursos MYSTRS.RC y MYMENUS.RC, especifique #include "MYSHARED.H" en las directivas de Read-Only para MYAPP.RC, mediante el comando Resource Includes, como se describió anteriormente.

Es más conveniente anticipar un símbolo que compartirá antes de intentar usarlo para identificar cualquier recurso. Agregue el símbolo al archivo de encabezado compartido y, si aún no ha incluido el archivo de encabezado compartido en las directivas de Read-Only para el .RC archivo, hágalo antes de usar el símbolo. Si no ha previsto compartir el símbolo de esta manera, tendrá que mover manualmente (mediante un editor de texto) la instrucción #define del símbolo, por ejemplo, MYMENUS.H a MYSHARED.H antes de usarla en MYSTRS.RC.

Al administrar símbolos en varios .RC archivos, también debe ayudar a Visual C++ a evitar asignar los mismos valores numéricos de identificador a distintos recursos (símbolos). Para cualquier archivo determinado .RC , Visual C++ asigna incrementalmente identificadores en cada uno de los cuatro dominios de identificador. Entre las sesiones de edición, Visual C++ realiza un seguimiento del último identificador que asignó en cada uno de los dominios del archivo de encabezado de símbolos para el .RC archivo. Aquí están los valores de APS_NEXT para un archivo .RC vacío (nuevo):

#define _APS_NEXT_RESOURCE_VALUE  101
#define _APS_NEXT_COMMAND_VALUE   40001
#define _APS_NEXT_CONTROL_VALUE   1000
#define _APS_NEXT_SYMED_VALUE     101

_APS_NEXT_RESOURCE_VALUE es el siguiente valor de símbolo que se usará para un recurso de diálogo, un recurso de menú, etc. El intervalo válido para los valores de símbolo de recursos es de 1 a 0x6FFF.

_APS_NEXT_COMMAND_VALUE es el siguiente valor de símbolo que se usará para una identificación de comandos. El intervalo válido para los valores de símbolo de comando se 0x8000 a 0xDFFF.

_APS_NEXT_CONTROL_VALUE es el siguiente valor de símbolo que se usará para un control de diálogo. El intervalo válido para los valores de símbolos de control de cuadro de diálogo es de 8 a 0xDFFF.

_APS_NEXT_SYMED_VALUE es el siguiente valor de símbolo que se emitirá al asignar manualmente un valor de símbolo mediante el comando Nuevo en el Explorador de símbolos.

Visual C++ comienza con valores ligeramente más altos que el valor legal más bajo al crear un nuevo .RC archivo. AppWizard también inicializará estos valores en algo más adecuado para las aplicaciones de MFC. Para obtener más información sobre los intervalos de valores de identificador, vea Nota técnica 20.

Ahora cada vez que se crea un nuevo archivo de recursos, incluso en el mismo proyecto, Visual C++ define los mismos _APS_NEXT_ valores. Significa que, si agrega, por ejemplo, varios diálogos en dos archivos diferentes .RC , es muy probable que el mismo valor de #define se asigne a diferentes diálogos. Por ejemplo, IDD_MY_DLG1 en el primer .RC archivo se podría asignar el mismo número, 101, que IDD_MY_DLG2 en un segundo .RC archivo.

Para evitar este problema, debe reservar un intervalo numérico independiente para cada uno de los cuatro dominios de identificadores en los archivos respectivos .RC . Establezca los intervalos actualizando manualmente los _APS_NEXT valores de cada uno de los .RC archivos antes de empezar a agregar recursos. Por ejemplo, si el primer .RC archivo usa los valores predeterminados _APS_NEXT , es posible que desee asignar los siguientes _APS_NEXT valores al segundo .RC archivo:

#define _APS_NEXT_RESOURCE_VALUE  2000
#define _APS_NEXT_COMMAND_VALUE   42000
#define _APS_NEXT_CONTROL_VALUE   2000
#define _APS_NEXT_SYMED_VALUE     2000

Por supuesto, todavía es posible que Visual C++ asigne tantos identificadores en el primer .RC archivo que los valores numéricos empiecen a superponerse a los reservados para el segundo .RC archivo. Debe reservar intervalos lo suficientemente grandes para que esta colisión no suceda.

Administración de dependencias entre los archivos .RC, .CPP y .H

Cuando Visual C++ guarda un .RC archivo, también guarda los cambios de símbolo en el archivo correspondiente RESOURCE.H . Cualquiera de los .CPP archivos que hagan referencia a los recursos en el archivo .RC deben usar #include para incluir el archivo RESOURCE.H, normalmente desde el archivo de encabezado principal del proyecto. Esta inclusión provoca un efecto secundario no deseado debido a la administración de proyectos interna del entorno de desarrollo, que examina los archivos de código fuente para detectar dependencias de encabezado. Cada vez que agregue un nuevo símbolo en Visual C++, todos los .CPP archivos que tienen #include "RESOURCE.H" directivas deberán volver a compilarse.

Visual C++ evita la dependencia en RESOURCE.H mediante la inclusión del siguiente comentario como primera línea del archivo RESOURCE.H.

//{{NO_DEPENDENCIES}}

El entorno de desarrollo interpreta este comentario ignorando los cambios en RESOURCE.H para que no sea necesario volver a compilar los archivos dependientes .CPP .

Visual C++ siempre agrega la línea de //{{NO_DEPENDENCIES}} comentario a un .RC archivo cuando guarda el archivo. En algunos casos, evitar la dependencia de compilación en RESOURCE.H puede provocar errores en tiempo de ejecución que no se detectan en el momento del enlace. Por ejemplo, si utiliza el Navegador de Símbolos para cambiar el valor numérico asignado a un símbolo de un recurso, el recurso no se encontrará ni se cargará correctamente durante la ejecución de la aplicación si el .CPP archivo que hace referencia al recurso no se vuelve a compilar. En tales casos, debe volver a compilar explícitamente los .CPP archivos que sepa que se ven afectados por los cambios de símbolo en RESOURCE.H o seleccione Recompilar todo. Si tiene la necesidad de cambiar con frecuencia los valores de símbolo de un determinado grupo de recursos, probablemente lo encontrará más cómodo y seguro para dividir estos símbolos en un archivo de encabezado de solo lectura independiente, como se describe en la sección anterior Incluir archivos de encabezado adicionales.

Cómo administra Visual C++ la información de inclusión establecida

Como se explicó anteriormente, el comando Set Includes del menú Archivo le permite especificar tres tipos de información:

  • Archivo de encabezado de símbolos

  • Directivas de Símbolos Read-Only

  • Directivas de tiempo de compilación

En la tabla siguiente se describe cómo Visual C++ mantiene esta información en un .RC archivo. No necesita esta información para usar Visual C++, pero puede mejorar su comprensión para que pueda usar la característica Set Includes de forma más segura.

Cada uno de los tres tipos anteriores de información Set Includes se almacena en el .RC archivo de dos formas: (1) como #include u otras directivas interpretables por el compilador de recursos y (2) como recursos especiales TEXTINCLUDE que solo puede interpretar Visual C++.

El propósito del recurso TEXTINCLUDE es almacenar con seguridad información de inclusión en un formato que se pueda presentar fácilmente en el cuadro de diálogo Establecer archivos de inclusión de Visual C++. TEXTINCLUDE es un tipo de recurso definido por Visual C++. Visual C++ reconoce tres recursos específicos TEXTINCLUDE que tienen los números de identificación de recursos 1, 2 y 3:

TEXTINCLUDE identificador de recurso Tipo de conjunto Incluye información
1 Archivo de encabezado de símbolos
2 Directivas de Símbolos Read-Only
3 Directivas de tiempo de compilación

Cada uno de los tres tipos de información que incluye Set está ilustrado por los archivos predeterminados MYAPP.RC y RESOURCE.H creados por AppWizard, como se describe a continuación. La sintaxis RC requiere los tokens adicionales \0 y "" entre los bloques BEGIN y END para especificar respectivamente cadenas terminadas en cero y el carácter de comilla doble.

Archivo de encabezado de símbolos

El formato de la información del archivo de encabezado de símbolo interpretado por el compilador de recursos es simplemente una #include declaración.

#include "resource.h"

El recurso correspondiente TEXTINCLUDE es:

1 TEXTINCLUDE DISCARDABLE
BEGIN
    "resource.h\0"
END

Directivas de Símbolos Read-Only

Read-Only directivas de símbolos se incluyen en la parte superior de MYAPP.RC en la siguiente forma interpretable por el compilador de recursos:

#include "afxres.h"

El recurso correspondiente TEXTINCLUDE es:

2 TEXTINCLUDE DISCARDABLE
BEGIN
   "#include ""afxres.h""\r\n"
   "\0"
END

Directivas de tiempo de compilación

Las directivas de tiempo de compilación se incluyen al final de MYAPP.RC con el siguiente formato interpretable por el compilador de recursos:

#ifndef APSTUDIO_INVOKED
///////////////////////
//
// From TEXTINCLUDE 3
//
#include "res\myapp.rc2"  // non-Visual C++ edited resources

#include "afxres.rc"  // Standard components
#include "afxprint.rc"  // printing/print preview resources
#endif  // not APSTUDIO_INVOKED

La #ifndef APSTUDIO_INVOKED directiva indica a Visual C++ que omita las directivas de Compile-Time.

El recurso correspondiente TEXTINCLUDE es:

3 TEXTINCLUDE DISCARDABLE
BEGIN
"#include ""res\myapp.rc2""  // non-Visual C++ edited resources\r\n"
"\r\n"
"#include ""afxres.rc""  // Standard components\r\n"
"#include ""afxprint.rc""  // printing/print preview resources\r\n"
"\0"
END

Consulte también

Notas técnicas por número
Notas Técnicas por Categoría