Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Schrift wird nicht richtig dargestellt

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
06.07.2005, 10:47 Uhr
RedEagle



Hi

Wenn ich folgende codestelle häuftig durchlaufen lasse, andert sich die Schrift, und das 'A' wird fett gedruckt. Woran liegt das??


C++:
//bei WM_PAINT
hDC = BeginPaint(hwnd, &ps);
{
SetTextColor(hDC, 0xafafaf);
SetBkColor  (hDC, 0x000000);
SetTextCharacterExtra(hDC, 1);

hFont  = CreateFont(20, 20, 0, 0, 0, 0, 0, 0, ANSI_CHARSET, OUT_TT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, FF_DONTCARE | DEFAULT_PITCH, "Courier New");
SelectObject(hDC, hFont);
                
TextOut(hDC, 10, 10, 'A', 1);  
                  
DeleteObject(hFont);
}
EndPaint(hwnd, &ps);

--
MFG RedEagle
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
06.07.2005, 11:26 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


wahrscheinlich wird der hintergrund nicht gelöscht vorher und dadurch schreibst du zig mal das A auf den gleichen Fleck
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
06.07.2005, 12:11 Uhr
RedEagle



Daran klannst nicht liegen, da sich die Position immer ändert

Originalcode:

C++:
TextOut(hDC, X, Y, &zeichen.character, 1);

//...

  RECT rect;
   rect.left   = zeichen.posx;
   rect.top    = zeichen.posy;
   rect.right  = zeichen.posx + breite;
   rect.bottom = zeichen.posy + hohe;
  GetClientRect(hwnd,&rect);
  RedrawWindow(hwnd,&rect,NULL, RDW_INVALIDATE | RDW_UPDATENOW);



WM_PAINT wird jetzt z.B. 200 mal aufgrüfen, um einen Satz mikt 200 Zeichen zu schreiben...
--
MFG RedEagle
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
06.07.2005, 12:16 Uhr
Tommix




Zitat von FloSoft:
wahrscheinlich wird der hintergrund nicht gelöscht vorher und dadurch schreibst du zig mal das A auf den gleichen Fleck

So macht man Fettdruck auf dem Bildschirm ??? - nicht schlecht.

@RedEagle:
Da Du ständig neue Fonts in den DC selektierst, gehen Dir die Ressourcen aus und irgendwann muß der Standard-Font verwendet werden:

Zitat von MSDN:

This function returns the previously selected object of the specified type. An application should always replace a new object with the original, default object after it has finished drawing with the new object.


Laß mal die Ressourcenanzeige von Windows mitlaufen, falls Du sie installiert hast.

Gruß, Tommix


Bearbeitung:
Das Zitat ist auf SelectObject bezogen.

Dieser Post wurde am 06.07.2005 um 12:17 Uhr von Tommix editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
06.07.2005, 14:02 Uhr
RedEagle




mit SelectObject(hDC, GetStockObject(DEFAULT_GUI_FONT)); funktionierts.
--
MFG RedEagle

Dieser Post wurde am 06.07.2005 um 14:03 Uhr von RedEagle editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: