GetWindowTextLength максимальное значение ?
От: Vaynamond Россия  
Дата: 12.04.19 12:28
Оценка:
День добрый!

Не подскажете, существует ограничение на длину текста, возвращаемую GetWindowTextLength ?
В явном виде не нашел, но в программе по факту возвращает не больше 30000.
Окно класса WC_EDIT.
Re: GetWindowTextLength максимальное значение ?
От: Carc Россия https://vk.com/gosha_mazov
Дата: 12.04.19 13:56
Оценка:
Здравствуйте, Vaynamond, Вы писали:

V>День добрый!


V>Не подскажете, существует ограничение на длину текста, возвращаемую GetWindowTextLength ?

V>В явном виде не нашел, но в программе по факту возвращает не больше 30000.
V>Окно класса WC_EDIT.
У WC_EDIT и так ограничение на макс. размер отображаемого текста в районе 32 тыщи c чем-то там. Он физически больше не умеет.
Aml Pages Home
Re[2]: GetWindowTextLength максимальное значение ?
От: Vaynamond Россия  
Дата: 15.04.19 07:40
Оценка:
Здравствуйте, Carc, Вы писали:

C>Здравствуйте, Vaynamond, Вы писали:


V>>День добрый!


V>>Не подскажете, существует ограничение на длину текста, возвращаемую GetWindowTextLength ?

V>>В явном виде не нашел, но в программе по факту возвращает не больше 30000.
V>>Окно класса WC_EDIT.
C>У WC_EDIT и так ограничение на макс. размер отображаемого текста в районе 32 тыщи c чем-то там. Он физически больше не умеет.

Кажется нашел, как поменять:
Re: GetWindowTextLength максимальное значение ?
От: SaZ  
Дата: 16.04.19 10:28
Оценка:
Здравствуйте, Vaynamond, Вы писали:

V>День добрый!


V>Не подскажете, существует ограничение на длину текста, возвращаемую GetWindowTextLength ?

V>В явном виде не нашел, но в программе по факту возвращает не больше 30000.
V>Окно класса WC_EDIT.

Там вообще многое упирается в максимальное значение для short int. Я хорошо помню свой первый вопрос на stackoverflow.
Re: GetWindowTextLength максимальное значение ?
От: Evgeniy Skvortsov Россия  
Дата: 16.04.19 22:44
Оценка:
Здравствуйте, Vaynamond, Вы писали:

V>Не подскажете, существует ограничение на длину текста, возвращаемую GetWindowTextLength ?

V>В явном виде не нашел, но в программе по факту возвращает не больше 30000.
V>Окно класса WC_EDIT.

По таким вопросам нужно лезть в исходники винды.
Утекшие от 2к вполне подойдут.

После беглого осмотра исходников не обнаружилось явного ограничения, Размер ограничен (UINT)

    case WM_GETTEXTLENGTH:
        if (pwnd->strName.Length) {
            UINT cch;
            if (fAnsi) {
                RtlUnicodeToMultiByteSize(&cch,
                                          REBASE(pwnd, strName.Buffer),
                                          pwnd->strName.Length);
            } else {
                cch = pwnd->strName.Length / sizeof(WCHAR);
            }
            return cch;
        }
        return 0L;


Возможно нужно смотреть WM_SETTEXT, но сейчас лень
Отредактировано 16.04.2019 23:37 Evgeniy Skvortsov . Предыдущая версия .
Re[2]: GetWindowTextLength максимальное значение ?
От: Vaynamond Россия  
Дата: 17.04.19 10:40
Оценка:
Здравствуйте, SaZ, Вы писали:

SaZ>Здравствуйте, Vaynamond, Вы писали:


V>>День добрый!


V>>Не подскажете, существует ограничение на длину текста, возвращаемую GetWindowTextLength ?

V>>В явном виде не нашел, но в программе по факту возвращает не больше 30000.
V>>Окно класса WC_EDIT.

SaZ>Там вообще многое упирается в максимальное значение для short int. Я хорошо помню свой первый вопрос на stackoverflow.

Если бы ограничение было как максимальное для short/unsigned short, я бы понял (на Windows 95 и иже с ней оно и было таким).
А тут — ровно 30000. Уже и код перерыл — нет, не устанавливается.
В документации явно найти не смог (или искал не там).
Да, забыл сказать — используется режим UNICODE. Нашел в интернете еще одну жертву, столкнувшуюся с данным ограничением .
Re[2]: GetWindowTextLength максимальное значение ?
От: ononim  
Дата: 17.04.19 18:19
Оценка: 6 (1)
ограничение специфично к edit control:
ntuser\client\usercli.h:
/*
 * Allow an initial maximum of 30000 characters in all edit controls since
 * some apps will run into unsigned problems otherwise.  If apps know about
 * the 64K limit, they can set the limit themselves.
 */
#define MAXTEXT         30000

....

ntuser\client\edecrare.c:

/***************************************************************************\
* ECCreate AorW
*
* History:
\***************************************************************************/

BOOL ECCreate(
    PED ped,
    LONG windowStyle)
{
....
ped->cchTextMax = MAXTEXT; /* Max # chars we will initially allow */
Как много веселых ребят, и все делают велосипед...
Отредактировано 17.04.2019 18:21 ononim . Предыдущая версия .
Re[3]: GetWindowTextLength максимальное значение ?
От: Evgeniy Skvortsov Россия  
Дата: 17.04.19 19:50
Оценка:
Здравствуйте, ononim, Вы писали:

класс! я бегло листал, не нашел такого сразу.
Re[4]: GetWindowTextLength максимальное значение ?
От: ononim  
Дата: 17.04.19 20:08
Оценка:
ES>Здравствуйте, ononim, Вы писали:
ES>класс! я бегло листал, не нашел такого сразу.
Я тоже. Запустил поиск по "30000"
PS интересно где kero, по его тематике вопрос то...
Как много веселых ребят, и все делают велосипед...
Отредактировано 17.04.2019 20:13 ononim . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.