win32Projekt Bitmap als Ressource einbinden

Gast #3045918
Lesenswert?

Ich habe im VisualStudio2012 ein win32Projekt und möchte eine Bitmap als 
Ressource in das Programm mit einbinden. Leider funktioniert das nicht 
richtig.

Ich habe eine Datei rescr.rc:
1
#include "resource.h"
2

3
tBild BITMAP "tBild.bmp"

und eine Datei resource.h:
1
#define tBild 201

Geladen werden soll die Bitmap mit:
1
  image= (HBITMAP) LoadBitmap(0, MAKEINTRESOURCE(tBild));

Aber nach dem Aufruf ist image immer noch 0.

Woran liegt das?
Muss bei Ressourcen noch irgendwas am Linker eingestellt werden?
Persönliche Seite #3045938
Lesenswert?

Holger74 schrieb:
> Muss bei Ressourcen noch irgendwas am Linker eingestellt werden?

Natürlich. Die .rc-Datei muss vom Ressourcen-Compiler in eine .res-Datei 
übersetzt werden und diese dann dem Linker vorgeworfen werden, damit er 
sie zum Programm dazupackt.

Wenn Win32-API-Funktionen fehlschlagen, kann man übrigens mit 
GetLastError einen Fehlercode bestimmen, der einen Hinweis darauf 
geben kann, was genau nicht geklappt hat.

Liefert also Dein Aufruf von LoadBitmap NULL, dann könntest Du ja mal 
nachsehen, was GetLastError als Fehlercode liefert.
Gast #3046188
Lesenswert?

Mit dem ResourcenEditor läßt sich nicht mal die .rc- oder die .res-Datei 
öffnen.

Hab gerade mal externe ResEditoren, wie ResEdit oder ResBuilder benutzt, 
um die Datein zu erstellen, aber das Ergebnis ist immer wieder:

"Der angebene Ressourcenname wurde nicht in der ImageDatei gefunden"

Was die ImageDatei ist? Keine Ahnung!
Persönliche Seite #3046298
Lesenswert?

Holger74 schrieb:
> Mit dem ResourcenEditor läßt sich nicht mal die .rc- oder die .res-Datei
> öffnen.

Dann machst Du da was grundlegendes falsch -- oder MS hat den 
Resourceneditor kaputtgemacht (Du verwendest VS2012, ich nutze VS2010 
und habe davor praktisch jede Vorgängerversion der letzen 20 Jahre 
verwendet).

Holger74 schrieb:
> GetLastError() liefert:
> "Der angebene Ressourcenname wurde nicht in der ImageDatei gefunden"

GetLastError liefert eine Fehlernummer. Die hast Du übersetzt?


Oder könnte es sein, daß Du (wie so viele andere auch) auf die 
Microsoft-Verschleierung hereingefallen bist und weder in C noch in C++, 
sondern in einer .Net-Sprache programmierst? Nein, "C++/CLI" ist NICHT 
C++.
Gast #3046326
Lesenswert?

Nein das ist ganz sicher kein .net-Projekt!

Ja, ich habe die Fehlermeldung übersetzt.
Hab auch grad ein neues Projekt mit VS2008 erstellt. Aber es kommt immer 
wieder das gleiche.

Wenn ich die .exe mit "ResourceBuilder" öffne, dann wird die Bitmap 
angezeigt.

Die .rc sieht jetzt so aus:
[g]
// Generated by ResEdit 1.5.11
// Copyright (C) 2006-2012
// http://www.resedit.net

#include <windows.h>
#include <commctrl.h>
#include <richedit.h>
#include "resource.h"




//
// Bitmap resources
//
LANGUAGE 0, SUBLANG_NEUTRAL
IDB_BITMAP1        BITMAP         "bitmap2.bmp"
[/g]

die resource.h :
[g]
#ifndef IDC_STATIC
#define IDC_STATIC (-1)
#endif

#define IDB_BITMAP1                             100
[/g]

Und eigentlich muss die .rc doch nur unter RessourcenDatein in das 
Projekt eingefügt werden?

Wie machst Du das normalerweise?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren