Zeichensalat bei folgender Funktion
- 
					
					
					
					
 int OwnDrawText(HDC hDC, const char* szText, RECT* rect, unsigned int iFlags) { int i = 0; int iSpace = 80; int iVSpace = 20; int iChars = 0; int iWordLength = 0; int iCharsperLine = 0; rect->top = iVSpace; SIZE word; SIZE line; int iLastLine = 0; while(++i != lstrlen(szText)) { if(szText[i] == ' ') { iWordLength = i - iChars; char szWord[iWordLength]; int iTemp=0; for(; iChars <= i; ++iChars) { szWord[iTemp]=szText[iChars]; ++iTemp; } GetTextExtentPoint32(hDC, szWord, iWordLength, &word); char szLine[((i-iLastLine)-iWordLength)]; iTemp = 0; for(int a = iLastLine; a <= (i - iWordLength); ++a) { szLine[iTemp] = szText[a]; ++iTemp; } GetTextExtentPoint32(hDC,szLine,lstrlen(szLine), &line); if((line.cx + word.cx + iSpace) >= rect->right) { DrawText(hDC, szLine, lstrlen(szLine), rect, iFlags); rect->top += word.cy; iCharsperLine = 0; iLastLine=i; } iCharsperLine += iChars; } } char szLine[i]; int iTemp = 0; for(int a = iLastLine; a <= i; ++a) { szLine[iTemp] = szText[a]; ++iTemp; } DrawText(hDC, szLine, lstrlen(szLine), rect, iFlags); }Das eigentliche Ziel ist DrawText um automatische Linebreaks zu erweitern, leider wird bei einem Zeilenumbruch vom (neuen) letzten Wort der gebrochenen Zeile immer nur der 1. Buchstabe + ein wenig Buchstabensalat angezeigt, und da ich den Fehler auch nach dem 10. Umsachreiben nicht gefunden hab dacht ich mit ich Post mal hier... [ Dieser Beitrag wurde am 28.12.2002 um 18:20 Uhr von Psycho_Dad editiert. ] 
 
- 
					
					
					
					
 Schau dir doch mal DrawTextEx an, das macht glaube ich schon genau das, was du brauchst  
 
- 
					
					
					
					
 *msdn* hmm... aber ich wuerd trotzdem gern wissen was ich falsch gemacht hab... 
 
- 
					
					
					
					
 Ich glaube das liegt daran, dass ud bei szWord und szLine die abschließenden NUL-Zeichen vergessen hast! 
 
- 
					
					
					
					
 Oh ja, zummindest der Zeichensalat ist jetzt weg, leider wird vom letzten Wort vorm dem Linebreak immer noch nur der 1. Buchstabe angezeigt... 
 
- 
					
					
					
					
 Mit was für einen Compiler arbeitest du überhaupt? 
 Bie mir meckert er nämlich bei char szWord[iWordLength];!
 Da müsste ja normalerweise auch was mit malloc oder new stehen, oder lieg ich da flasch 
 
- 
					
					
					
					
 Dev-c++, und wenn ich hier: char szLine[((i-iLastLine)-iWordLength)]; iTemp = 0; for(int a = iLastLine; a <= (i - iWordLength); ++a)das -iWordLegth rausnehme funktioniert die funktion auch endlich 