hi,
Danke für eure Antworten.
@Hape : die Links gehen in Richtung "Form" ( XbpDialog ) was ein "Top-Window" ist und mit o:gethWnd() arbeitet.
ich möchte aber ein "Teil" in einem Fenster "malen" wobei ich eine hDC statt PressSpace habe.
@Mike : warum behauptest du immer wieder das ich nicht "sauber" mit der API umgehe ...
klar habe ich wie jeder Newbie Problem mit "neuen" Sachen egal ob Xbase oder Windows API aber man lernt ja dazu.
überhaupt geht es um die Idee z.b. das iTaskList Interface vom Progressbar. das hat zwar gedauert aber nun funktioniert es. so nun auch die Idee mit Listview und (echten) Customdraw weil bei LVS_ICON (echtes) Ownerdraw nicht funktioniert.
nun gehört visual Style dazu aber im LVS_ICON Modus "wirkt" er nicht wie im LVS_REPORT Style ... "Focus" ist nicht transparent. wie der visual Style aussehen soll kennt jeder vom Windows 7 Desktop. und so sieht mein Code aus
Code: Alles auswählen
nhDC := @user32:GetWindowDC(::hLv)
// Memory DC anfordern
hMemDC := @Gdi32:CreateCompatibleDC(nhDC)
// Platz für Text berechnen
@UxTheme:GetThemeTextExtent(::hTheme ,;
hMemDC ,;
iPartId ,;
iStateId ,;
Str2Unicode(cName),;
-1 ,;
nOr(DT_CENTER, DT_BOTTOM,DT_WORDBREAK,DT_WORD_ELLIPSIS),;
aRect2 ,;
rcText )
// Memory Bitmap erstellen
hMemBM := @Gdi32:CreateCompatibleBitmap (hMemDC, aSize[1], aSize[2] )
oldBmp := @Gdi32:SelectObject(hMemDC, hMemBM)
// alles im Memory
nRet := @UxTheme:IsThemeBackgroundPartiallyTransparent(::hTheme, iPartId, iStateId)
IF .NOT. EMPTY(nRet)
nRet := @UxTheme:DrawThemeParentBackground(::hLv,hMemDC, aRect2)
ENDIF
IF nRet = S_OK
nRet := @UxTheme:DrawThemeBackground( ::hTheme ,;
hMemDC ,;
iPartId ,;
iStateId ,;
aRect2 ,;
rcText )
ENDIF
...
// AlphaBlend in den "echten" Customdraw DC
//
nRet := @Msimg32:AlphaBlend(;
pDC, aRect2[1], aRect2[2], aSize[1], aSize[2],;
hMemDC, 0, 0, aSize[1], aSize[2], nblend )
![Win7 mit runden Ecken](./download/file.php?id=3023&sid=4733a365310b15f3df2aaaed37310bc1)
- Win7 mit runden Ecken
- Paperbin_Win7.jpg (3.79 KiB) 9666 mal betrachtet
![mein visual Style ohne runde Ecken](./download/file.php?id=3024&sid=4733a365310b15f3df2aaaed37310bc1)
- mein visual Style ohne runde Ecken
- Paperbin_Customdraw.jpg (3.04 KiB) 9666 mal betrachtet
ich nehme also den Visual Style als Bitmap. was mir noch fehlt sind "nur" noch die "runden" Ecken.
p.s. unter Windows 10 ist es wieder obsolet denn da sind es normale Ecken und fast keine transparenz ( nur Rahmen )