DrawText formatieren
-
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 aufrufenIch hoffe mal, dass ich nichts vergessen habe
-
mylogfont.lfHeight = 1;
Das iss'n bisschen sehr dünn
-
SetTextColor(hdc,200);
Auch nicht gerade das Gelbe vom Ei!