Bilder im Dialogfeld anzeigen

mstangl

Grünschnabel
Hallo!
Ich habe bei meinem Projekt ein Problem, dass ich wohl ohne Hilfe nicht lösen kann:
Ich programmiere mit dem Visual Studio 6.0 ein MFC-Projekt und möchte in meinem Dialogfeld alle Bilder (befinden sich alle in einem Ordner, z.B. c:\pics\) einzeln anzeigen lassen. Also soll es einen Bereich im Dialog geben, wo zuerst ein Bild angezeigt wird, dann (z.B. nach einem Klick auf einen Button) soll anstatt des ersten Bildes nun das zweite Bild angezeigt werden, dann nach Klick das dritte Bild usw.

Leider bin ich sehr unerfahren im Programmieren und sozusagen auf Anfänger-Niveau, daher tu ich mir oft schwer Erklärungen von Experten zu verstehen. Ich hoffe jemand kann mir trotzdem weiterhelfen.

Wie ich eine Bitmap normalerweise im Dialog anzeigen lassen kann weiß ich (ich weise einem Picture-Steuerelement eine bestimmtes Bild zu, das ich zuvor als Ressource importiert habe). Leider weiß ich nicht, wie man diese Bilder während der Laufzeit nun durch ein anderes ersetzen kann.

Ich wäre für Hilfe sehr dankbar!
beste Grüße, Matthias
 
Hallo,

das Picture-Control basiert auf der Klasse "CStatic". Wenn du mit dem Kassenassistenten eine Membervariable dazu anlegst (vorher noch eine andere ID vergeben) kannst du bequem damit arbeiten. Um ein anderes Bild zuzuweisen kannst du dann die Methode "SetBitmap" benutzen.

Gruß
MCoder
 
Hi nochmal!

Erstmal vielen Dank für die Hilfe!! Das hab ich jetzt soweit hinbekommen.
Also bei Button-Klick wird nun folgendes ausgeführt:
Code:
 CBitmap bitmap;
 bitmap.LoadBitmap(IDB_BITMAP1);
 m_pic1.SetBitmap(HBITMAP(bitmap));

Gibt es da eine gute (und trotzdem relativ einfache) Möglichkeit wie ich das ganze für eine große Anzahl von Bildern (mehr als 100 Bitmaps) realisieren kann? Sodass ich beispielsweise beim ersten Klick das Bitmap IDB_BITMAP1, danach das IDB_BITMAP2, dann IDB_BITMAP3 usw. laden kann?
Ich möchte eben (logischerweise) nicht 100mal den LoadBitmap Befehl für jedes Bitmap einzeln hinschreiben, sondern eben in einer Schleife, in der dann eben nur das aktuelle Bitmap (z.B. Bitmap mit Index i) geladen wird.

beste Grüße, Matthias
 
Hallo, sorge dafür, dass die Bitmaps eine fortlaufende ID bekommen. Das kannst du ggf. in der "resource.h" nachbearbeiten. Dann brauchst du nur noch zu inkrementieren:
C++:
for( UINT i = IDB_BITMAP1; i <= IDB_BITMAP100; i++ )
{
    CBitmap bitmap;
    bitmap.LoadBitmap(i);
    m_pic1.SetBitmap(HBITMAP(bitmap));
}
Gruß
MCoder
 
Hallo!
Konnte leider erst heute wieder am Programm weiterarbeiten, daher die späte Antwort. Aber die Tips haben mir sehr viel weitergeholfen - ich habs genau so gemacht und es funktioniert genau nach meinen Vorstellungen ;-)

Vielen Dank für die super Hilfe
lg, Matthias
 

Neue Beiträge

Zurück