Bild laden
-
Hallo!
Wenn ich mit DoModal() einen neuen Dialog öffne und der Bilder enthalten soll, gleich nach dem öffnen des Dialogs....bei welcher Funktion muss ich das laden der Bilder machen? Ich dachte vielleicht bei DoDataExchange()!? Aber das funktioniert leider nicht und im Konstruktor auch nicht...
-
OnInitDialog (nach CDialog::OnInitDialog, damit die Controls schon erzeugt wurden => deswegen funktioniert es im Konstruktor nicht).
-
DoDataExchange wird direkt aus OnInitDialog aufgerufen.
Was meinst Du mit Bild laden? In den Hintergrund des Dialoges?
Dann solltest Du dasin OnEraseBkGnd machen.
-
Ich war von irgendeinem Bild-Control ausgegangen...
-
Danke ich habs..es war für ein normales Picture Control
-
Wenn ich den Dialog schließe kommt jetzt jedesmal der Fehler "Run-Time Check Failure #2 - Stack around the variable 'dlg' was corrupted." Aber sonst geht alles. An was kann das liegen? An InitDialog liegt es nicht!
Das steht in der DoDataExchange(CDataExchange* pDX)
DDX_Control(pDX, IDC_BITMAP1, m_Bitmap1);
DDX_Control(pDX, IDC_BITMAP2, m_Bitmap2);
DDX_Control(pDX, IDC_BITMAP3, m_Bitmap3);
-
Ok ich weiß wo der Fehler herkommt...Ich erstelle ein Picture Control und nenne die ID um von IDC_STATIC in IDC_BITMAP1, weil ich vorher keine memervariable davon erstellen konnte..Wie kann ich denn auf so ein STATIC Control zugreifen ohne eine Member Variable zu erstellen?
-
Russel schrieb:
Ok ich weiß wo der Fehler herkommt...Ich erstelle ein Picture Control und nenne die ID um von IDC_STATIC in IDC_BITMAP1, weil ich vorher keine memervariable davon erstellen konnte..Wie kann ich denn auf so ein STATIC Control zugreifen ohne eine Member Variable zu erstellen?
Mit GetDlgItem.
Das Umbenennen kann aber eigentlich kein Problem sein. Du musst ein Control sogar von IDC_STATIC umbenennen, weil dieser Name eine Besonderheit ist (er darf nämlich auch mehrfach vorkommen und ist eher nur für Statics gedacht, mit denen nichts gemacht wird, außer sie anzuzeigen).
-
Aber mit GetDlgItem komm ich nicht an die Funktion SetBitmap...welche Funktion muss ich da nehmen?
-
Russel schrieb:
Aber mit GetDlgItem komm ich nicht an die Funktion SetBitmap...welche Funktion muss ich da nehmen?
Da musst du die Rückgabe von GetDlgItem nach CStatic* casten ("((CStatic*)GetDlgItem)->MethodeX").
-
Dankeschön! Warum das immer so kompliziert sein muss
-
Nö, es geht auch ohne casten.
Vergebe deinem Picture Control eine eigene ID z.B.: IDC_STATIC_PIC1 und weise ihm eine CStatic Variable zu.
Und schon kannst du ohne zu casten das Bild anzeigen indem du die Variable verwendest.