2012-03-31 14 views
1

Also hier ist mein Problem, es funktioniert gut, bis es eine bestimmte Menge an Daten erreicht. Ich kann nicht eine ganze HTML-Datei zum Beispiel zeigen, die ungefähr 1 MB in dem Fenster ist, das es abgeschnitten wird.Text an ein Bearbeitungssteuerelement anfügen?

Fenster:

case WM_CREATE: 

    hEdit = CreateWindowEx(WS_EX_CLIENTEDGE, "EDIT", "", 
     WS_CHILD | WS_VISIBLE | WS_VSCROLL | ES_READONLY | WS_HSCROLL | ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL, 
     0, 0, 100, 100, hWnd, (HMENU)IDC_MAIN_EDIT, GetModuleHandle(NULL), NULL); 
    if(hEdit == NULL) 
     MessageBox(hWnd, "Could not create edit box.", "Error", MB_OK | MB_ICONERROR); 

    hfDefault = (HFONT)GetStockObject(DEFAULT_GUI_FONT); 
    SendMessage(hEdit, WM_SETFONT, (WPARAM)hfDefault, MAKELPARAM(FALSE, 0)); 
    LogText(hEdit,logstring); 
    break; 

Funktion:

void LogText(HWND hEdit, const char * logstring) 
{ 
const char * logstring2="\r\n"; 
int iLength = GetWindowTextLength(hEdit); 
SendMessage(hEdit, EM_SETSEL, iLength, iLength); 
SendMessage(hEdit, EM_REPLACESEL, 0, (LPARAM) logstring); 
SendMessage(hEdit, WM_VSCROLL, SB_BOTTOM, (LPARAM)NULL); 
int iLength2 = GetWindowTextLength(hEdit); 
SendMessage(hEdit, EM_SETSEL, iLength2, iLength2); 
SendMessage(hEdit, EM_REPLACESEL, 0, (LPARAM) logstring2); 
SendMessage(hEdit, WM_VSCROLL, SB_BOTTOM, (LPARAM)NULL); 

} 

Verbrauch:

logstring="Test"; 
LogText(hEdit, logstring); 

Wie ich schon sagte, es funktioniert perfekt, außer es nach seiner ausspucken eine unbekannte Menge nicht mehr funktioniert von Daten, die ich bemerkt habe, ist eine sehr konsistente Nummer.

+0

Haben Sie versucht, die Obergrenze mit ['EM_LIMITTEXT'] anzupassen (http://msdn.microsoft.com/en-us/library/windows/desktop/bb761607.aspx)? –

+0

Vielen Dank. – doublesaces

Antwort

0

Sie können die Textgrenze eines Bearbeitungsfelds mit der Nachricht EM_SETLIMITTEXT ändern. Definieren Sie einfach die obere Grenze, bevor Sie versuchen, dem Bearbeitungsfeld Text zuzuweisen.

+0

Vielen Dank. Das habe ich benutzt. Ich habe diese Nachricht in WM_CREATE gesendet. – doublesaces

+0

SendMessage (hEdit, EM_SETLIMITTEXT, 100000000,0); – doublesaces