информационная безопасность
без паники и всерьез
 подробно о проекте
Страшный баг в WindowsАтака на InternetПортрет посетителя
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Критическая уязвимость UEFI позволяет... 
 Японский хостинг попросил клиентов... 
 Компрометация eMudhra вынудила... 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Мда... 11.07.01 16:35  Число просмотров: 958
Автор: Yura Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> > > ну и в добавок еще просмотри Edit Control
> Messages.
> > Посмотрел. И как я понял с окном такого типа клеится
> блок
> > из локальной кучи,
> > (EM_SETHANDLE)
> > а по сему размер его 64К и большего количества
> символов я
> > вывести не могу.
> > По крайней мере после определенной порции текста вывод
> > прекращается.
> > Как мне побороть это, не прибегая к предопределенным
> > классам VC и Builder'а?.
> > Можно, конечно, организовать дозированный просмотр, но
> > полагаю, есть более гибкое решение. Спасибо еще раз.
>
> Решение на самом деле есть. Поменяй ОС на WinNT 4.0 или на
> Win2K у них ограничение 4Мб :))))
> на самом деле это не шутка. действительно, Edit имеет
> ограничение 64К, на НТ ОС такого ограничения нет - для
> проверки попробуй открыть файл, скажем размером 65К с
> помощью Notepad, как типичный Edit, в Win9X и WinNT.
Так-то оно так, но имхо это релиз ноутпада для данных осей, а не класса edit.
Так-как будучи запущенной на w2k в проге вывод также обрубается.
> или же другой варинт - используй RichEdit - на нем нет
> такого ограничения.
> а менять что то насильно не думаю что возможно и не
> советую. в крайнем случае тебе придется выводить текст
> кусками <= 64Kb, при скроллинге подымать другие куски,
> по ходу приближения к границе 64Кб. возни много будет, так
> что если ты не пишешь для НТ используй RichEdit и спи без
> головной боли.
В любом случае ты прав-надо юзать ричедит этим я сейчас и занимаюсь.
Спасибо тебе за участие :-/
<programming>
Класс "edit". 04.07.01 16:25  
Автор: Yura Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Как пользуясь только Win32 API организовать построчный вывод текста в окно класса "edit". Если юзать SetWindowText для данного класса, то каждый новый вывод затирает предыдущий.
Класс "edit". 09.07.01 01:13  
Автор: kabanchik Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> Как пользуясь только Win32 API организовать построчный
> вывод текста в окно класса "edit". Если юзать SetWindowText
> для данного класса, то каждый новый вывод затирает
> предыдущий.

SendMessage(
(HWND) hWnd, // handle to destination window
EM_REPLACESEL, // message to send
(WPARAM) wParam, // undo option - TRUE or FALSE
(LPARAM) lParam // text string (LPCTSTR)
);

по текущей позиции курсора будет вставлять текст. в качестве lPrama пошли текст.
ну и в добавок еще просмотри Edit Control Messages.
Упс! Пашет...thanx. Но спрошу еще... 10.07.01 14:19  
Автор: Yura Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> ну и в добавок еще просмотри Edit Control Messages.
Посмотрел. И как я понял с окном такого типа клеится блок из локальной кучи,
(EM_SETHANDLE)
а по сему размер его 64К и большего количества символов я вывести не могу.
По крайней мере после определенной порции текста вывод прекращается.
Как мне побороть это, не прибегая к предопределенным классам VC и Builder'а?.
Можно, конечно, организовать дозированный просмотр, но полагаю, есть более гибкое решение. Спасибо еще раз.
отвечу еще :) 11.07.01 02:28  
Автор: kabanchik Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> > ну и в добавок еще просмотри Edit Control Messages.
> Посмотрел. И как я понял с окном такого типа клеится блок
> из локальной кучи,
> (EM_SETHANDLE)
> а по сему размер его 64К и большего количества символов я
> вывести не могу.
> По крайней мере после определенной порции текста вывод
> прекращается.
> Как мне побороть это, не прибегая к предопределенным
> классам VC и Builder'а?.
> Можно, конечно, организовать дозированный просмотр, но
> полагаю, есть более гибкое решение. Спасибо еще раз.

Решение на самом деле есть. Поменяй ОС на WinNT 4.0 или на Win2K у них ограничение 4Мб :))))
на самом деле это не шутка. действительно, Edit имеет ограничение 64К, на НТ ОС такого ограничения нет - для проверки попробуй открыть файл, скажем размером 65К с помощью Notepad, как типичный Edit, в Win9X и WinNT.
или же другой варинт - используй RichEdit - на нем нет такого ограничения.
а менять что то насильно не думаю что возможно и не советую. в крайнем случае тебе придется выводить текст кусками <= 64Kb, при скроллинге подымать другие куски, по ходу приближения к границе 64Кб. возни много будет, так что если ты не пишешь для НТ используй RichEdit и спи без головной боли.
Мда... 11.07.01 16:35  
Автор: Yura Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> > > ну и в добавок еще просмотри Edit Control
> Messages.
> > Посмотрел. И как я понял с окном такого типа клеится
> блок
> > из локальной кучи,
> > (EM_SETHANDLE)
> > а по сему размер его 64К и большего количества
> символов я
> > вывести не могу.
> > По крайней мере после определенной порции текста вывод
> > прекращается.
> > Как мне побороть это, не прибегая к предопределенным
> > классам VC и Builder'а?.
> > Можно, конечно, организовать дозированный просмотр, но
> > полагаю, есть более гибкое решение. Спасибо еще раз.
>
> Решение на самом деле есть. Поменяй ОС на WinNT 4.0 или на
> Win2K у них ограничение 4Мб :))))
> на самом деле это не шутка. действительно, Edit имеет
> ограничение 64К, на НТ ОС такого ограничения нет - для
> проверки попробуй открыть файл, скажем размером 65К с
> помощью Notepad, как типичный Edit, в Win9X и WinNT.
Так-то оно так, но имхо это релиз ноутпада для данных осей, а не класса edit.
Так-как будучи запущенной на w2k в проге вывод также обрубается.
> или же другой варинт - используй RichEdit - на нем нет
> такого ограничения.
> а менять что то насильно не думаю что возможно и не
> советую. в крайнем случае тебе придется выводить текст
> кусками <= 64Kb, при скроллинге подымать другие куски,
> по ходу приближения к границе 64Кб. возни много будет, так
> что если ты не пишешь для НТ используй RichEdit и спи без
> головной боли.
В любом случае ты прав-надо юзать ричедит этим я сейчас и занимаюсь.
Спасибо тебе за участие :-/
Мда... 13.07.01 12:30  
Автор: Yura Статус: Незарегистрированный пользователь
<"чистая" ссылка>
На самом деле размен текста 4МБ(0хFFFFFFFF) в Win32 устанавливается строкой
SendMessage(hEdit,EM_LIMITTEXT,(WPARAM)0,0L);
Видимо это возможно потому, что в Win32 уже нет различия между локальной и глобальной кучей. По крайней мере я об этом читал в sdk.
странно что никто мне об этом не сказал. Ну это в прошлом. Но все-таки чтобы
добить эту тему до конца хочу спросить:
как мне сделать так, чтобы окно не прокручивалось, вслед за текстом, когда я использую EM_REPLACESEL для его вывода?
Мда... 13.07.01 19:42  
Автор: kabanchik Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> На самом деле размен текста 4МБ(0хFFFFFFFF) в Win32
> устанавливается строкой
>     SendMessage(hEdit,EM_LIMITTEXT,(WPARAM)0,0L);
> Видимо это возможно потому, что в Win32 уже нет различия
> между локальной и глобальной кучей. По крайней мере я об
> этом читал в sdk.
я малость ошибся не 4Мб, а 4 Гб :)) max размер процесса
ну а все остальное написано в EM_LIMITTEXT

> странно что никто мне об этом не сказал. Ну это в прошлом.
> Но все-таки чтобы
> добить эту тему до конца хочу спросить:
> как мне сделать так, чтобы окно не прокручивалось, вслед за
> текстом, когда я  использую EM_REPLACESEL для его вывода?

в стилях - ES_AUTOVSCROLL и ES_AUTOHSCROLL - переключи, просто сними из Window Style. пример :

DWORD dwStyle = GetWindowLong(hWndMyEdit, GWL_STYLE);
if (dwStyle & ES_AUTOVSCROLL)
	dwStyle &= ~ES_AUTOVSCROLL;
if (dwStyle & ES_AUTOHSCROLL)
	dwStyle &= ~ES_AUTOHSCROLL;
SetWindowLong(hWndMyEdit, GWL_STYLE, dwStyle);

в крайнем случае перехвати WM_XSCROLL в свои руки и сам веди игру.

---
1





Рейтинг@Mail.ru


  Copyright © 2001-2026 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach