Sdílet prostřednictvím


TN035: Použití více souborů prostředků a souborů hlaviček v jazyce Visual C++

Poznámka

Následující technická poznámka se od prvního zahrnutí do online dokumentace neaktualizovala. V důsledku toho můžou být některé postupy a témata zastaralé nebo nesprávné. Nejnovější informace doporučujeme vyhledat v online indexu dokumentace, které vás zajímá.

Tato poznámka popisuje, jak editor prostředků Visual C++ podporuje více souborů prostředků a soubory hlaviček sdílené v jednom projektu nebo sdílené v rámci více projektů a jak můžete využít výhod této podpory. Tato poznámka odpovídá na tyto otázky:

  • Kdy můžete chtít projekt rozdělit na několik souborů zdrojů nebo soubory hlaviček a jak to udělat

  • Jak sdílet společný soubor hlaviček .H mezi dvěma .RC soubory

  • Jak rozdělíte projektové zdroje do více .RC souborů

  • Jak můžete (a nástroje) spravovat závislosti sestavení mezi .RC, .CPPa .H soubory

Měli byste vědět, že pokud do projektu přidáte další soubor prostředků, TřídaWizard nerozpozná prostředky v přidaném souboru.

Tato poznámka je strukturovaná tak, aby odpovídala na výše uvedené otázky následujícím způsobem:

  • Přehled toho, jak Visual C++ spravuje soubory prostředků a soubory hlaviček, poskytuje přehled o tom, jak příkaz Sada prostředků zahrnuje v jazyce Visual C++ umožňuje ve stejném projektu používat více souborů prostředků a souborů hlaviček.

  • Analýza souborů vytvořených .RC aplikací AppWizard a .H Files se podívá na více prostředků a hlaviček souborů, které používá aplikace vytvořená aplikací AppWizard. Tyto soubory slouží jako dobrý model pro další soubory prostředků a hlavičkové soubory, které můžete chtít přidat do projektu.

  • Zahrnutí dalších souborů hlaviček popisuje, kde můžete chtít zahrnout více souborů hlaviček, a poskytuje podrobnosti o tom, jak to udělat.

  • Sdílení souboru záhlaví mezi dvěma .RC soubory ukazuje, jak můžete sdílet jeden soubor záhlaví mezi více .RC soubory v různých projektech nebo třeba ve stejném projektu.

  • Použití více souborů zdrojů ve stejném projektu popisuje, kde můžete projekt rozdělit do více .RC souborů, a poskytuje podrobnosti o tom, jak to udělat.

  • Vynucení needitovatelných souborů Visual C++ popisuje, jak můžete zajistit, aby Visual C++ neupravuje a neúmyslně přeformátuje vlastní prostředek.

  • Správa symbolůsdílenýchchm .RC kódem popisuje, jak sdílet stejné symboly ve více .RC souborech a jak se vyhnout přiřazování duplicitních číselných hodnot ID.

  • Správa závislostí mezi .RCa .CPPsoubory popisuje, .H jak Visual C++ zabraňuje zbytečnému překompilování .CPP souborů závislých na souborech symbolů prostředků.

  • Způsob správy sady Visual C++ obsahuje informace o technických podrobnostech o tom, jak Visual C++ sleduje více (vnořených) .RC souborů a více souborů hlaviček, které jsou součástí .RC souboru.

Přehled toho, jak Visual C++ spravuje soubory prostředků a soubory hlaviček

Visual C++ spravuje jeden .RC soubor prostředků a odpovídající .H hlavičkový soubor jako úzce propojený pár souborů. Když upravujete a ukládáte prostředky v .RC souboru, nepřímo upravujete a ukládáte symboly do odpovídajícího .H souboru. I když můžete současně otevírat a upravovat více .RC souborů (pomocí uživatelského rozhraní MDI jazyka Visual C++), pro každý soubor .RC , který nepřímo upravujete přesně jeden odpovídající hlavičkový soubor.

Dialogové okno Zahrnutí prostředků v zobrazení zdrojů

Pokud chcete získat přístup k zahrnutí prostředků, otevřete zobrazení zdrojů a klikněte pravým tlačítkem myši na .RC soubor a vyberte Možnost Zahrnutí prostředků.

Soubor záhlaví symbolu

Ve výchozím nastavení Visual C++ vždy pojmenuje odpovídající soubor RESOURCE.Hhlavičky bez ohledu na název souboru prostředku (například MYAPP.RC). Soubor záhlaví symbolů : oddíl v dialogovém okně Zahrnutí prostředků v jazyce Visual C++ umožňuje změnit název tohoto souboru záhlaví. Do textového pole oddílu zadejte nový název souboru.

Poznámka

soubory prostředků, které nejsou umístěné ve stejném adresáři jako .RC soubor, musí předcházet relativní cestě s řídicím znakem -\, aby se správně četly.

Direktivy symbolů jen pro čtení

Přestože Visual C++ upravuje pouze jeden hlavičkový soubor pro každý daný .RC soubor, Visual C++ podporuje odkazy na symboly definované v dalších souborech hlaviček jen pro čtení. Direktivy symbolů jen pro čtení: oddíl v dialogovém okně Resource Includes umožňuje zadat libovolný počet dalších souborů hlaviček jen pro čtení jako direktivy symbolů jen pro čtení. Omezení jen pro čtení znamená, že když do .RC souboru přidáte nový prostředek, můžete použít symbol definovaný v souboru záhlaví jen pro čtení. Pokud však prostředek odstraníte, zůstane symbol stále definovaný v souboru hlavičky jen pro čtení. Číselnou hodnotu přiřazenou symbolu jen pro čtení nemůžete změnit.

Direktivy pro kompilaci

Visual C++ také podporuje vnoření souborů prostředků, kde jeden .RC soubor je součástí jiné pomocí direktivy #include . Při úpravě daného .RC souboru pomocí jazyka Visual C++ nebudou viditelné všechny prostředky v zahrnutých souborech. Při kompilaci .RC souboru se ale kompilují i zahrnuté soubory. Direktivy kompilátoru: oddíl v dialogovém okně Resources Include umožňuje určit libovolný počet .RC souborů, které mají být zahrnuty jako direktivy kompilátoru.

Všimněte si, co se stane, když do visual C++ .RC přečtete soubor, který obsahuje jiný .RC soubor, který není* určen jako direktiva Compile-Time. Tato situace může nastat, když přenesete do visual C++ .RC soubor, který jste dříve udržovali ručně pomocí textového editoru. Když Visual C++ přečte zahrnutý .RC soubor, sloučí zahrnuté prostředky do nadřazeného .RC souboru. Když uložíte nadřazený .RC soubor, #include příkaz se ve výsledku nahradí zahrnutými prostředky. Pokud nechcete, aby k tomuto sloučení došlo, měli byste před jeho čtením do visual C++ odebrat #include příkaz z nadřazeného .RC souboru. Potom pomocí visual C++ přidejte zpět stejný #include příkaz jako direktiva Compile-Time.

Visual C++ ukládá do .RC souboru tři druhy výše uvedených typů set Obsahuje informace (soubor záhlaví symbolů, direktivy symbolů jen pro čtení a direktivy kompilátoru) ve #include direktivách a v TEXTINCLUDE prostředcích. Zdroje TEXTINCLUDE informací, podrobnosti implementace, se kterými se obvykle nemusíte zabývat, jsou vysvětleny v tématu Jak Visual C++ spravuje sadu informací.

Analýza vytvořených .RC souborů a .H souborů AppWizard

Zkoumání kódu aplikace vytvořeného nástrojem AppWizard poskytuje přehled o tom, jak Visual C++ spravuje více souborů prostředků a hlavičkových souborů. Výňatky kódu, které jsme prozkoumali níže, pocházejí z MYAPP aplikace vytvořené pomocí AppWizard s použitím výchozích možností.

Aplikace vytvořená pomocí AppWizard používá více souborů prostředků a více hlaviček, jak je shrnuto v následujícím diagramu:

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

Tyto více relací souborů můžete zobrazit pomocí příkazu Visual C++ File/Set Includes.

MYAPP.RC
Soubor prostředků aplikace, který upravujete pomocí jazyka Visual C++.

RESOURCE.H je soubor hlaviček specifický pro aplikaci. Vždy ji pojmenuje RESOURCE.H AppWizard, která je konzistentní s výchozím pojmenováním souboru hlavičky jazyka Visual C++. Pro #include tento soubor hlaviček je první příkaz v souboru prostředků (MYAPP.RC):

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

RES\MYAPP.RC2
Obsahuje prostředky, které visual C++ neupraví, ale budou zahrnuty do konečného zkompilovaného .EXE souboru. AppWizard ve výchozím nastavení žádné takové prostředky nespustí, protože Visual C++ může upravovat všechny standardní prostředky, včetně prostředku verze (nová funkce v této verzi). Nástroj AppWizard vygeneruje prázdný soubor pro případ, že do tohoto souboru chcete přidat vlastní formátované prostředky.

Pokud používáte vlastní formátované prostředky, můžete je přidat a RES\MYAPP.RC2 upravit pomocí textového editoru Visual C++.

AFXRES.RC a AFXPRINT.RC obsahují standardní prostředky vyžadované určitými funkcemi architektury. Podobně jako RES\MYAPP.RC2tyto dva soubory prostředků poskytované architekturou jsou zahrnuty na konci MYAPP.RCa jsou uvedeny v direktivách kompilace v dialogovém okně Set Include. Proto tyto prostředky architektury při úpravách v jazyce Visual C++ přímo nezobrazíte ani neupravíte MYAPP.RC , ale zkompilují se do binárního .RES souboru a konečného .EXE souboru aplikace. Další informace o standardních prostředcích architektury, včetně postupů pro jejich úpravy, naleznete v technické poznámce 23.

AFXRES.H definuje standardní symboly, jako ID_FILE_NEWjsou například , používané architekturou a konkrétně používané v AFXRES.RC. AFXRES.H také používá #include k zahrnutí WINRES.H, který obsahuje podmnožinu WINDOWS.H , která je potřebná visual C++ generované .RC soubory a AFXRES.RC. Symboly definované v AFXRES.H souboru prostředků aplikace jsou k dispozici při úpravě souboru prostředků aplikace (MYAPP.RC). Například ID_FILE_NEW se používá pro FileNew položku nabídky v MYAPP.RC prostředku nabídky souboru. Tyto symboly definované architekturou nemůžete změnit ani odstranit.

Zahrnutí dalších souborů hlaviček

Aplikace vytvořená aplikací AppWizard obsahuje pouze dva soubory hlaviček: RESOURCE.H a AFXRES.H. Pouze RESOURCE.H aplikace je specifická pro aplikaci. V následujících případech může být nutné zahrnout další soubory hlaviček jen pro čtení:

Soubor záhlaví poskytuje externí zdroj nebo chcete sdílet soubor záhlaví mezi více projekty nebo více částmi stejného projektu.

Soubor záhlaví má formátování a komentáře, které nechcete, aby visual C++ při ukládání souboru změnil nebo odfiltroval. Možná například chcete zachovat #define, které používají symbolické aritmetické aritmetické funkce, například:

#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)

Pomocí příkazu Resource Includes můžete zahrnout další soubory hlaviček jen pro čtení a zadat #include příkaz jako druhou direktivu symbolu jen pro čtení, například v:

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

Nový diagram relací souborů teď vypadá takto:

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

Sdílení souboru záhlaví mezi dvěma .RC soubory

Můžete chtít sdílet soubor hlaviček mezi dvěma .RC soubory, které jsou v různých projektech, nebo případně stejným projektem. Uděláte to tak, že u obou .RC souborů použijete metodu direktiv jen pro čtení popsanou výše. V případě, že jsou tyto dva .RC soubory pro různé aplikace (různé projekty), je výsledek znázorněn v následujícím diagramu:

     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

Případ, kdy druhý hlavičkový soubor sdílí dva .RC soubory ve stejné aplikaci (projektu), je popsán níže.

Použití více souborů zdrojů ve stejném projektu

Visual C++ a kompilátor prostředků podporují více .RC souborů ve stejném projektu prostřednictvím #include direktiv, které obsahují jeden .RC soubor do jiného. Je povoleno více vnoření. Zdroje projektu můžete rozdělit do několika .RC souborů:

  • Pokud rozdělíte zdroje do .RC více souborů, je jednodušší spravovat velký počet zdrojů mezi více členy projektového týmu. Pokud používáte balíček pro správu správy zdrojového kódu pro rezervaci souborů a vrácení změn se změnami, rozdělení prostředků do více .RC souborů vám poskytne přehlednější kontrolu nad správou změn prostředků.

  • Pokud chcete použít direktivy preprocesoru, například #ifdef, #endifa #define, pro části prostředků, je nutné je izolovat v prostředcích jen pro čtení, které bude kompilován kompilátorem prostředků.

  • Soubory komponent .RC se načtou a uloží rychleji v jazyce Visual C++ než jeden složený .RC soubor.

  • Pokud chcete udržovat prostředek s textovým editorem ve formuláři čitelným pro člověka, měli byste ho ponechat v .RC souboru odděleně od těch, které upravuje Visual C++.

  • Pokud potřebujete zachovat uživatelsky definovaný prostředek v binární nebo textové podobě, který je interpretovatelný jiným specializovaným datovým editorem, měli byste ho ponechat v samostatném .RC souboru, aby Visual C++ nezměnil formát na šestnáctková data. Dobrým .WAV příkladem jsou prostředky (zvukového) souboru v ukázce ADVANCED Concepts MFC SPEAKN .

V dialogovém okně Set Include můžete zahrnout SECOND.RC direktivy kompilátoru:

#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

Výsledek je znázorněný v následujícím diagramu:

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

Pomocí direktiv zkompilovat čas můžete uspořádat prostředky visual C++- upravitelné a neupravitelné do více .RC souborů, kde hlavní MYAPP.RC nedělá nic, ale #include ostatní .RC soubory. Pokud používáte soubor projektu .MAK Visual Studio C++, měli byste do projektu zahrnout hlavní .RC soubor, aby se všechny zahrnuté prostředky zkompilovaly s vaší aplikací.

Vynucení neupravitelných souborů Visual C++

Vytvořený soubor AppWizard RES\MYAPP.RC2 je příkladem souboru, který obsahuje prostředky, které nechcete omylem číst do visual C++ a pak zapsat zpět se ztrátou informací o formátování. Chcete-li chránit před tímto problémem, umístěte na začátek RES\MYAPP.RC2 souboru následující řádky:

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

Když Visual C++ zkompiluje .RC soubor, definuje oba APSTUDIO_INVOKED a RC_INVOKED. Pokud je struktura souborů vytvořená pomocí AppWizardu poškozená a Visual C++ přečte řádek #error výše, oznámí závažnou chybu a přeruší čtení .RC souboru.

Správa symbolů sdílených více soubory .RC v jazyce Visual C++

Při rozdělení prostředků do několika .RC souborů, které chcete upravit samostatně v jazyce Visual C++, nastanou dva problémy:

  • Možná budete chtít sdílet stejné symboly napříč více .RC soubory.

  • Potřebujete pomoct visual C++ vyhnout se přiřazení stejných číselných hodnot ID k odlišným prostředkům (symbolům).

Následující diagram znázorňuje uspořádání .RC a .H soubory, které se zabývají prvním problémem:

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

V tomto příkladu se řetězcové prostředky uchovávají v jednom souboru MYSTRS.RCprostředků a nabídky se uchovávají v jiné, MYMENUS.RC. Některé symboly, například pro příkazy, se můžou mezi těmito dvěma soubory sdílet. Může to být například ID_TOOLS_SPELL ID příkazu nabídky pro položku pravopisu v nabídce Nástroje. Může se jednat také o ID řetězce příkazového řádku zobrazeného architekturou na stavovém řádku hlavního okna aplikace.

Symbol ID_TOOLS_SPELL se uchovává v souboru se sdílenou hlavičkou , MYSHARED.H. Tento sdílený soubor hlaviček udržujete ručně pomocí textového editoru; Visual C++ ho přímo neupravuje. Ve dvou souborech MYSTRS.RC prostředků zadáte MYMENUS.RC#include "MYSHARED.H" direktivy jen pro MYAPP.RCčtení pomocí příkazu Resource Includes, jak je popsáno výše.

Před pokusem o jeho použití k identifikaci jakéhokoli prostředku je nejvhodnější předvídat symbol, který budete sdílet. Přidejte symbol do souboru se sdíleným záhlavím a pokud jste ještě nezahrnuli sdílený soubor hlaviček do direktiv jen pro čtení souboru .RC , udělejte to před použitím symbolu. Pokud jste tímto způsobem neočekávali sdílení symbolu, budete muset ručně (pomocí textového editoru) přesunout příkaz #define symbolu z příkazu řekněme do něj, MYMENUS.H než MYSHARED.H ho MYSTRS.RCpoužijete .

Při správě symbolů ve více .RC souborech musíte visual C++ také pomoct vyhnout se přiřazování stejných číselných hodnot ID k odlišným prostředkům (symbolům). Pro každý daný .RC soubor visual C++ přírůstkově přiřadí ID v každé ze čtyř domén ID. Mezi úpravami relací visual C++ sleduje poslední ID, které přiřadil v každé doméně v souboru záhlaví symbolu .RC souboru. Tady jsou APS_NEXT hodnoty prázdného (nového) .RC souboru:

#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 je další hodnota symbolu, která se použije pro prostředek dialogového okna, prostředek nabídky atd. Platný rozsah hodnot symbolů prostředků je 1 až 0x6FFF.

_APS_NEXT_COMMAND_VALUE je další hodnota symbolu, která se použije pro identifikaci příkazu. Platný rozsah hodnot symbolů příkazů je 0x8000 0xDFFF.

_APS_NEXT_CONTROL_VALUE je další hodnota symbolu, která se použije pro ovládací prvek dialogového okna. Platný rozsah hodnot symbolů ovládacích prvků dialogového okna je 8 až 0xDFFF.

_APS_NEXT_SYMED_VALUE je další hodnota symbolu, která bude vydána při ručním přiřazení hodnoty symbolu pomocí příkazu Nový v prohlížeči symbolů.

Visual C++ začíná mírně vyššími hodnotami, které nejnižší právní hodnota při vytváření nového .RC souboru. AppWizard také inicializuje tyto hodnoty na něco vhodnějšího pro aplikace MFC. Další informace o rozsahech hodnot ID najdete v technické poznámce 20.

Při každém vytvoření nového souboru prostředků, a to i ve stejném projektu, Visual C++ definuje stejné _APS_NEXT_ hodnoty. To znamená, že pokud přidáte více dialogů ve dvou různých .RC souborech, je vysoce pravděpodobné, že stejná hodnota #define bude přiřazena různým dialogům. Například IDD_MY_DLG1 v prvním .RC souboru může být přiřazeno stejné číslo 101 jako IDD_MY_DLG2 v druhém .RC souboru.

Abyste se tomuto problému vyhnuli, měli byste si rezervovat samostatný číselný rozsah pro každou ze čtyř domén ID v příslušných .RC souborech. Než začnete přidávat prostředky, nastavte rozsahy ruční aktualizací _APS_NEXT hodnot v jednotlivých .RC souborech. Pokud například první .RC soubor používá výchozí _APS_NEXT hodnoty, můžete druhému .RC souboru přiřadit následující _APS_NEXT hodnoty:

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

Samozřejmě je stále možné, že Visual C++ přiřadí v prvním .RC souboru tolik ID, že číselné hodnoty začnou překrývat ty, které jsou vyhrazené pro druhý .RC soubor. Měli byste si vyhraďte dostatečně velké rozsahy, aby k tomuto kolizi nedošlo.

Správa závislostí mezi .RC, .CPPa .H soubory

Když Visual C++ uloží .RC soubor, uloží také změny symbolu do odpovídajícího RESOURCE.H souboru. Všechny soubory .CPP , které odkazují na zdroje v .RC souboru, musí použít #include k zahrnutí RESOURCE.H souboru, obvykle z hlavního souboru hlavičky projektu. Toto zahrnutí vede k nežádoucímu vedlejšímu efektu kvůli interní správě projektů vývojového prostředí, které kontroluje zdrojové soubory pro závislosti hlaviček. Pokaždé, když v jazyce Visual C++ přidáte nový symbol, bude potřeba překompilovat všechny .CPP soubory, které mají #include "RESOURCE.H" direktivy.

Visual C++, obchází závislost RESOURCE.H zahrnutím následujícího komentáře jako prvního řádku RESOURCE.H souboru:

//{{NO_DEPENDENCIES}}

Vývojové prostředí interpretuje tento komentář ignorováním změn RESOURCE.H tak, aby závislé .CPP soubory nemusely být rekompilovány.

Visual C++ při uložení souboru vždy přidá //{{NO_DEPENDENCIES}} řádek komentáře do .RC souboru. V některých případech může obcházení závislostí na RESOURCE.H sestavení vést k nedetekovaným chybám za běhu v době propojení. Pokud například pomocí prohlížeče symbolů změníte číselnou hodnotu přiřazenou symbolu pro prostředek, prostředek se správně nenajde a načte se za běhu aplikace, pokud .CPP se soubor odkazující na prostředek nepřekompiluje. Vtakovýchch kódech byste měli explicitně překompilovat všechny .CPP soubory, které znáte RESOURCE.H Pokud potřebujete často měnit hodnoty symbolů pro určitou skupinu prostředků, pravděpodobně zjistíte, že je pohodlnější a bezpečnější tyto symboly rozdělit do samostatného souboru hlaviček jen pro čtení, jak je popsáno v předchozí části Včetně dalších souborů záhlaví.

Jak Visual C++ spravuje sadu včetně informací

Jak je popsáno výše, příkaz Set Includes v nabídce Soubor umožňuje zadat tři typy informací:

  • Soubor záhlaví symbolu

  • Direktivy symbolů jen pro čtení

  • Direktivy pro kompilaci

Následující tabulka popisuje, jak Visual C++ udržuje tyto informace v .RC souboru. Tyto informace nepotřebujete, abyste mohli používat Visual C++, ale můžou vám lépe porozumět, abyste mohli s jistotou používat funkci Set Includes.

Každý z výše uvedených tří typů informací Set Include je uložen v souboru ve .RC dvou formách: (1) jako #include nebo jiné direktivy interpretovatelné kompilátorem prostředků a (2) jako speciální TEXTINCLUDE prostředky interpretovatelné pouze visual C++.

Účelem TEXTINCLUDE prostředku je bezpečně uložit informace o zahrnutí sady do formuláře, který lze snadno prezentovat v dialogovém okně Sada zahrnutí sady Visual C++. TEXTINCLUDEje typ prostředku definovaný jazykem Visual C++. Visual C++ rozpozná tři konkrétní TEXTINCLUDE prostředky s identifikačními čísly prostředků 1, 2 a 3:

TEXTINCLUDE ID prostředku Typ sady obsahuje informace
1 Soubor záhlaví symbolu
2 Direktivy symbolů jen pro čtení
3 Direktivy pro kompilaci

Každý ze tří typů informací Set Includes je ilustrován ve výchozím nastavení MYAPP.RC a RESOURCE.H soubory vytvořené pomocí AppWizard, jak je popsáno níže. Extra \0 a "" tokeny mezi BEGIN a END bloky jsou vyžadovány syntaxí RC k určení nula ukončených řetězců a znak dvojité uvozovky v uvedeném pořadí.

Soubor záhlaví symbolu

Forma informací o souboru záhlaví symbolů interpretovaných kompilátorem prostředků je jednoduše #include příkaz:

#include "resource.h"

TEXTINCLUDE Odpovídající prostředek je:

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

Direktivy symbolů jen pro čtení

Direktivy symbolů jen pro čtení jsou zahrnuty v horní části MYAPP.RC následující formy interpretovatelné kompilátorem prostředků:

#include "afxres.h"

TEXTINCLUDE Odpovídající prostředek je:

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

Direktivy pro kompilaci

Direktivy pro kompilaci jsou zahrnuty na konci MYAPP.RC následující formy interpretovatelné kompilátorem prostředků:

#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

Tato #ifndef APSTUDIO_INVOKED direktiva dává Visual C++ pokyn, aby přeskočí direktivy kompilátoru.

TEXTINCLUDE Odpovídající prostředek je:

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

Viz také

Technické poznámky podle čísel
Technické poznámky podle kategorií