Ressource-Typen

Ressourcen sind binäre Daten die von einem getrenntem Compiler, dem Ressourcen-Compiler, aus Textdateien erzeugt und dann zur Anwendung dazugelinkt werden. Ressourcen werden getrennt vom Programm bearbeitet, d.h. das Programm selbst ist damit in bestimmten Grenzen unabhängig von Änderungen an den Ressourcen. Wird eine Ressource modifiziert, so müssen in der Regel nur der Ressourcen-Compiler und der Linker neu gestartet werden. Wenn Sie allerdings Ressourcen hinzufügen oder löschen, so ist in der Regel auch das Programm noch entsprechend anzupassen.

WINDOWS kennt folgende Arten von Ressourcen:

Icons , Cursor, Bitmaps, Strings, Menüs, Dialoge, Tastenkürzel-Tabellen,
Fonts, Versions-Informationen und anwenderdefinierte Ressourcen

Bis auf die Font-Ressource werden im Kurs alle Ressourcen behandelt. Dialoge werden im nächsten Kapitel gesondert behandelt.

Ressourcen sind normalerweise in zwei Dateien abgelegt: in einer RC-Datei und in einer RES-Datei. Die RC-Datei ist die textuelle Beschreibung der Ressourcen. Diese Datei ist die Eingabedatei des Ressource-Editors (mehr dazu ab der nächsten Lektion). Die RES-Datei ist die vom Ressource-Compiler übersetzte binäre Ressource-Datei; sie wird letztendlich zur Anwendung dazugelinkt.

Alle Ressourcen werden über IDs angesprochen. Diese IDs werden vom Ressourcen-Editor in einer getrennten Datei, der Datei resource.h, abgelegt. Nachfolgend ist ein Auszug aus einer RC-Datei wiedergegeben:

/////////////////////////////////////////////////////////////////////////////
//
// Symbol
//

// Symbol mit dem niedrigsten ID-Wert an erster Stelle platziert, ....
// ist auf allen Systemen einheitlich.
....
IDR_MAINFRAME ICON DISCARDABLE "res\\MouseMsg.ico"
IDR_MOUSEMTYPE ICON DISCARDABLE "res\\MouseMsgDoc.ico"

Die dazugehörige Datei resource.h hat folgenden Inhalt:

//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used by MOUSEMSG.RC
//
#define IDR_MAINFRAME                 128
#define IDR_MOUSEMTYPE                 129
#define IDD_ABOUTBOX                 100
....
Sie können auch Ressourcen auch aus einer bestehenden Datei (exe, dll, res, rc) extrahieren und dann in Ihren eigenen Anwendungen einsetzen. Wie dies vonstatten geht, das erfahren Sie in der nachfolgenden Übung. Beachten Sie dabei aber bitte unbedingt eventuelle Copyright-Vermerke!
Obwohl der Ressource-Editor noch nicht behandelt wurde, soll nun, sozusagen als kleiner Einstieg, einmal demonstriert werden, wie aus einer bestehenden Datei Ressourcen extrahiert werden können. Damit hier nichts schief gehen kann, kopieren Sie sich zunächst einmal die Datei MSDEV.EXE aus dem Verzeichnis C:\Programme\Microsoft Visual Studio\Common\MSDev98\Bin in ein temporäres Verzeichnis. Sollten Sie den Visual C++ Compiler in einem anderen Verzeichnis installiert haben, so passen Sie den Pfad entsprechend an.

Starten Sie danach das Visual Studio und gehen Sie ins Menü 'Datei-Öffnen'. Stellen Sie zunächst im Dialog Öffnen den Dateityp und Öffnen als wie im Bild dargestellt ein. Öffnen Sie dann anschließend die kopierte Datei.

Ressourcen eines Programmes öffnen

Danach werden die in der EXE-Datei vorhandenen Ressourcen in einer Baumansicht dargestellt:

Die Ressourcen von MSDEV.EXE

Sie können die einzelnen Ressourcen durch einen Doppelklick öffnen und sich anschauen. So enthält z.B. die Bitmap-Ressource mit der ID 20001 die Startup-Bitmap des Visual Studios. Um eine bestimmte Ressource zu extrahieren, klicken Sie diese in der Baumansicht mit der rechten Maustaste an und wählen im dann eingeblendeten Kontext-Menü den Menüpunkt Exportieren....

Mit zum Lieferumfang des Visual Studios gehören eine Reihe von vordefinierten Ressourcen die Sie in eigenen Programmen einsetzen können. Sie finden diese Ressourcen auf der MSDN Library CD im Verzeichnis \SAMPLES\VC98\MFC\GENERAL\CLIPART und dort in der Datei COMMON.RES. Den Inhalt dieser Datei können Sie sich auf die gleiche Art und Weise ansehen wie in der Übung angegeben.

Damit genug der Vorworte. Wenden wir uns nun der ersten Ressource, den Icons (Symbolen), zu.



Copyright © 2004

Senden Sie Emails mit Fragen oder Kommentaren zu dieser Website an: mailto:info@cpp-tutor.de
 Wolfgang Schröder, Lerchenweg 23, D-72805 Lichtenstein. Tel: +49 7129 6470