S. Bauermann Geschrieben 14. Dezember 2001 Teilen Geschrieben 14. Dezember 2001 Hallöchen, also ich möchte in ein PictureControl zur Laufzeit die Bitmaps ändern/laden. Ich habe ein PictureControl angelegt (IDC_BILD) dieser habe ich dann via Wizzard eine Membervariable (vom Typ CStatic/Control) zugewiesen -> m_picCtl. Ich habe dann im Konstruktor meines Dialogs ein Objekt vom Typ CBitmap erzeugt (bitmap) und mit bitmap.LoadBitmap(IDB_BITMAP1); das Bitmap geladen. Beim ButtonClick sollte nun mein Bitmap in das PictureControl geladen werden. Da geanu klemmts. Ich wollte nun in der OnClick() Methode mein setBitmap realisieren. Das ganze müsste dann etwa so aussehen: m_picCtl.SetBitmap(????); Ich dachte hier kann ich das Objekt von CBitmap (bitmap) setzten, nur das ist in dieser Funktion leider gar nicht mehr bekannt. Wer kann mir hier erklärenden Rat geben ? Vielen Dank und Gruß Sven Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 15. Dezember 2001 Teilen Geschrieben 15. Dezember 2001 Du könntest die CBitmap-Instanz (oder einen Zeiger darauf) als Member deiner Fenster- oder Dialogklasse hinzufügen. Einfacher ist aber, die Bitmap erst in der OnClick-Methode laden: Ohne CBitmap: m_picCtl.SetBitmap( ::LoadBitmap(NULL, MAKEINTRESOURCE(IDB_BITMAP1)) ); Oder mit CBitmap: CBitmap bitmap; bitmap.LoadBitmap( IDB_BITMAP1 ); m_picCtl.SetBitmap( bitmap ); Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
S. Bauermann Geschrieben 15. Dezember 2001 Autor Teilen Geschrieben 15. Dezember 2001 Vielen Dank aber es klemmt noch einwenig. Im Prinzip habe ich das jetzt kappiert. Ich habe die Variante mit CBitmap gecheckt. In der OnInitDialog(); von meinem Dialog CBitmap bitmap; bitmap.LoadBitmap(IDB_BITMAP1); und dann m_picCtl.SetBitmap(bitmap); geschrieben. Das funktioniert auch. Nun wollte ich ja das das Bitmap mit einer Button CLick Methode gesetzt wird. Also habe ich die Zeile: m_picCtl.SetBitmap(bitmap); in die void CHhhDlg::OnButton1() Methode geschrieben. Die Zeilen: CBitmap bitmap; bitmap.LoadBitmap(IDB_BITMAP1); BOOL CHhhDlg::OnInitDialog() { CDialog::OnInitDialog(); Methode verblieben. Nun entsteht leider das mir unerklärliche Problem das das Objekt bitmap in der OnButton1() Methode nicht mehr bekannt ist ??? Obwohl in OnInitDialog der gleichen Klasse deklariert ? --> Im Konstruktor war's das gleiche. Beim Versuch nicht nur SetBitmap sondern auch LoadBitmap komplett in der OnButton1() Methode abzuwickeln erscheint dann leider das Bitmap nicht mehr ! Wieso ? Gruß von Sven... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 15. Dezember 2001 Teilen Geschrieben 15. Dezember 2001 Wenn Du Dein CBitmap-Objekt in der OnInitDialog deklarierst, dann beschränkt sich der Scope (Gültigkeitsraum) des Objekts auf diese Methode. Das Objekt wird zerstört, sobald OnInitDialog beendet wird. Gleiches gilt für den Konstruktor. Wenn Dein CBitmap-Objekt solange existieren soll wie Deine Dialogklasse selbst, dann musst Du es als Member Deiner Klasse deklarieren: In HhhDlg.h: class CHhhDlg : public CDialog { ... protected: CBitmap m_bitmap; ... }; In HhhDlg.cpp: BOOL CHhhDlg::OnInitDialog() { ... m_bitmap.LoadBitmap( IDB_BITMAP1 ); ... } void CHhhDlg::OnButton1() { ... m_picCtl.SetBitmap( m_bitmap ); ... } <BLOCKQUOTE><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Zitat:</font><HR> Beim Versuch nicht nur SetBitmap sondern auch LoadBitmap komplett in der OnButton1() Methode abzuwickeln erscheint dann leider das Bitmap nicht mehr ! Kannst Du den betreffenden Code mal hier posten? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.