BitBlt

05/09/2011 - 21:57 von Heinz-Mario Frühbeis | Report spam
Hallo!

Alle Dc's sind gültig und BitBlt gibt 1 zurück aber man sieht keinen
Unterschied.

Private Sub CreateTmpMask(vDc As Long) ' vDc ist der DC der Sektion
RemoveTmpMask
With tmpBg
.MaskDc = CreateCompatibleDC(vDc)
.MaskBmp = CreateCompatibleBitmap(vDc, mWidth, mHeight)
.MaskSel = SelectObject(.hDc, .hBmp)
SetBkModeEx .MaskDc, OPAQUE
DrawBackgroundEx .MaskDc, mWidth _
, mHeight, vbCyan
End With
End Sub

With tmpBg
rVal = BitBlt(mHdcMask, 0, 0, mWidth, mHeight _
, .MaskDc, 0, 0, SRCCOPY) ' rVal = 1; aber kein Unterschied,
' so als wàre rein gar nichts geschehen
' Wenn ich z. Bsp. DrawBackgroundEx für mHdcMask ausführe, dann
' ist der Hintergrund geàndert
End With

Ich hànge da jetzt schon den ganzen Tag dran. Ich kann es mir einfach nicht
erklàren.
Ich habe alles auf den Kopf gestellt um z. Bsp. heraus zu bekommen, ob
überhaupt irgendwas möglich ist. Aber nichts. tmpBg.MaskDc ist gültig und
Breite und Höhe sind auch größer 0 (800*400). Es ist einfach nichts zu
sehen.
Auch, wenn ich tmpBg.MaskDc in einen ganz anderen Dc hinein blitte, und zwar
weit von der Sektion weg (quasi) ist einfach nichts festzustellen.
Und es funktioniert, da ich noch einen DC erstellt habe, auch von der
Sektion, und mit diesem kann ich ganz normal zeichnen; da ist ein Bild drin.

Welchen Grund könnte es denn geben, wenn BitBlt = 1 zurückgibt und trotzdem
nichts veràndert wird?

Ich könnte diesen DC wirklich gut gebrauchen als Maske und hoffe sehr das
das Problem zu lösen ist!

Mit Gruß
Heinz-Mario Frühbeis
 

Lesen sie die antworten

#1 Heinz-Mario Frühbeis
05/09/2011 - 22:22 | Warnen spam
Hallo!

Kaum reingestellt ...

Es war ein Copy&Paste versus IntelliSense Fehler!

Statt:
With tmpBg
.MaskDc = CreateCompatibleDC(vDc)
.MaskBmp = CreateCompatibleBitmap(vDc, mWidth, mHeight)
.MaskSel = SelectObject(.hDc, .hBmp)
SetBkModeEx .MaskDc, OPAQUE
DrawBackgroundEx .MaskDc, mWidth _
, mHeight, vbCyan
End With
So:
With tmpBg
.MaskDc = CreateCompatibleDC(vDc)
.MaskBmp = CreateCompatibleBitmap(vDc, mWidth, mHeight)

.MaskSel = SelectObject(.MaskDc, .MaskBmp) ' <-!

SetBkModeEx .MaskDc, OPAQUE
DrawBackgroundEx .MaskDc, mWidth _
, mHeight, vbCyan
End With

Oh man ... <duckundweg> :)

Mit Gruß
Heinz-Mario Frühbeis

Ähnliche fragen