c ++ - Tilføjer tekst til en redigeringskontrol, der løber tør for plads?

Indlæg af Hanne Mølgaard Plasc

Problem



Så her er mit problem, det virker fint, indtil det når en vis mængde data. Jeg kan ikke vise en hel html-fil for eksempel, der er omkring 1 MB i vinduet, bliver det afskåret.


Vindue:


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;


Fungere:


void LogText(HWND hEdit, const char * logstring)
{
const char * logstring2="
";
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);

}


Anvendelse:


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


Som jeg sagde, virker det perfekt, medmindre det holder op med at arbejde efter at det har spyttet en ukendt mængde data, som jeg har bemærket, er et meget ensartet antal.

Bedste reference


Du kan ændre tekstgrænsen for en redigeringsboks med EM\_SETLIMITTEXT beskeden. Indstil kun den øvre grænse, inden du forsøger at tildele tekst til redigeringsboksen. [4]