WMPAINT, kann den Text nicht positionieren.
-
Dann solltest Du evtl. erstmal ein paar Basics lernen, bevor Du aktiv solche Tools baust...
rt.top ist eine Koordinate und kein RECT, das DrawText erwartet!
case WM_PAINT: RECT rt, rb; hdc = BeginPaint(hWnd, &ps); GetClientRect(hWnd, &rt); GetWindowRect(g_hwndCB, &rb); rt.top += rb.bottom-rb.top; DrawText(hdc, mOdus, -1, &rt, DT_SINGLELINE|DT_LEFT|DT_TOP) ; EndPaint(hWnd, &ps); break;
-
das ist auf jeden fall einleuchtend

und es funktioniert sogar !!

vielen dank !!
-
ich habe noch eine frage

hoffe du hilfst mir nochmal
ich habe eine ausgabe auf meinem bildschirm die ich ebenfalls mit drawtext erzeuge.
DrawText(hdc, lAbelTextBuffer,_tcslen(lAbelTextBuffer), &rt, DT_WORDBREAK | DT_VCENTER | DT_CENTER ) ;lAbelTextBuffer ist ein TCHAR und so gefüllt:
401229702525
401229702525
401229702525
401229702525
HUI-9999-01-10L
wenn ich, wie oben beschrieben, den string ausgeben möchte zeigt er mir aber immer nur den letzten wert an. also "HUI-9999-01-10L".
kannst du mir sagen warum das so ist ? und wie ich das problem vllt lösen kann ?danke dir vielmals !!
-
Weil Du einfach den Text überschreibst.
Lies doch ienfach mal die Doku! Das wär doch mal was. Dann würdest Du auch wiossen, dass Du das Ausgabe Rectangle verändern musst.Ich beantworte auch Fragen von Neulingen, nur scheint mir bei Dir kein Lernwille/effekt vorhanden zu sein. Ich wünsche Dir noch einen guten Tag....
-
recht hast du. werde versuchen mich selbst weiter reinzuarbeiten. hoffe ich komme auf "berechtige" ungereimtheiten noch antwort
.. sonst bin ich erstmal lesen. 
danke
-
ja puuuhh.. jetzt les ich grad das man mit drawtext gar nicht scrollen kann. also es soll schon gehen aber nur mit hohem aufwand.
grml.. also muss ich es ganz anders ausgeben....=/
-
Sag mal...
Du musst dochnur für jede Ausgabe rt.top nach unten verschieben. Was willst Du mit rollen?
-
also mit der ausgabe hab ich es noch nicht hinbekommen.suche die ganze zeit.. aber noch nichts gescheites..
ich hab gelesen, dass mann wenn man über drawtext ausgibt nicht scrollen kann. ich weiss nicht ob das der wahrheit entspricht.
ich habe auf meinem kleinen CE desktop ja nur begrenzt platz. ich würde schätzen 10 zeilen ab mitte nach unten.wenn ich aber mehr zeilen habe verschwinden die ja dahin wo man sie nicht mehr sieht. wenn ich nicht scrollen kann, unerreichbar.
oder ist das trotzdem möglich ?
-
guten morgen

ich habe versucht deinem rat "fuer jede ausgabe rt.top nach unten zu verschieben" leider habe ich dazu nichts gefunden oder ähnliches.
kannst du mir bitte nochmal helfen ?? ich habe hier was versucht damit du siehst das ich mir auch gedanken dazu gemacht habe. ich hab auch schon viel dazu gelernt. aber anscheind nicht das richtige ^^- ich habe versucht eine schleife zu schreiben in der mein char ausgegeben wird. aber das hat auch nicht funktioniert,bekomme immer die meldung:
initialization of 'i' is skipped by 'case' label. also schleifen gingen nicht.wie kann ich rt.top nach unten verschieben? ich muss dann doch irgednwie sagen, dass ich über die anzahl der zeilen in dem TCHAR eine ausgabe haben möchte.
also ohne for bzw while schleife geht das doch nicht oder?
ich könnte wie in deinem beispiel
rt.top += rb.bottom-rb.top;auch rechnen. und die neue ausgabe einen unter dem zuvor ausgegebenen rt.top machen. soweit wär das ja logisch. aber das ganze müsste ich dann doch trotzdem in einer schleife ausgeben oder??
ich hoffe du kannst mir noch nen tip geben.
danke dir !!
EDIT:
mein code sieht jetzt so aus. hoffe ich bin halbwegs auf dem richtigen weg.
case WM_PAINT: RECT rt, rb; hdc = BeginPaint(hWnd, &ps); GetClientRect(hWnd, &rt); GetWindowRect(g_hwndCB, &rb); rt.top += rb.bottom-rb.top; DrawText(hdc, mOdus, -1, &rt, DT_SINGLELINE | DT_LEFT| DT_TOP ) ; *lAbelTextBuffer = TfillMsgPuffer(); while(cCount < linecOunt){ DrawText(hdc, lAbelTextBuffer,_tcslen(lAbelTextBuffer), &rt,DT_SINGLELINE | DT_VCENTER | DT_CENTER ) ; cCount ++; rt.top += rt.bottom - rt.top; } EndPaint(hWn
-
soweit hab ichs jetzt.
aber irgednwie scheint die anzahl der ausgegebenen zeilen noch nicht zu passen. er macht irgendiwe zu viele.
und er zeigt immer nur den letzten wert an. warum weiss ich immer noch nicht
.... TCHAR TfillMsgPuffer(void){ FILE* fp; TCHAR mystring [100]; fp=_tfopen(_T("My Documents/scan.txt"),_T("r")); if (fp != NULL){ while(_fgetts(mystring,100,fp)) { mystring[_tcslen(mystring)-1] = 0; _putts(mystring); linecOunt ++; } } fclose(fp); lAbelTextBuffer = mystring; return *lAbelTextBuffer; } .... case WM_PAINT: RECT rt, rb; hdc = BeginPaint(hWnd, &ps); GetClientRect(hWnd, &rt); GetWindowRect(g_hwndCB, &rb); rt.top += rb.bottom-rb.top; DrawText(hdc, mOdus, -1, &rt, DT_SINGLELINE | DT_LEFT| DT_TOP ) ; *lAbelTextBuffer = TfillMsgPuffer(); while(linecOunt > cCount){ DrawText(hdc, lAbelTextBuffer,_tcslen(lAbelTextBuffer), &rt,DT_SINGLELINE | DT_VCENTER | DT_CENTER ) ; rt.top = rt.top + rb.bottom - rb.top; cCount ++; } EndPaint(hWnd, &ps); break;hoffe irgednwer hilft mir noch

EDIT:
achja.. und vllt nen tip wie ich das scrollproblem lösen kann.
danke !!