A
Normalerweise wird doch das Bitmap-Objekt zerstört, wenn es den Scope (Gültigkeitsbereich) verlässt.
Ich kann mir aber nicht vorstellen, das du das Objekt nur in einer lokalen Funktion drin hast, weil sonst könntest du es nicht an anderer Stelle benutzen.
Solange das Objekt jedenfalls existiert, ist die Datei geöffnet.
Wenn du die Datei löschen willst, obwohl das Bitmap im Speicher gehalten wird, mußt du das Bitmap-Objekt unabhängig von der Datei im Speicher kopieren. Und danach das ursprüngliche Bitmap-Objekt zerstören lassen.
Ich schätze mal, die clone-Methode kann einem hier weiter helfen:
Bitmap* createBitmap()
{
Bitmap bmp(L"Datei.jpg");
Bitmap *clone= dynamic_cast<Bitmap*>(bmp.clone());
return clone;
} // bmp wird autom. am Scope-Ende zerstört
Falls das clone() auch das Datei-Handle mitkopieren sollte, wäre evtl. eine CachedBitmap eine Alternative:
http://msdn.microsoft.com/en-us/library/ms533835(VS.85).aspx