DrawText formatieren



  • Lässt mich kalt. Ich weiß eh, dass ich besser als <WebFurzi> bin. Das zeigen seine stets kompetenten Kommentare hier im Forum. 😃



  • CreateFont(
    12, // nHeight
    0, // nWidth
    0, // nEscapement
    0, // nOrientation
    FW_NORMAL, // nWeight
    FALSE, // bItalic
    FALSE, // bUnderline
    0, // cStrikeOut
    ANSI_CHARSET, // nCharSet
    OUT_DEFAULT_PRECIS, // nOutPrecision
    CLIP_DEFAULT_PRECIS, // nClipPrecision
    DEFAULT_QUALITY, // nQuality
    DEFAULT_PITCH | FF_SWISS, // nPitchAndFamily
    _T("Arial")); // lpszFacename

    ich wiederhole mivch zwar ungern aber es geht net!
    der compiler spuckt mir wieder nur undeclared identifer entgegen.
    und buildfont hat die api net (winapi für windows-ce)



  • Und du bist dir sicher, dass es um diese Zeile geht?



  • ja, leider.
    er sagt mir, dass er CreateFont net kennt.
    ich weiß net warum.
    in der hilfe steht die function drin.
    ich schreibe mit embedded visuall c++ 3.0 für win-ce
    kann das vieleicht daran liegen?



  • Windows NT/2000/XP: Included in Windows NT 3.1 and later.
    Windows 95/98/Me: Included in Windows 95 and later.
    Header: Declared in Wingdi.h; include Windows.h.
    Library: Use Gdi32.lib.

    Die Library hast Du auch verlinkt?



  • Unter Windows CE hab ich die Funktion in der MSDN-Library auch nicht gefunden, aber CreateFontIndirect gibt es da! Ist ja fast das gleiche, nur dass die einzelnen Parameter eben nicht direkt, sondern in einer LOGFONT-Stuktur übergeben werden 🙂



  • Nach zwei Seiten kommt er damit raus, dass er für CE programmiert. 🙄



  • 🙄



  • Original erstellt von <Noname01>:
    und buildfont hat die api net (winapi für windows-ce)

    Arrrgh! 😡 Das ist ja auch meine Funktion, du ..... ! Diese benutzt allerdings CreateFont(). Also jetzt mal für dich:

    // Definitions of font formats
    #define  FF_NORMAL     0
    #define  FF_BOLD       2
    #define  FF_ITALIC     4
    #define  FF_UNDERLINE  8
    #define  FF_STRIKEOUT  16
    
    HFONT BuildFont(LPTSTR lpszName, UINT uiPointSize, WORD wFontFormat)
    {
       LOGFONT lf;
       BYTE    bBold, bIt, bUl, bStrikeout;
       INT     iWeight;
       HFONT   hFont;
    
       bBold       = (BYTE)(wFontFormat & FF_BOLD);
       bIt         = (BYTE)(wFontFormat & FF_ITALIC);
       bUl         = (BYTE)(wFontFormat & FF_UNDERLINE);
       bStrikeout  = (BYTE)(wFontFormat & FF_STRIKEOUT);
       iWeight     = bBold ? FW_BOLD : FW_NORMAL;
    
       lf.lfWeight = -MulDiv(uiPointSize, GetDeviceCaps(GetDC(NULL), LOGPIXELSY), 72);
       lf.lfWidth  = 0;
       lf.lfEscapement = 0;
       lf.lfOrientation = 0;
       lf.lfWeight = iWeight;
       lf.lfItalic = bIt;
       lf.lfUnderline = bUl;
       lf.lfStrikeOut = bStrikeout;
       lf.lfCharSet = ANSI_CHARSET;
       lf.lfOutPrecision = OUT_DEFAULT_PRECIS;
       lf.lfClipPrecision = CLIP_DEFAULT_PRECIS;
       lf.lfQuality = DEFAULT_QUALITY;
       lf.lfPitchAndFamily = DEFAULT_PITCH;
       lstrcpy(lf.lfFaceName, lpszName);
    
       hFont = CreateFontIndirect(&lf);
    
       return hFont;
    }
    


  • hab es jetzt anders gemacht. hab den text mit paint als bitmap gespeichert und das zeich ich jetzt in mein fenster an



  • Alter, ich erwürg dich gleich! 😡 😡 😡 Was meinst du, wie lange ich an dieser besch... Funktion gebastelt habe. Sorry, aber du bist echt ein Blödmann. :o



  • :p hab mir da einen kleinen Scherz unter Nonames Nickname erlaubt. Das war nicht das original. 😉



  • Na, ich hoffe doch...



  • passt nicht aber ich bin durch diesen thread darauf gekommen..

    @WebFritzi: hast du zufällig mal was mit Pascal / Delphi zu schaffen gehabt?!

    zitat von seiner page: "Mit Hilfe der Unit Fonts soll man[...]"



  • Erarbeitet wohl mit dem Builder.



  • @Albert: Jo, Luckie hat recht. Eine Unit ist im BCB eine cpp-Datei mitsamt einer h-Datei für die Definitionen.



  • Original erstellt von WebFritzi:
    @Albert: Jo, Luckie hat recht. Eine Unit ist im BCB eine cpp-Datei mitsamt einer h-Datei für die Definitionen.

    aha! ich benutz den BCB net desshalb wust ich es nicht..

    *freu* wieder was dazu gelernt 🙂



  • wenn es euch interessiert.
    ich hab die farbe mit settextcolor(...) gemacht.
    der spaß mit setfontindirect geht jetzt.
    danke.



  • der compiler schimpft zwar net aber es passiert auch nix, bis auf das der text rot is. was stimmt noch nicht? ich finbd den fehler net

    switch (iMsg)

    {
    PAINTSTRUCT ps;
    HDC hdc;
    RECT rcClient;

    LOGFONT mylogfont;
    HFONT myfont;
    mylogfont.lfHeight = 1;
    lstrcpy(mylogfont.lfFaceName, _T("Arial"));
    myfont = CreateFontIndirect(&mylogfont);

    case WM_PAINT:
    hdc = BeginPaint(hwnd,&ps);
    GetClientRect(hwnd,&rcClient);

    SetTextColor(hdc,200);
    SelectObject(hdc,myfont);

    DrawText(hdc,L"Hallo",5,&rcClient,DT_CENTER);
    EndPaint(hwnd,&ps);
    break;



  • 1. Die LOGFONT-Struktur hat noch ein paar mehr Parameter (dazu hat ja WebFritzi die Funktion geschrieben, die das Besetzen erleichtert)
    2. Solltest du Das mit dem belegen der Struktur und CreateFontIndirect in WM_CREATE erledigen
    3. Solltest du beim Aufruf von SelectObject in WM_PAINT den Rückgabe-Wert speichern und am Ende (vor EndPaint) diesen wieder zurückselektieren (mit SelectObject)
    4. So solltest du auch mit SetTextColor verfahren (Rückgabewert speichern und diesen nachher wieder einsetzen)
    5. In WM_DESTROY dann DeleteObject für myfont aufrufen

    Ich hoffe mal, dass ich nichts vergessen habe 😉


Anmelden zum Antworten