000
30.08.2006, 18:57 Uhr
xXx
Devil
|
Hmm naja ... der Titel sag es eigentlich schon ... hier mal der verkürzte Codeausschnitt der das PRoblem veruhrsacht:
C++: |
for(unsigned i = 0, y = 0; i < show_lines; ++i, ++y) { // Zeiger auf den Text des momentanen Items(i) holen. char* p = items[i + pScroll->GetPos()].str;
// Solange der Pointer p existiert und *p =! '\0' ist durchlaufen... while ((p != NULL) && (*p != '\0')) { // Anzahl der Zeichen unseres Pointers p unsigned short length = (unsigned short)strlen(p); if(length < 1) break;
// Wie viele dieser Zeichen passen auf die Breite? unsigned short charcount = font->GetCharCount( p , (unsigned int)length , width - 4 - px ); // Zeichnen...(mit breite - 4px - spielernamebreite in px) font->Draw( GetX() + 2 + px , 2 + GetY() + y * font->GetHeight() , p , DF_LEFT , items[i + pScroll->GetPos()].color , width - 4 - px ); // ...
// Ist unser String kürzer bzw. genauso lang wie max. in unser Ctrl passt? if (length <= charcount) break; // Nächster String ....
// charcount Zeichen wurden also schon gezeichnet ... // wollen wir beim nächsten mal net mehr sondern // schieben unseren Pointer mal vor ;) for (unsigned n = 0; n < charcount; ++n) ++p; // Vorschieben ...
// Eine neue Zeile anlegen, damit die y Koordinaten des Strings stimmen... ++y; } }
|
Hmm das Problem ist wenn ich es so machen würde zeichnet er noch ein haufen zeichen kreuz und quer die da nix zu suchen haben Scheint irgendwei net an der richtigen stelle aufzuhören ... jemand ne Idee woran es liegt?
Bearbeitung von ao: |
Quelltext umformatiert.
|
Dieser Post wurde am 01.09.2006 um 08:48 Uhr von ao editiert. |