Не подскажете, существует ограничение на длину текста, возвращаемую GetWindowTextLength ?
В явном виде не нашел, но в программе по факту возвращает не больше 30000.
Окно класса WC_EDIT.
Здравствуйте, Vaynamond, Вы писали:
V>День добрый!
V>Не подскажете, существует ограничение на длину текста, возвращаемую GetWindowTextLength ? V>В явном виде не нашел, но в программе по факту возвращает не больше 30000. V>Окно класса WC_EDIT.
У WC_EDIT и так ограничение на макс. размер отображаемого текста в районе 32 тыщи c чем-то там. Он физически больше не умеет.
Здравствуйте, Carc, Вы писали:
C>Здравствуйте, Vaynamond, Вы писали:
V>>День добрый!
V>>Не подскажете, существует ограничение на длину текста, возвращаемую GetWindowTextLength ? V>>В явном виде не нашел, но в программе по факту возвращает не больше 30000. V>>Окно класса WC_EDIT. C>У WC_EDIT и так ограничение на макс. размер отображаемого текста в районе 32 тыщи c чем-то там. Он физически больше не умеет.
Здравствуйте, Vaynamond, Вы писали:
V>День добрый!
V>Не подскажете, существует ограничение на длину текста, возвращаемую GetWindowTextLength ? V>В явном виде не нашел, но в программе по факту возвращает не больше 30000. V>Окно класса WC_EDIT.
Там вообще многое упирается в максимальное значение для short int. Я хорошо помню свой первый вопрос на stackoverflow.
Здравствуйте, 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, но сейчас лень
Здравствуйте, 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 максимальное значение ?
ограничение специфично к 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 */
Как много веселых ребят, и все делают велосипед...
ES>Здравствуйте, ononim, Вы писали: ES>класс! я бегло листал, не нашел такого сразу.
Я тоже. Запустил поиск по "30000"
PS интересно где kero, по его тематике вопрос то...
Как много веселых ребят, и все делают велосипед...