Zugriff auf HDC von PictureControl
-
Hallo,
ich möchte gerne den Hintergrund eines PictureControls zu Beginn meines Programmes mit einem Bild belegen.
Dazu lese ich das Bild mit der Hilfsklasse CxImageEx ein.
Nun möchte ich das Bild in der OnPaint()-Funktion des Dialoges, dessen Child-Element das PictureControl ist, ausgeben lassen.
Folgender Aufruf stellt das Bild als Hintergrund des Dialoges dar (funktioniert):
m_Hintergrund.Draw( dc.GetSafeHdc() );Nun habe ich folgendes Konstrukt probiert um mir das HDC vom Control zu holen um dies der Draw-Funktion zu übergeben, leider funktioniert das nicht:
HDC hDC = GetDlgItem(IDC_NAME_CONTROL)->GetDC()->m_hDC(); m_Hintergrund.Draw(hDC);Wie muss ich vorgehen?

-
wie immer: funktioniert nicht, ist keine Fehlerbeschreibung.
Bekommst du nen Absturz? Passiert einfach nix? etc...
Höchstwahrscheinlich zeichnest erst du rein und dann übermalt das PictureControl das wieder. Ich habe noch nie damit gearbeitet, aber der Name legt die Vermutung nahe, dass du dem PictureControl auf konventionellem Wege sagen kannst, welches Hintergrundbild es verwenden soll... Was du machst ist auf jedenfall ein unsauberer Hack
-
Hallo dEUs,
sorry für die etwas ungenaue Beschreibung des Fehlverhaltens.
Das Bild wird bei meiner Aktion nicht im Control angezeigt.
Beim ersten Codeschnipsel den ich angegeben habe, wird das geladende Bild als Hintergrund des Dialoges dargestellt, somit kann ich schon mal sicher gehen, dass die Bildinformationen korrekt über die Membervariable zur Verfügung stehen.
Wie wäre denn der richtige Weg auf dem Control ein Bild anzuzeigen?
Der konventionelle Weg dem PictureControl ein Bild zuzuweisen (über den Ressourceneditor) funktioniert leider nicht, da ich aus Platzgründen eine Grafik im *.png-Format verwende, die als Ressource im Projekt eingebunden wurde.
-
von welchem Typ ist denn PictureControl?
-
Das PictureControl scheint ne Ableitung von CStatic zu sein:
http://www.functionx.com/visualc/controls/statictext.htm
"The Picture control is the most classic static control of the MFC library."
Ich habe auch schon folgendes mit einem tatsächlichen *.bmp-File aus der Ressource probiert, das Bild wird aber ebenfalls nicht angezeigt:
CStatic* pImage = (CStatic*) GetDlgItem( IDC_NAME);
HBITMAP hbitmap = ::LoadBitmap(::AfxGetResourceHandle(), MAKEINTRESOURCE(IDB_NAME));
pImage->SetBitmap(hbitmap);Edit:
Wenn man den Style auf "SS_OWNERDRAW" ändert funktioniert es!