Добавление текста в элемент управления редактирования заканчивается? - PullRequest
1 голос
/ 31 марта 2012

Итак, вот моя проблема, она работает нормально, пока не достигнет определенного количества данных.Я не могу показать весь HTML-файл, например, размером около 1 МБ в окне, которое он отключает.

Окно:

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;

Функция:

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);

}

Использование:

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

Как я уже сказал, он отлично работает, за исключением того, что перестает работать после того, как выдает неизвестное количество данных, которое, как я заметил, является очень последовательным числом.

1 Ответ

0 голосов
/ 31 марта 2012

Вы можете изменить текстовый лимит поля редактирования с помощью сообщения EM_SETLIMITTEXT . Просто определите верхний предел, прежде чем пытаться назначить текст в поле ввода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...