Horizonhal Scrollbar im Dialog
-
die Probleme gehen weiter
Mein Dialogfenster hat ein Knopf ( vorübergehend ).
V und H scroll ist jetzt vorhanden.Ich kann so scollen dass ich den Knopf sehe und einmal dass ich ihn nicht sehe.
Wenn ich Bild in die Dialogbox lade, sehe ich das Bild nur 60 %.Wenn ich scolle, verschoppelt mir das Bild. Beim zurückscollen ist ein Teil vom Bild verschwunden.// Zeiger in Zeiger auf Dialogklasse des Hauptfensters // umwandeln CbacktoplanDlg *pWnd = (CbacktoplanDlg*)GetParent(); BITMAP bm; CDC dcMem; CRect rRect; // Geladenes Bild holen pWnd->m_bmpBitmap.GetBitmap(&bm); // Gerätekontext erzeugen, in den Bitmap geladen wird dcMem.CreateCompatibleDC(pdc); // Bitmap in den kompatiblen Gerätekontext selektieren dcMem.SelectObject(pWnd->m_bmpBitmap); // Verfügbaren Anzeigebereich ermitteln GetClientRect(rRect); rRect.NormalizeRect(); // Bitmap in Dialogfeld kopieren und in Größe anpassen pdc->StretchBlt(10, 10, (rRect.Width() - 20), (rRect.Height()-20), &dcMem, 0, 0, bm.bmWidth, bm.bmHeight, SRCCOPY);
Der Code ist nicht auf meinem Mist gewachsen.:-)
So wie oben sehe ich mein Bild komplett, wenn ich die Werte von Strech verändere sehe ich das Bild nur z.B.60 % den Rest möchte ich scollen.
-
Und wo zeichnest Du bitte?
-
erstmal thx.
Ich zeichne nicht,
sondern lade das Bild in das 2te Dialog Fenster.
-
@MartinRichter
Wie meinst du das mit zeichnen?
-
Was bitte ist StrechBlt? Das ist auch "Zeichnen"...
-
hi,
ok, das ist zeichnen.
Mit StrechBlt passe ich die Form an das Dialogfenster an.
Der Compiler zeigt mir ja keine Fehler an, aber ich weis nicht wo ich anfangen soll zu suchen.
-
Die Frage war aber auch WO du zeichnest als in welcher Funktion du das stück Quelltest stehen hast
-
Anders gesagt (Antwort vorne weg):
Es wird nicht funktionieren, wenn Du außerhalöb von WM_PAINT zeichnest!
-
irgendwie bin ich verwird. Ich muss das wird über wm_paint anzeigen lassen?
nach was soll ich googlen?
-
ja du sollst OnPaint() überladen und darin zeichnen, das ist auch die einzige Stelle außer OnEraseBkgnd() wo man überhaupt zeichnen darf.
Das Anstoßen des neu zeichnen kannst du von überall her mit Invalidate() oder InvalidateRect().