Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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

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 );

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...

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?

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.