![]() |
DrawShadowText in Delphi (commctrl.h/ComCtl32.dll)
Hi!
Ich bin irgendwann auf die Funktion ![]() Liege ich da ganz falsch mit meinen Versuchen, oder kann ich die Funktion mit dem BDS einfach nicht verwenden? :gruebel: Übrigens noch der Code für die DLL, den ich probiert habe:
Delphi-Quellcode:
LG, ich
function DrawShadowText(hdc: HDC; pszText: LPCWSTR; cch: UINT;
const pRect: PRect; dwFlags: DWORD; crText: COLORREF; crShadow: COLORREF; ixOffset: Integer; iyOffset: Integer): Integer; external 'ComCtl32.dll'; |
Re: DrawShadowText in Delphi (commctrl.h/ComCtl32.dll)
:!:
Code:
Win XP benutz nur ComCtl32.dll Version 5.xx.
[b]Function Information[/b]
[color=#df0000]Minimum DLL Version ComCtl32.dll version 6 or later[/color] Header - commctrl.h Import library - comctl32.lib Minimum operating systems - Windows XP Bei .Net ist glaube ich Version 6 dabei. :gruebel: |
Re: DrawShadowText in Delphi (commctrl.h/ComCtl32.dll)
Hallo,
fehlt bei der Deklaration vielleicht einfach stdcall? Gruß xaromz |
Re: DrawShadowText in Delphi (commctrl.h/ComCtl32.dll)
Danke mal für die Antworten! :thumb:
Das stdcall vor die external-Deklaration? Funktioniert nämlich auch nicht... Wie kann man herausfinden, welche Version das ist? Hab mir die dll mal mit Luckies DLLExports angeschaut, aber da ist die Funktion nicht dabei :( Was meinst du mit Zitat:
|
Re: DrawShadowText in Delphi (commctrl.h/ComCtl32.dll)
Moin Matti,
die Bemerkung zu der Funktion hast Du nicht geschrieben ;-) Zitat:
|
Re: DrawShadowText in Delphi (commctrl.h/ComCtl32.dll)
Übrigens, ich bin schon etwas weiter mit den Fehlermeldungen: wenn man es aus der IDE startet (Strg+Shift+F9) schließt sich das Proggie sofort wieder, wenn mans aber anders startet kommt die Fehlermeldung "Einsprungspunkt nicht gefunden...".
Auch die Manifest-Datei hilft nicht weiter:
Code:
abgespeichert als AppName.exe.manifest
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity version="1.0.0.0" processorArchitecture="X86" name="DrawShadowTextSample" type="win32" /> <description>Just a sample proggy for the DrawShadowText-function.</description> <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="X86" publicKeyToken="6595b64144ccf1df" language="*" /> </dependentAssembly> </dependency> </assembly> :roll: LG, ich - und danke für eure Hilfe!!! |
Re: DrawShadowText in Delphi (commctrl.h/ComCtl32.dll)
Delphi-Quellcode:
Und das Manifest muss den Dateinamen haben: <Project1>.exe.manifest, wobei Project1 deinem Exe-Namen vor der Erweiterung entspricht. In diesem Fall hieße die Exe: Project1.exe
function DrawShadowText(hdc: HDC; pszText: LPCWSTR; cch: UINT;
const pRect: PRect; dwFlags: DWORD; crText: COLORREF; crShadow: COLORREF; ixOffset: Integer; iyOffset: Integer): Integer; stdcall; external 'ComCtl32.dll'; implementation {$R *.dfm} procedure TForm1.FormPaint(Sender: TObject); var rect: TRect; begin rect.Top := 10; rect.Left := 10; rect.Bottom := 50; rect.Right := 150; DrawShadowText(Canvas.Handle, 'Hello world', 11, @rect, 0, COLORREF(RGB(255,255,255)), COLORREF(RGB(100,100,100)), 25, 25); end; |
Re: DrawShadowText in Delphi (commctrl.h/ComCtl32.dll)
Ja, soweit bin ich nun auch gekommen, das Manifest ist als Res eingebunden. Das Problem bei mir ist das der Text nicht gezeichnet wird. :gruebel:
//Edit #1:
Delphi-Quellcode:
Naja, der Text wird nicht in voller länge ausgegeben "Hallo, ic", also wenn überhaubt.
implementation
{$R *.dfm} function DrawShadowText(hdc: HDC; pszText: LPCWSTR; cch: UINT; const pRect: PRect; dwFlags: DWORD; crText: COLORREF; crShadow: COLORREF; ixOffset: Integer; iyOffset: Integer): Integer; stdcall; external 'ComCtl32.dll'; procedure TForm1.FormPaint(Sender: TObject); const szText = 'Hallo, ich bin ein Text mit Schatten.'; var r: TRect; begin r := Rect(10,10,50,100); DrawShadowText(Canvas.Handle, szText, length(szText), @r, 0, RGB(255, 0, 0), RGB(25, 25, 25), 2, 2); end; //Edit #2: Selberschult, in Rect muss ja der Text passen. Der Tag ist dann doch schon zu lang. :wall: Luckie, danke. |
Re: DrawShadowText in Delphi (commctrl.h/ComCtl32.dll)
Es ist ein WideString. Also length*2.
|
Re: DrawShadowText in Delphi (commctrl.h/ComCtl32.dll)
1. Siehe oben.
2. Warum muss, bzw. machst du
Delphi-Quellcode:
RGB gibt doch ein en Wert von COLORREF zurück.
COLORREF(RGB(100,100,100))
...und es funktioniert doch... :bounce2: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:38 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz