информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Все любят медСтрашный баг в WindowsСетевые кракеры и правда о деле Левина
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Очередное исследование 19 миллиардов... 
 Оптимизация ввода-вывода как инструмент... 
 Зловреды выбирают Lisp и Delphi 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
если вы видите этот текст, отключите в настройках форума использование JavaScript
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
Мда... 13.07.01 19:42  Число просмотров: 806
Автор: 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 в свои руки и сам веди игру.

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




Rambler's Top100
Рейтинг@Mail.ru


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