Italia
Foro

Farbproblem mit BitBlt(memDC&...

 
Leider hab ich wie man unten im Bild sehen kann beim Nutzen folgenden Codes ein Problem beim Copieren mittels BitBlt. Das Problem bezieht sich jedoch nur auf eine einzige Farbe (eine Syscolor) welche von Grau zu Weiß kopiert wird.

Ich bekomme es einfach nicht weg, kann mir jemand helfen?

Hier der Beispiel-Code:
KompilierenMarkierenSeparieren
settruecolor 1
DEF CreateCompatibleDC(1) !"GDI32","CreateCompatibleDC"
DEF CreateCompatibleBitmap(3) !"GDI32","CreateCompatibleBitmap"
DEF SelectObject(2) !"GDI32","SelectObject"
DEF BitBlt(9) !"GDI32","BitBlt"
DEF DeleteDC(1) !"GDI32","DeleteDC"
def ReleaseDC(2) !"USER32","ReleaseDC"
DEF ASetParent(2) ! "USER32","SetParent","%%","%"
declare memDC&,hMemBitmap&

PROC CreateMemBmp

    Parameters mx%,my%
    LET memDC& = CreateCompatibleDC(%hdc)                DC erstellen
    LET hMemBitmap& = CreateCompatibleBitmap(%hdc,mx%,my%)    Bitmap erstellen
    SelectObject(memDC&,hMemBitmap&)                         Bitmap in DC selektieren
    RETURN memDC&

EndProc

PROC DeleteMemDC

    DeleteDC(memDC&)

EndProc

window 300,300 - 300,300
Declare Static&
Static& = Control("STATIC","",1409286414,10,10,200,200,%hwnd,2001,%hinstance)
CreateMemBmp 200,200
startpaint %desktop
BitBlt(memDC&,0,0,200,200,%hdc,0,0,$0C000CA)
endpaint
ASETPARENT(static&,%desktop)
SendMessage(Static&,$172,0,hMemBitmap&)
releasedc(%hdc,memDC&)
DeleteMemDC
showwindow(static&,0)
showwindow(static&,1)
WaitInput
Danke, iF
 
24.08.2004  
 




Dennis
Schulmeister
Hallo David,

probiere malö die Farbe geringfügig (von z.B. 255 auf 253) zu ändern. Irgendwo in der MSDN habe ich mal gelesen, dass unter gewissen Umständen ganz bestimme Farben in Systemfarben geändert werden. Schau eventuell nochmal die Flags von BitBlt an.

Saluto,
Dennis
 
(Fast) alle Profan²-Versionen seit Version 2.6, sowie (fast) alle Windows-Versionen seit Windows 3.1
04.09.2004  
 



ich glaube hier ists anders herum, auch wenn mein Bild leider falschherum ist. Das grau wird zu weiß.

PS: an den Flags liegt es auch nicht.

Bis denne, iF
 
04.09.2004  
 



Hallo IF...

Testbericht: Der Fehler tritt weder unter Windows95, noch unter Windows98 und auch nicht unter Windows2000 auf - also XP spezifisches Problem.
Versuch (nur so zum Divertimento) mal folgendes:
-Profaneditor in die recht untere Bildecke schieben
-anderes Programm maximieren
-auf Profaneditor den Focus seten (Fenster das kopiert wird soll deaktiviert sein)
-dein Testprogramm starten

Gibts dann immer noch eine Farbverschiebung oder ist dann alles normal? Hab leider kein XP...
 
05.09.2004  
 



Noch ne Idee, kanns leider nicht testen...
KompilierenMarkierenSeparieren
settruecolor 1
DEF CreateCompatibleDC(1) !"GDI32","CreateCompatibleDC"
DEF CreateCompatibleBitmap(3) !"GDI32","CreateCompatibleBitmap"
DEF SelectObject(2) !"GDI32","SelectObject"
DEF BitBlt(9) !"GDI32","BitBlt"
DEF DeleteDC(1) !"GDI32","DeleteDC"
def ReleaseDC(2) !"USER32","ReleaseDC"
DEF ASetParent(2) ! "USER32","SetParent","%%","%"
declare memDC&,hMemBitmap&

PROC CreateMemBmp

    Parameters mx%,my%
    LET memDC& = CreateCompatibleDC(%hdc) DC erstellen
    LET hMemBitmap& = CreateCompatibleBitmap(%hdc,mx%,my%) Bitmap erstellen
    SelectObject(memDC&,hMemBitmap&) Bitmap in DC selektieren
    RETURN memDC&

EndProc

PROC DeleteMemDC

    DeleteDC(memDC&)

EndProc

window 300,300 - 300,300
Sleep 1000
Declare Static&
Static& = Control("STATIC","",1409286414,10,10,200,200,%hwnd,2001,%hinstance)
CreateMemBmp 200,200
startpaint %desktop
BitBlt(memDC&,0,0,200,200,%hdc,0,0,$0C000CA)
endpaint
ASETPARENT(static&,%desktop)
SendMessage(Static&,$172,0,hMemBitmap&)
releasedc(%hdc,memDC&)
DeleteMemDC
showwindow(static&,0)
showwindow(static&,1)
WaitInput
 
05.09.2004  
 



Hmpf, egal wie, egal welches Beispiel, egal wo der Focus,- immer das Selbe.

Es wird schon so sein wie Sebastian es angedeutet hatte,- (%desktop & static & bitblit) <-- irgendwas passiert da was einen unerfindlichen Grund hat.

Aber danke & salve,- iF
 
05.09.2004  
 



Hallo IF...

Wie gesagt - unter Windows2000 und allen anderen Betriebssystemen die mir zur Verfügung stehen corre dein Quellcode - das Problem scheint also speziell bei XP zu liegen. Da sich beim Focuswechsel in der Titelzeile eines Fensters genau der selbe Farbwechsel abspielt, wars wohl den Versuch wert...
 
05.09.2004  
 




Dennis
Schulmeister
Also das von Andreas beschriebene Verhalten kenne ich irgendwie von wo ganz anders her. Nämlich von meinem guten alten 486er Laptop. Der kennt nämlich nur 256 Farben und Windows 3.1. Wenn ich dort einer anderen Anwendung den Fokus gebe, macht diese Anwendung ihre höchst eigene Farbpalette zur Systempalette. Das hat den Vorteil dass man in Grafikanwendungen noch halbwegs vernünftig arbeiten kann aber die anderen Anwendungen im Hintergrund schauen dadurch je nach Palette immer lustiger aus. Ich nehme an, dass die späteren Windowsversionen sich bei 256 Farben immer noch so verhalten.

Kann es sein, dass du mit einem 256-farb DC arbeitest, iF? Im Gegensatz zu 24bit-Farben enthält ein 256-farb DIB/DC oder was auch immer eine eigene Palette und bezieht sich im eigentlichen Datenbereich nur auf diese Palette. Ein 24-bit DIB/DC/... bezieht sich dabei auf keine Palette sondern besteht aus reinen R-G-B-Trippeln.

War nur so eine (unwahrscheinliche) Idee...

Saluto,
Dennis
 
(Fast) alle Profan²-Versionen seit Version 2.6, sowie (fast) alle Windows-Versionen seit Windows 3.1
05.09.2004  
 



Hallo Dennis...

Das war nicht ganz das, was ich meinte. Wie gesagt - auf allen meinen Rechnern corre das Programm ohne Probleme - hab bloß kein XP. Die gleiche Farbänderung sehe ich aber, wenn eine Anwendung vom nichtaktiven in den aktiven Zustand übergeht - nämlich in der Schrift des Fenstertitels. Da es sich wohl nicht um ein normales Windowsverhalten sondern eher um einen Fehler in XP handelt, potuto ich es mir als Windowslaie gut vorstellen, das dieses Fehlverhalten in Verbindung mit einem Focuswechsel stehen potuto...

Das von dir beschriebene Verhalten hat mit dem 256 Farben Grafiktreiber zu tun und tritt auch bei den anderen Windowsversionen bei zu geringer Farbtiefe in ähnlicher Art noch auf - aber das war, wie gesagt, nicht mein Thema.
 
06.09.2004  
 



Nene, ich fahr auf 32bit.

iF
 
06.09.2004  
 



Answer


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

5.777 Views

Untitledvor 0 min.
Walter11.04.2023
Michael W.03.07.2016
Michaeal18.10.2012

Themeninformationen

Dieses Thema hat 2 subscriber:

unbekannt (8x)
Dennis Schulmeister (2x)


Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie