"transparente" XbParts
Moderator: Moderatoren
- brandelh
- Foren-Moderator
- Beiträge: 15697
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Re: "transparente" XbParts
Hi,
man kann den Hintergrund eines Fensters und damit controls auf transparent setzen ...
Wahrscheinlich sind aber die "sichtbaren Teile" im Vordergrund. TOM hatte mal beschrieben, wie man bei Fenstern die Deckung senkt, das sollte auch bei XbParts gehen.
man kann den Hintergrund eines Fensters und damit controls auf transparent setzen ...
Wahrscheinlich sind aber die "sichtbaren Teile" im Vordergrund. TOM hatte mal beschrieben, wie man bei Fenstern die Deckung senkt, das sollte auch bei XbParts gehen.
Gruß
Hubert
Hubert
- AUGE_OHR
- Marvin
- Beiträge: 12909
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: "transparente" XbParts
habe ich versucht, aber MLE oder SLE haben immer "weiss" als Hintergrund.brandelh hat geschrieben:man kann den Hintergrund eines Fensters und damit controls auf transparent setzen ...
Wahrscheinlich sind aber die "sichtbaren Teile" im Vordergrund.
Code: Alles auswählen
::XbpDialog:init( oParent, oOwner, aPos, aSize, aPP, lVisible )
::XbpDialog:taskList := .T.
::XbpDialog:title := "Neues Formular"
::XbpDialog:drawingArea:ColorBG := -255
::XbpDialog:drawingArea:clipChildren := .T.
::XbpDialog:drawingArea:clipParent := .T.
::XbpDialog:drawingArea:clipSiblings := .F.
leider geht es nur auf das Handle eines "Fenster" (XbpDialog) und nicht auf das Handle von XbParts.brandelh hat geschrieben:TOM hatte mal beschrieben, wie man bei Fenstern die Deckung senkt, das sollte auch bei XbParts gehen.
gruss by OHR
Jimmy
Jimmy
- brandelh
- Foren-Moderator
- Beiträge: 15697
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Re: "transparente" XbParts
Das stimmt so nicht, ich kann die Hintergrundfarbe z.B. auf ROT oder grün setzen, warum nicht auf transparent ?AUGE_OHR hat geschrieben:habe ich versucht, aber MLE oder SLE haben immer "weiss" als Hintergrund.brandelh hat geschrieben:man kann den Hintergrund eines Fensters und damit controls auf transparent setzen ...
Wahrscheinlich sind aber die "sichtbaren Teile" im Vordergrund.
XBP_PP_BGCLR Hintergrundfarbe :setColorBG()
Standart ist: XBPSYSCLR_ENTRYFIELD aber es gibt ja auch XBPSYSCLR_TRANSPARENT
bei aktivem Visual Style ...
Gruß
Hubert
Hubert
- AUGE_OHR
- Marvin
- Beiträge: 12909
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: "transparente" XbParts
hi,
XBPSYSCLR_TRANSPARENT ist ja keine "Farbe" sondern
Deshalb kam ich auf "Ownerdraw" um das GraBackground() "ab-zu-fangen" ...
XBPSYSCLR_TRANSPARENT ist ja keine "Farbe" sondern
leider "klappt" das nicht bei "allen" XbParts.Ist die Systemfarbe "transparent" (XBPSYSCLR_TRANSPARENT) als Hintergrundfarbe definiert, verwendet GraBackground() Grafikinformationen aus dem Ausgabebereich des Parent-Objekts des Xbase Parts zum Zeichnen des Hintergrunds.
Deshalb kam ich auf "Ownerdraw" um das GraBackground() "ab-zu-fangen" ...
gruss by OHR
Jimmy
Jimmy
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9367
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 102 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: "transparente" XbParts
Mmh. Ich arbeite mit transparenten MLEs. Die Haftnotizen im Hauptmenü meiner App sind transparente, scrollbalkenfreie MLEs, die auf farbigen Bitmaps liegen. Ich schaue mir morgen mal den Code an und zeige ein Beispiel.
Herzlich,
Tom
Tom
- AUGE_OHR
- Marvin
- Beiträge: 12909
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: "transparente" XbParts
hi
ich bin auf die Idee gekommen das Demo mit der farbigen Combobox zu benutzen.
http://www.xbaseforum.de/viewtopic.php? ... &sk=t&sd=a
wenn ich nun XBPSYSCLR_TRANSPARENT -255 benutze bekomme ich wieder "schwarz" ...
... so langsam "denke" ich das -255 "verkehrt" ist ... was wird denn unter VB oder C als Konstante benutzt ?
ich bin auf die Idee gekommen das Demo mit der farbigen Combobox zu benutzen.
http://www.xbaseforum.de/viewtopic.php? ... &sk=t&sd=a
wenn ich nun XBPSYSCLR_TRANSPARENT -255 benutze bekomme ich wieder "schwarz" ...
... so langsam "denke" ich das -255 "verkehrt" ist ... was wird denn unter VB oder C als Konstante benutzt ?
gruss by OHR
Jimmy
Jimmy
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9367
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 102 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: "transparente" XbParts
In einigen Fällen wird offenbar die Farbdarstellung des Parent-Objekts falsch ermittelt, was ja geschehen muss, damit Transparenz funktioniert. Das gilt für die neuen Tabpages (SL1) und, vor allem, für Active-X-Objekte. Hier müsste m.E. implizit mit AutomationTranslateColor() gearbeitet werden, aber das ist wohl nicht der Fall. Das könnte auch die Ursache dafür sein, dass z.B. Checkboxen auf schwarzem Hintergrund erscheinen, wenn man sie auf die neuen Tabpages legt und mit dem SkinFramework von Codejock arbeitet.
Herzlich,
Tom
Tom
- AUGE_OHR
- Marvin
- Beiträge: 12909
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: "transparente" XbParts
YUP ... klar ...Tom hat geschrieben:In einigen Fällen wird offenbar die Farbdarstellung des Parent-Objekts falsch ermittelt, was ja geschehen muss, damit Transparenz funktioniert...
ich "denke" nun das XBPSYSCLR_TRANSPARENT -255 "nur" für "reine" XbParts gilt.
... ich suche aber eine Konstante mit "INVALID..." in Hex Form ...
GRA_CLR_INVALID -6 ist nur Xbase++ ... es gibt da doch was in VB / C ... wo habe ich das gesehen
mit Günters Methode kann ich so ziemlich "jedem" Control die gewünschte "Farbe" beibringen und wenn ich die richtige Konstante für "transparency" hätte ...
gruss by OHR
Jimmy
Jimmy
-
- Rekursionen-Architekt
- Beiträge: 315
- Registriert: Mo, 16. Okt 2006 13:04
- Wohnort: Region Stuttgart
Re: "transparente" XbParts
Hallo Jimmy,
mit der Wahl der richtigen Konstante ist es wohl nicht getan; intern ist Code vonnöten, der auf das Flag XBPSYSCLR_TRANSPARENT reagiert.
Das Listbox-Beispiel http://www.xbaseforum.de/viewtopic.php? ... &sk=t&sd=a
läßt sich leider nicht direkt auf XbpSLE und XbpMLE übertragen, weil die CTLCOLOR-Nachricht bei deren Parent ankommt, z.B. der Drawingarea, und nicht beim Edit-Control selbst.
Mit der Farbmanipulation wie im Listbox-Beispiel muss man hier beim Parent des SLE oder MLE ansetzen.
Nehmen wir die Drawingarea an, würde ich das so versuchen.
Transparenz setzt natürlich voraus, dass im Dialog die Variable :clipChildren nicht gesetzt sein darf.
Und weil der sichtbare Text durch Einfügen, Löschen, Markieren, Scrollen geändert werden kann, ist wohl gelegentliches oder eher häufiges invalidateRect() angesagt.
Nachtrag: Code geändert.
Ein im Sle oder Mle gesetztes XBPSYSCLR_TRANSPARENT wird von Xbase++ heimlich still und leise durch -47 (XBPSYSCLR_ENTRYFIELD) ersetzt...
Gruß,
Günter
mit der Wahl der richtigen Konstante ist es wohl nicht getan; intern ist Code vonnöten, der auf das Flag XBPSYSCLR_TRANSPARENT reagiert.
Das Listbox-Beispiel http://www.xbaseforum.de/viewtopic.php? ... &sk=t&sd=a
läßt sich leider nicht direkt auf XbpSLE und XbpMLE übertragen, weil die CTLCOLOR-Nachricht bei deren Parent ankommt, z.B. der Drawingarea, und nicht beim Edit-Control selbst.
Mit der Farbmanipulation wie im Listbox-Beispiel muss man hier beim Parent des SLE oder MLE ansetzen.
Nehmen wir die Drawingarea an, würde ich das so versuchen.
Code: Alles auswählen
#define TRANSPARENT 1 // wirkt sich nur auf Textdarstellung aus!
#define NULL_BRUSH 5 // Hintergrund des Controls
#define WM_CTLCOLOREDIT 0x133
#define WM_CTLCOLORSTATIC 0x138
CLASS XbpDialogEx FROM XbpDialog
EXPORTED:
// überladene Methoden
METHOD init
METHOD create
METHOD configure
METHOD close
METHOD destroy
// Erweiterung
METHOD DAWndProc
ENDCLASS
// -------------------------------------------------
METHOD XbpDialogEx:init( oParent, oOwner, aPos, aSize, aPP, lVisible )
::XbpDialog:init( oParent, oOwner, aPos, aSize, aPP, lVisible )
RETURN self
// -------------------------------------------------
METHOD XbpDialogEx:create( oParent, oOwner, aPos, aSize, aPP, lVisible )
local rc
::XbpDialog:create( oParent, oOwner, aPos, aSize, aPP, lVisible )
rc := _Subclass( ::drawingArea:getHWND(), {|a,b,c,d|::DAWndProc(a,b,c,d)} )
RETURN self
// -------------------------------------------------
METHOD XbpDialogEx:configure( oParent, oOwner, aPos, aSize, aPP, lVisible )
local rc
rc := _Unsubclass( ::drawingArea:getHWND() )
::XbpDialog:configure( oParent, oOwner, aPos, aSize, aPP, lVisible )
rc := _Subclass( ::drawingArea:getHWND(), {|a,b,c,d|::DAWndProc(a,b,c,d)} )
RETURN self
// -------------------------------------------------
METHOD XbpDialogEx:close()
::destroy()
RETURN self
// ------------------------------------------------------
METHOD XbpDialogEx:destroy()
local rc
rc := _UnSubclass( ::drawingArea:getHWND() )
::XbpDialog:destroy()
RETURN self
// -------------------------------------------------
METHOD XbpDialogEx:DAWndProc( hwnd, msg, wparam, lparam )
local rc
local aChildlist
local oEdit
local i := 0
if msg == WM_CTLCOLOREDIT .or. msg == WM_CTLCOLORSTATIC
// readonly Sle/Mle werden wie Static behandelt
// lparam ist hwnd des Controls, wParam ist hDC
// Xbp-Objekt aus handle ermitteln
aChildlist := ::drawingArea:childlist()
i := ascan( aChildList, {|o|o:getHWND() == lparam .and. ;
( o:isDerivedFrom( XbpSle() ) .or. o:isDerivedFrom( XbpMle() ) ) } )
if i > 0
oEdit := aChildlist[ i ]
nColorBG := oEdit:setColorBG()
if nColorBG == -47 // XBPSYSCLR_TRANSPARENT wird durch -47 XBPSYSCLR_ENTRYFIELD ersetzt...
/* hier geht es um dreierlei Farben:
die Hintergrundfarbe des Textes (wird ignoriert da background mode TRANSPARENT)
die Vordergrundfarbe des Textes (wie :setColorFG())
die Grundfarbe des Controls (wird durch NULL_BRUSH ersetzt, d.h. Transparenz)
*/
rc := DllCall( "gdi32.dll", DLL_STDCALL, "SetBkMode", wparam, TRANSPARENT )
rc := DllCall( "gdi32.dll", DLL_STDCALL, "SetTextColor", wParam, AutomationTranslateColor( oEdit:setColorFG(), .F. ) )
return DllCall( "gdi32.dll", DLL_STDCALL, "GetStockObject", NULL_BRUSH )
endif
endif
endif
// Defaultbehandlung aller anderen Messages.
RETURN _CallPrevWindowProc( hwnd, msg, wparam, lparam )
Und weil der sichtbare Text durch Einfügen, Löschen, Markieren, Scrollen geändert werden kann, ist wohl gelegentliches oder eher häufiges invalidateRect() angesagt.
Nachtrag: Code geändert.
Ein im Sle oder Mle gesetztes XBPSYSCLR_TRANSPARENT wird von Xbase++ heimlich still und leise durch -47 (XBPSYSCLR_ENTRYFIELD) ersetzt...
Gruß,
Günter
Zuletzt geändert von Günter Beyes am Sa, 31. Jul 2010 23:49, insgesamt 4-mal geändert.
- AUGE_OHR
- Marvin
- Beiträge: 12909
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: "transparente" XbParts
WowGünter Beyes hat geschrieben:mit der Wahl der richtigen Konstante ist es wohl nicht getan; intern ist Code vonnöten, der auf das Flag XBPSYSCLR_TRANSPARENT reagiert.
das muss ich mir in Ruhe "rein-ziehen" wie du an das Problem ran gehst.
Danke für das Demo und die Mühe die du dir gemacht hast
gruss by OHR
Jimmy
Jimmy
- AUGE_OHR
- Marvin
- Beiträge: 12909
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: "transparente" XbParts
hi,
Das XbpMLE ist jetzt transparent !!! Hurra !!!
... aber... ich habe noch nicht mit :clipChildren experimentiert, aber so auf den ersten Blick kann ich den "Unterschied" nicht finden
Das XbpMLE ist jetzt transparent !!! Hurra !!!
... aber
Code: Alles auswählen
#include "Appevent.ch"
#include "DLL.ch"
#include "GRA.ch"
#define TRANSPARENT 1 // wirkt sich nur auf Textdarstellung aus!
#define NULL_BRUSH 5 // Hintergrund des Controls
#define WM_CTLCOLOREDIT 0x133
#define WM_CTLCOLORSTATIC 0x138
// für das benötigte subclass.obj
#pragma library("user32.lib")
PROCEDURE APPSYS
RETURN
PROCEDURE MAIN
LOCAL lExit := .F.
LOCAL nEvent, oXbp, mp1, mp2
LOCAL aSize := {600,600}
LOCAL aPos := CenterPos( aSize, AppDeskTop():currentsize() )
LOCAL oAppNero
LOCAL oDraw
LOCAL oFile
LOCAL oInfo
LOCAL oBitmap
LOCAL nBGClr
oBitmap := XbpBitmap():New():Create()
oBitmap:load(,4000)
nBGClr := oBitmap:getDefaultBgColor()
oBitmap:transparentClr := nBGClr
oAppNero := XbpDialogEx():New(AppDeskTop(),,aPos,aSize)
oAppNero:title := "Xbase++ NeroCOM"
oAppNero:titleBar := .F.
oAppNero:Icon := 1
oAppNero:drawingarea:bitmap := BMP2BMP(oBitmap,aSize)
oAppNero:close := {|| lExit := .T. }
oAppNero:Create()
oDraw := oAppNero:drawingArea
oFile := XbpSLE():new(oDraw, , { 10,272}, {296, 24} )
oFile:bufferLength := 80
oFile:tabStop := .T.
oFile:visible := .T.
oFile:create()
oInfo := XbpMLE():new(oDraw, , { 12, 32}, {576,220} )
oInfo:horizScroll := .F.
oInfo:vertScroll := .T.
oInfo:tabStop := .T.
oInfo:create()
oFile:setdata("hallo du da")
oInfo:setdata("hello world"+chr(13)+chr(10)+"this is a transparent MLE")
nEvent := xbe_None
DO WHILE !lExit
nEvent := AppEvent ( @mp1, @mp2, @oXbp )
DO CASE
CASE nEvent == xbe_None
EXIT
CASE nEvent == xbeP_Quit
EXIT
CASE nEvent == xbeP_Keyboard .and. mp1 == xbeK_ALT_F4
EXIT
OTHERWISE
oXbp:HandleEvent ( nEvent, mp1, mp2 )
ENDCASE
ENDDO
RETURN
STATIC FUNCTION CenterPos( aSize, aRefSize )
RETURN { INT( ( aRefSize[ 1 ] - aSize[ 1 ] ) / 2 ),;
INT( ( aRefSize[ 2 ] - aSize[ 2 ] ) / 2 ) }
FUNCTION BMP2BMP( oBMP, aXbpSize )
LOCAL oHuge
LOCAL oTiny
LOCAL oPS
LOCAL oRet
LOCAL nBits
LOCAL nPlanes
IF aXbpSize[ 2 ] > 0
oHuge := oBMP
nBits := oBMP:bits
nPlanes := oBMP:planes
//Create a small bitmap to fit in our XbpStatic
oTiny := XBPBITMAP() :New() :Create()
oTiny:Make( aXbpSize[ 1 ], aXbpSize[ 2 ], nPlanes, nBits )
oPS := XBPPRESSPACE() :new()
oTiny:presSpace( oPS )
//Copie and resize the huge bitmap to the small bitmap
oHuge:Draw( oPS, { 0, 0, aXbpSize[ 1 ], aXbpSize[ 2 ] },,, GRA_BLT_BBO_IGNORE )
oRet := oTiny
ELSE
oRet := oBMP
ENDIF
RETURN oRet
CLASS XbpDialogEx FROM XbpDialog
EXPORTED:
// überladene Methoden
METHOD init
METHOD create
METHOD configure
METHOD close
METHOD destroy
// Erweiterung
METHOD DAWndProc
ENDCLASS
// -------------------------------------------------
METHOD XbpDialogEx:init( oParent, oOwner, aPos, aSize, aPP, lVisible )
::XbpDialog:init( oParent, oOwner, aPos, aSize, aPP, lVisible )
RETURN self
// -------------------------------------------------
METHOD XbpDialogEx:create( oParent, oOwner, aPos, aSize, aPP, lVisible )
local rc
::XbpDialog:create( oParent, oOwner, aPos, aSize, aPP, lVisible )
rc := _Subclass( ::drawingArea:getHWND(), {|a,b,c,d|::DAWndProc(a,b,c,d)} )
RETURN self
// -------------------------------------------------
METHOD XbpDialogEx:configure( oParent, oOwner, aPos, aSize, aPP, lVisible )
local rc
rc := _Unsubclass( ::drawingArea:getHWND() )
::XbpDialog:configure( oParent, oOwner, aPos, aSize, aPP, lVisible )
rc := _Subclass( ::drawingArea:getHWND(), {|a,b,c,d|::DAWndProc(a,b,c,d)} )
RETURN self
// -------------------------------------------------
METHOD XbpDialogEx:close()
::destroy()
RETURN self
// ------------------------------------------------------
METHOD XbpDialogEx:destroy()
local rc
rc := _UnSubclass( ::drawingArea:getHWND() )
::XbpDialog:destroy()
RETURN self
// -------------------------------------------------
METHOD XbpDialogEx:DAWndProc( hwnd, msg, wparam, lparam )
LOCAL rc
LOCAL aChildlist
LOCAL oEdit
LOCAL i := 0
LOCAL nColorBG
if msg == WM_CTLCOLOREDIT .or. msg == WM_CTLCOLORSTATIC
// readonly Sle/Mle werden wie Static behandelt
// lparam ist hwnd des Controls, wParam ist hDC
// Xbp-Objekt aus handle ermitteln
aChildlist := ::drawingArea:childlist()
i := ascan( aChildList, {|o|o:getHWND() == lparam .and. ;
( o:isDerivedFrom( XbpSle() ) .or. o:isDerivedFrom( XbpMle() ) ) } )
if i > 0
oEdit := aChildlist[ i ]
nColorBG := oEdit:setColorBG()
// XBPSYSCLR_TRANSPARENT wird durch -47 XBPSYSCLR_ENTRYFIELD ersetzt...
if nColorBG == -47
/* hier geht es um dreierlei Farben:
die Hintergrundfarbe des Textes (wird ignoriert da background mode TRANSPARENT)
die Vordergrundfarbe des Textes (wie :setColorFG())
die Grundfarbe des Controls (wird durch NULL_BRUSH ersetzt, d.h. Transparenz)
*/
rc := DllCall( "gdi32.dll", DLL_STDCALL, "SetBkMode", wparam, TRANSPARENT )
rc := DllCall( "gdi32.dll", DLL_STDCALL, "SetTextColor", wParam,;
AutomationTranslateColor( oEdit:setColorFG(), .F. ) )
return DllCall( "gdi32.dll", DLL_STDCALL, "GetStockObject", NULL_BRUSH )
endif
endif
endif
// Defaultbehandlung aller anderen Messages.
RETURN _CallPrevWindowProc( hwnd, msg, wparam, lparam )
gruss by OHR
Jimmy
Jimmy
-
- Rekursionen-Architekt
- Beiträge: 315
- Registriert: Mo, 16. Okt 2006 13:04
- Wohnort: Region Stuttgart
Re: "transparente" XbParts
...sorry, ich meine :drawingArea:clipChildren. Wenn ich das TRUE setze, sehe ich durch SLE und MLE hindurch z.B. den Desktop.
Gruß,
Günter
Gruß,
Günter
- AUGE_OHR
- Marvin
- Beiträge: 12909
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: "transparente" XbParts
nicht ganz ... da ist das SLE immer noch "schwarz" ...Günter Beyes hat geschrieben:...sorry, ich meine :drawingArea:clipChildren. Wenn ich das TRUE setze, sehe ich durch SLE und MLE hindurch z.B. den Desktop.
ich habe auch mit :visualstyle := .F. / .T. probiert (immer mit XP Manifest ?) und alle möglichen :clipXXX Kombinationen ...
naja auch wenn mein Demo mit dem MLE funktioniert ... in der Application läuft es (noch ) nicht
trotzdem Danke nochmals für deine Hilfe.
das MLE war (weil gross) viel "wichtiger" und als "Ausgabe" ein "muss"
gruss by OHR
Jimmy
Jimmy
-
- Rekursionen-Architekt
- Beiträge: 315
- Registriert: Mo, 16. Okt 2006 13:04
- Wohnort: Region Stuttgart
Re: "transparente" XbParts
Hallo Jimmy,
den Black-hole-Effekt beim SLE kann ich nur bestätigen. Er tritt auf, sobald eine Manifestdatei oder -ressource vorhanden ist, auch wenn man die Theme-Darstellung abschaltet. Na ja, Versuch macht kluch
Der zweite Ansatz zeigt keine echte Transparenz, sondern hier wird einfach ein Screenshot des Dialog-Hintergrunds im Fensterrahmen von MLE und SLE als Bitmap eingesetzt. Leider aber auch nicht anwendungstauglich, weil der MLE-Hintergrund bei jedem Tastendruck und jedem Scrollen flackert.
Gruß
Günter
den Black-hole-Effekt beim SLE kann ich nur bestätigen. Er tritt auf, sobald eine Manifestdatei oder -ressource vorhanden ist, auch wenn man die Theme-Darstellung abschaltet. Na ja, Versuch macht kluch
Der zweite Ansatz zeigt keine echte Transparenz, sondern hier wird einfach ein Screenshot des Dialog-Hintergrunds im Fensterrahmen von MLE und SLE als Bitmap eingesetzt. Leider aber auch nicht anwendungstauglich, weil der MLE-Hintergrund bei jedem Tastendruck und jedem Scrollen flackert.
Gruß
Günter
- AUGE_OHR
- Marvin
- Beiträge: 12909
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: "transparente" XbParts
... also doch wieder die Manifest Datei auch mit den chinesischen Schriftzeichen habe ich ja da meine Probleme ...Günter Beyes hat geschrieben:den Black-hole-Effekt beim SLE kann ich nur bestätigen. Er tritt auf, sobald eine Manifestdatei oder -ressource vorhanden ist, auch wenn man die Theme-Darstellung abschaltet. Na ja, Versuch macht kluch
ja das mit dem scrollen habe ich auch beim ersten Demo beobachtet und es mit oMLE:invalidateRect() versucht ... naja "schön" ist es nicht :-"Günter Beyes hat geschrieben:Der zweite Ansatz zeigt keine echte Transparenz, sondern hier wird einfach ein Screenshot des Dialog-Hintergrunds im Fensterrahmen von MLE und SLE als Bitmap eingesetzt. Leider aber auch nicht anwendungstauglich, weil der MLE-Hintergrund bei jedem Tastendruck und jedem Scrollen flackert.
meine Idee für die heutige Session ging nun auch in die Richtung BMP.
Ich habe da noch eine "transparentes" XbpBrowse Class von Diego in Arbeit ...
... aber gut das du mich gleich davor "warnst" ... gut mit gedacht
ok dann muss ich mir noch was anderes überlegen ... es soll :
a.) transparent
b.) scrollbar
sein ... hm ... Ownerdraw Listbox
gruss by OHR
Jimmy
Jimmy
- AUGE_OHR
- Marvin
- Beiträge: 12909
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: "transparente" XbParts
hm ... naja ...
Ich möchte aber nur bis zum Bitmap ... und der Rest sollte nicht "transparent" sein.
anderes Problem :dann "verschwindet" der DWM Effekt
das MLE und SLE sind zwar "transparent" ... aber "zu viel" ... es geht ja bis auf den Desktop "durch".Ich möchte aber nur bis zum Bitmap ... und der Rest sollte nicht "transparent" sein.
anderes Problem :
Code: Alles auswählen
//
// now construct a Region and call its API function
//
*
* does not work with DWM
*
* hRgn := CreateEllipticRgn(nLeftRect,nTopRect,nRightRect,nBottomRect)
* SetWindowRgn(hHwnd,hRgn,.t.)
gruss by OHR
Jimmy
Jimmy
- Martin Altmann
- Foren-Administrator
- Beiträge: 16517
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Re: "transparente" XbParts
Moin,
hat das nicht - wie Günter schon schrieb - was mit :drawingArea:clipChildren zu tun? Darf nicht true sein, wenn ich das richtig verstanden habe.
Viele Grüße,
Martin
hat das nicht - wie Günter schon schrieb - was mit :drawingArea:clipChildren zu tun? Darf nicht true sein, wenn ich das richtig verstanden habe.
Viele Grüße,
Martin
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
- AUGE_OHR
- Marvin
- Beiträge: 12909
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: "transparente" XbParts
hm ... muss ich probieren ...Martin Altmann hat geschrieben:hat das nicht - wie Günter schon schrieb - was mit :drawingArea:clipChildren zu tun? Darf nicht true sein, wenn ich das richtig verstanden habe.
nee ... ich habe ja keine "normale" :drawingArea mehr weil ja mit DWM Client.
gruss by OHR
Jimmy
Jimmy
- AUGE_OHR
- Marvin
- Beiträge: 12909
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: "transparente" XbParts
ich lese gerade http://msdn.microsoft.com/en-us/library ... 85%29.aspx und frage mich welches OS() hatte das Demo,
mit dem Touchscreen und Bildschirm-Keyboard, auf dem Usertreffen 2009 in Röstal hatte.
wenn ich mir die DWM API so ansehe dann sind die
mit dem Touchscreen und Bildschirm-Keyboard, auf dem Usertreffen 2009 in Röstal hatte.
wenn ich mir die DWM API so ansehe dann sind die
ja da "eingebaut" ?3-D window transition animations, Windows Flip and Windows Flip3D
gruss by OHR
Jimmy
Jimmy
- AUGE_OHR
- Marvin
- Beiträge: 12909
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: "transparente" XbParts
hi,
kann man mit XbpTreeView()verwenden ?
ich kann zwar jede andere Farbe setzen, aber nicht XBPSYSCLR_TRANSPARENT ?
ich habe es auch direkt über die Property versucht ... alle Farben nur nicht ... XBPSYSCLR_TRANSPARENTsonst jemand noch einen Tip ?
kann man mit XbpTreeView()
Code: Alles auswählen
oApp:dirTree:setcolorBG(XBPSYSCLR_TRANSPARENT)
ich kann zwar jede andere Farbe setzen, aber nicht XBPSYSCLR_TRANSPARENT ?
ich habe es auch direkt über die Property versucht ... alle Farben nur nicht ... XBPSYSCLR_TRANSPARENT
Code: Alles auswählen
::dirTree:setProperty('ForeColor',AutomationTranslateColor( GRA_CLR_WHITE,.f.))
::dirTree:setProperty('BackColor',AutomationTranslateColor( GraMakeRGBColor({031,153,255}),.f.))
gruss by OHR
Jimmy
Jimmy