Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi DrawShadowText in Delphi (commctrl.h/ComCtl32.dll) (https://www.delphipraxis.net/66678-drawshadowtext-delphi-commctrl-h-comctl32-dll.html)

Delphi-Freak 2. Apr 2006 15:26


DrawShadowText in Delphi (commctrl.h/ComCtl32.dll)
 
Hi!
Ich bin irgendwann auf die Funktion DrawShadowText gestoßen, und wollte die auch einmal ausprobieren. Aber sie ist in der Delphi-Unit CommCtrl nicht drin. Jetzt habe ich mich in C++ versucht (ist ja beim BDS2006 dabei), ohne jegliche Kenntnis in C/C++ (außer was man von PHP oder so kennt...), habe es dort aber auch nicht geschafft... Nachdem aber auch die DLL angegeben war, habe ich versucht, die Funktion so hereinzukriegen, aber auch erfolglos. Das Programm hat sich nach dem Starten sofort wieder geschlossen und mit Debugger gabs eine AV.

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:
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';
LG, ich

turboPASCAL 2. Apr 2006 16:31

Re: DrawShadowText in Delphi (commctrl.h/ComCtl32.dll)
 
:!:
Code:
[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
Win XP benutz nur ComCtl32.dll Version 5.xx.

Bei .Net ist glaube ich Version 6 dabei. :gruebel:

xaromz 2. Apr 2006 16:53

Re: DrawShadowText in Delphi (commctrl.h/ComCtl32.dll)
 
Hallo,

fehlt bei der Deklaration vielleicht einfach stdcall?

Gruß
xaromz

Delphi-Freak 2. Apr 2006 17:21

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:

Zitat von turboPASCAL
Bei .Net ist glaube ich Version 6 dabei.

LG, ich

Christian Seehase 2. Apr 2006 17:49

Re: DrawShadowText in Delphi (commctrl.h/ComCtl32.dll)
 
Moin Matti,

die Bemerkung zu der Funktion hast Du nicht geschrieben ;-)

Zitat:

Zitat von PSDK - DrawShadowText - Remarks
To use DrawShadowText, specify Comctl32.dll version 6 in the manifest.


Delphi-Freak 2. Apr 2006 18:13

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:
<?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>
abgespeichert als AppName.exe.manifest
:roll:

LG, ich - und danke für eure Hilfe!!!

Luckie 3. Apr 2006 07:14

Re: DrawShadowText in Delphi (commctrl.h/ComCtl32.dll)
 
Delphi-Quellcode:
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;
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

turboPASCAL 3. Apr 2006 15:54

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:
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;
Naja, der Text wird nicht in voller länge ausgegeben "Hallo, ic", also wenn überhaubt.

//Edit #2: Selberschult, in Rect muss ja der Text passen. Der Tag ist dann doch schon zu lang. :wall:


Luckie, danke.

Luckie 3. Apr 2006 16:03

Re: DrawShadowText in Delphi (commctrl.h/ComCtl32.dll)
 
Es ist ein WideString. Also length*2.

turboPASCAL 3. Apr 2006 16:05

Re: DrawShadowText in Delphi (commctrl.h/ComCtl32.dll)
 
1. Siehe oben.

2. Warum muss, bzw. machst du

Delphi-Quellcode:
COLORREF(RGB(100,100,100))
RGB gibt doch ein en Wert von COLORREF zurück.


...und es funktioniert doch... :bounce2:


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:38 Uhr.
Seite 1 von 3  1 23      

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