Editfenster in Dialog -> MULTILINE
-
Weil das Enter sonst im Dialog als OK erkannt wird
-
Vielen Dank das tuts

-
ööm da wär noch was:
ich versuche(!) folgendes Code:LinesNum = SendMessage(GetDlgItem(hDlg,60001),EM_GETLINECOUNT,0,0); for( i=0; i<LinesNum; i++) { iLength = SendMessage(GetDlgItem(hDlg,60001),EM_LINELENGTH,1,0); Buffer[0] = iLength; SendMessage(GetDlgItem(hDlg,60001),EM_GETLINE,i,(LPARAM)Buffer); wsprintf(BBuffer,_T("Anzahl Zeilen: %i\nLänge Zeile: %i\nBeschriftung Zeile : %s"),LinesNum,iLength,Buffer); MessageBox(hDlg,BBuffer,0,0); memset(Buffer,0,sizeof(TCHAR)*32); }doch leider bekommt iLength immer die Länge der Ersten Zeile zugewisen

-
*( die 1 beim SendMessage ist "in Wirklichkeit" ein i -> das war noch von nem Versuch der auch gescheitert ist)
-
Also funktionierts immer noch nicht?
Dann überprüf mal was du bei EM_GETLINE zurückbekommst(ist ja auch die länge)------------
Und zusätzlich würde ich es empfehlen nach einem komma eine leerstelle einzufügen da macht man sich ja die augen kapput dran. Iiiih...
-
bei EM_GETLINE bekomme ich den richtigen Wert zurückgeliefert aber ich kann ja schlecht mir die Länge über GETLINE holen um die LÄNGE zu erfahren und danach nochmal GETLINE aufrufen um die Zeile abzufragen. Das wäre ja kappes ! ?
-> Das mit den Kommas ist bestimmt der Grund für meine Brille

-
WM_GETTEXTLENGHTDamit müsste es klappen.
-
Aber wenn du da den richtigen wert zurückkriegst musst du ja auch den richtigen wert in dem Buffer reingeschrieben haben, sonst würde ja nur die alte zahl wieder rauskommen(ausnahme: zeile ist kürzer)
-
@noha_391
Das mit EM_LINELENGTH aus deinem Code kann so auch nicht funktionieren.
Bitte mal genau in der MSDN (oder Platform SDK) nachlesen.wParam
Specifies the character index of a character in the line whose length is to be retrieved...Den character index auf das jeweils erste Zeichen von Zeile X bekommst du mit EM_LINEINDEX.
Return Value
The return value is the character index of the line specified in the wParam parameter, ...Du kannst dir also die Zeilenlänge folgendermaßen holen:
HWND hwndedit = GetDlgItem(hDlg,60001); iLength = SendMessage(hwndedit, EM_LINELENGTH, (WPARAM)SendMessage(hwndedit, EM_LINEINDEX, (WPARAM)i, 0), 0);wobei i die Zeilennummer ist.
Noch ein kleiner Tipp:
Du kannst statt SendMessage(GetDlgItem(hDialog, uID), ...)
auch SendDlgItemMessage(hDialog, uID, ...)
benutzen.
-
Vielen Dank für die ausfürliche Fehlerbeschreibung und Problemlösung

mfg noha