Laut MSDN soll diese Funktion sich wie DrawText verhalten, aber wie immer bei MS ist das nur die halbe Wahrheit. So funktioniert das nur wenn man bei CompilerOptionen den Unicodemodus einschaltet. Kann auch sein, das ich mit meinem mäßigen Englisch mal wieder nur die Hälfte verstehe.
Aber egal, das Beispiel funktioniert bei mir unter XP + PB 4.2
Code: Alles auswählen
;Compileroptionen : Unicode ein !!!!!!!
Prototype DrawShadowText(hDC,pszText,cch,p,flags,crText,crShadow,ixOffset,iyOffset)
libnr = OpenLibrary(#PB_Any, "ComCtl32.dll")
If libnr
Global DrawShadowText_.DrawShadowText = GetFunction(libnr, "DrawShadowText")
Else
MessageRequester("Fehler!","Kann ComCtl32.dll nicht öffnen !",#MB_ICONERROR)
End
EndIf
Procedure CreateFont(size)
fontid = GetStockObject_(#ANSI_VAR_FONT) ;Systemfont holen
GetObject_(fontid,SizeOf(LOGFONT),lg.LOGFONT) ;Eigenschaften holen
lg\lfHeight = size ;Größe setzen
ProcedureReturn CreateFontIndirect_(lg) ;Font create
EndProcedure
br = 300: hh = 50
imgnr = CreateImage(#PB_Any, br, hh)
hDC = StartDrawing(ImageOutput(imgnr))
farbe = #White
Box(0, 0, br, hh, farbe)
fonthh = 35
fontid = CreateFont(fonthh)
DrawingFont(fontid)
DrawingMode(#PB_2DDrawing_Transparent)
SetTextAlign_(hDC, #TA_LEFT) ;muß sein
r.rect
r\left=0
r\top=10
r\right=br
r\bottom=hh
txt$ = "dies ist ein Test"
lg = Len(txt$)
flags = #DT_CENTER
shadow_x = 4 ;kann auch negative Werte haben
shadow_y = 3
hoehe = DrawShadowText_(hDC, @txt$, lg, r, flags, #Blue, #Gray, shadow_x, shadow_y)
StopDrawing()
OpenWindow(0, 0, 0, 400, 300, "", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
CreateGadgetList(WindowID(0))
ButtonImageGadget(1, 50,50,br,hh,ImageID(imgnr))
Repeat
Until WaitWindowEvent()=#PB_Event_CloseWindow
End


