- öffnen des Objektgalerie-Fenster mit Datei -> Neu… -> Textdatei wählen
- Namen und Typ der Ressourcen sowie die dazugehörigen Dateinamen eingeben
- Ressourcen-Name (String den wir später für den Zugriff auf diese Ressource brauchen)
- Typ der Ressource (BITMAP, CURSOR, ICON, WAVE oder AVI)
- Name der Datei
- Beispielaufbau der resource.txt
RES_LAKE BITMAP "mybitmap.bmp"
RES_CURSOR CURSOR "mycursor.cur"
RES_SOUND WAVE "mysound.wav"
Speichern der erstellten Textdatei als z.B. resource.rc
einbinden der Datei in das Projekt über den Menüpunkt Projekt -> Dem Projekt hinzufügen…
es ist nun möglich auf Bitmaps, Cursor, Sounds etc. mit Hilfe der Funktionen LoadFromResourceName() , LoadCursor(), PlaySound() usw. zuzugreifen.
Zum folgenden Beispiel gehören ein Formular frmMain und eine ComboBox cmbLoadPics. In die Ressourcen wurden folgende Objekte eingebunden
RES_LAKE BITMAP "reslake.bmp"
RES_SYDNEY BITMAP "ressydney.bmp"
RES_CURSOR CURSOR "resbluecurs.cur"
RES_SOUND WAVE "respicture.wav"
Items-Eigenschaft der Combobox beinhaltet 3 Strings: Zeichenfläche löschen, Bitmap-Ressource RES_LAKE und Bitmap-Ressource RES_SIDNEY. Beim änderungen der ItemIndex-Eigenschaft der ComboBox wird entsprechendes Bitmap auf Canvas des Formulars gezeichnet und eine Wave-Datei abgespielt. Als Cursor wird ebenfalls ein Cursor aus den Ressourcen verwendet.
Quelltext der Anwendung
#include <vcl.h>
#pragma hdrstop
#include "MainForm.h"
#include "mmsystem.h" // für PlaySound()
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TfrmMain *frmMain;
//---------------------------------------------------------------------------
__fastcall TfrmMain::TfrmMain(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
// Wird beim Anzeigen des Formulars ausgeführt:
//---------------------------------------------------------------------------
void __fastcall TfrmMain::FormShow(TObject *Sender)
{
cmbLoadPics -> ItemIndex = 0;
// Cursor aus Ressourcen laden und zuweisen:
Screen->Cursors[crArrow] = LoadCursor(HInstance, "RES_CURSOR");
Cursor = crArrow;
}
//---------------------------------------------------------------------------
// Eventhandler für OnClick-Ereignis der ComboBox
//---------------------------------------------------------------------------
void __fastcall TfrmMain::cmbLoadPicsClick(TObject *Sender)
{
frmMain->Invalidate(); // Zeichenfläche löschen
Application->ProcessMessages();
if (cmbLoadPics -> ItemIndex > 0) // falls Bitmap zeichnen:
{
// TBitmap erzeugen:
Graphics::TBitmap * pResImg = new Graphics::TBitmap;
// Bitmap aus Ressourcen laden:
if(cmbLoadPics > ItemIndex == 1) // falls Bitmap RES_LAKE:
pResImg->LoadFromResourceName(int(HInstance), "RES_LAKE");
else if(cmbLoadPics > ItemIndex == 2) // falls Bitmap RES_SYDNEY:
pResImg->LoadFromResourceName(int(HInstance), "RES_SYDNEY");
// Bitmap auf Canvas der frmMain zeichnen:
Canvas->Draw(ClientWidth / 2 - pResImg->Width / 2, ClientHeight / 2 - pResImg->Height / 2 - 20, pResImg);
// Speicher aufräumen
if (pResImg != NULL)
{
delete pResImg;
pResImg = NULL;
}
}
// Sound aus Ressourcen abspielen:
PlaySound("RES_SOUND", HANDLE(HInstance), SND_RESOURCE);
}