Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Hilfe bei Übersetzung der function nach Delphi (https://www.delphipraxis.net/126706-hilfe-bei-uebersetzung-der-function-nach-delphi.html)

lbccaleb 31. Dez 2008 13:00


Hilfe bei Übersetzung der function nach Delphi
 
Hey,

könnt Ihr mir helfen bei der Übersetzung dieser Methode nach Delphi??


Code:
void CMainDlg::OnDrawItem ( UINT uID, LPDRAWITEMSTRUCT lpdis )
{
CDCHandle dc = lpdis->hDC;
CRect rcCtrl = lpdis->rcItem;
CString sText;
const UINT uFormat = DT_SINGLELINE|DT_CENTER|DT_VCENTER|DT_NOPREFIX;

    if ( IDC_CLOCK != uID || ODT_STATIC != lpdis->CtlType )
        {
        SetMsgHandled(false);
        return;
        }

    m_wndTimeLabel.GetWindowText ( sText );
[b]
    if ( IsCompositionEnabled() )
        {
        // Set up a memory DC where we'll draw the text.
        CDC dcMem;

        dcMem.CreateCompatibleDC ( dc );
 
        dcMem.SaveDC();

        // Create a 32-bit bmp for use in offscreen drawing when glass is on
        BITMAPINFO dib = {0};
        CBitmap bmp;

        dib.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
        dib.bmiHeader.biWidth = rcCtrl.Width();
        dib.bmiHeader.biHeight = -rcCtrl.Height(); // negative because DrawThemeTextEx() uses a top-down DIB
        dib.bmiHeader.biPlanes = 1;
        dib.bmiHeader.biBitCount = 32;
        dib.bmiHeader.biCompression = BI_RGB;[/b]

//habe ich auch übersetzt aber geht bei mir nicht!!
        bmp.CreateDIBSection ( dc, &dib, DIB_RGB_COLORS, NULL, NULL, 0 );

        // Set up the DC state.
        DTTOPTS dto = { sizeof(DTTOPTS) };

        dto.dwFlags = DTT_COMPOSITED|DTT_GLOWSIZE;
        dto.iGlowSize = 10;
       
//wie übersetz ich das hier??
        dcMem.SelectBitmap ( bmp );
        dcMem.SelectFont ( m_font );

        DrawThemeTextEx ( m_hTheme, dcMem, 0, 0, CT2CW(sText), -1, uFormat, rcCtrl, &dto );

        dc.BitBlt ( rcCtrl.left, rcCtrl.top, rcCtrl.Width(), rcCtrl.Height(), dcMem, 0, 0, SRCCOPY );

        dcMem.RestoreDC(-1);
        }
//der teil ist nicht so wichtig!!
    else
        {
        dc.SaveDC();

        dc.FillSolidRect ( rcCtrl, GetSysColor(COLOR_3DFACE) );

        dc.SetBkMode ( TRANSPARENT );
        dc.SetTextColor ( GetSysColor(COLOR_WINDOWTEXT) );
        dc.SelectFont ( m_font );

        dc.DrawText ( CT2CW(sText), -1, rcCtrl, uFormat );

        dc.RestoreDC(-1);
        }
}
Mir geht es dabei um das erzeugen der Vista "Glow-Schrift"

Danke schon mal..

Edit:
mit den bitmapheader und DTTOPTS habe ich keine probleme, die habe ich übersetzt bekommen!
ich glaub ich hab eher nen problem damit, was ich da überhaupt machen, denn ich kenn mich mit dem zeichnen selber nicht so wirklich aus... ;-( da brauch ich nachhilfe...

toms 31. Dez 2008 13:05

Re: Hilfe bei Übersetzung der function nach Delphi
 
Hallo

Übersetze doch mal, was für dich klar / einfach ist.

z.B
Code:
dib.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
Delphi-Quellcode:
dib.bmiHeader.biSize := SizeOf(BITMAPINFOHEADER);
etc.

SirThornberry 31. Dez 2008 13:15

Re: Hilfe bei Übersetzung der function nach Delphi
 
Zitat:

könnt Ihr mir helfen bei der Übersetzung dieser Methode nach Delphi??
Ja, helfen ja aber helfen ist ungleich alles machen :wink:
Mache du den Anfang und sag uns an welcher Stelle du nicht weiter kommst :-)

lbccaleb 31. Dez 2008 13:32

Re: Hilfe bei Übersetzung der function nach Delphi
 
Also mir geht es eher um ein paar Funktionen, wie ich den Bitmap Header und DTTOPTS übersetze weiß ich! Genauso wie ich das mit dem hdc übersetze, glaub hab mehr Probleme in der Anwendung, also was ich da eigenbtlich tue ;-( naja kenn mich ncoh nicht so aus mit dem Zeichnen per Winapi...

vlt könnt Ihr mir das erklären, was da genau gemacht wird, ich glaube das würde mir schon helfen..

mkinzler 31. Dez 2008 13:40

Re: Hilfe bei Übersetzung der function nach Delphi
 
Übersetzte den Code doch so weit es dir möglich ist und poste dein Ergebnis mit den kommentierten unklaren Stellen


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:11 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz