· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.WIN32 —› Добавление текста в Edit?

Посл.отвђт Сообщенiе


Дата: Мар 20, 2004 02:30:56

Может этот вопрос и глуп, вот только я никак не разберусь с ним.
Пока пользуюсь методом:
invoke GetDlgItemText,hWnd,1001,addr buf,BUFFER_TEXT
... Добавляю данные и
invoke SetDlgItemText,hWnd,1001,addr buf

BUFFER_TEXT - получается небольшой (не более 8192 байт)
А хочется больше, да и и если каждый раз сетить текст, "растущий не по нажатию а по сообщению", то и совсем можно закопаться.


Дата: Мар 20, 2004 02:48:39 · Поправил: bogrus

ShadowDiver
invoke GetDlgItemText,hWnd,1001,addr buf,BUFFER_TEXT

По идее обычно выглядит так :
invoke GetDlgItemText,hWnd,1001,addr buf,sizeof buf

BUFFER_TEXT - получается небольшой (не более 8192 байт)
А хочется больше

Пусть хоть BUFFER_TEXT будет и 32Кб . В buf у тебя всё-равно попадёт столько байт , сколько его размер (sizeof buf) или меньше (чему равно BUFFER_TEXT ?) , остальное урежеться .

А дальше я не понял , что тебе конкретно надо и что не получаеться .


Дата: Мар 20, 2004 04:02:45

sizeof - я как-то и забыл про это :)

Мне хотелось бы знать, есть ли возможность добавлять
текст в компоненту Edit, как это реализованно в Delphi
(edit.lines.add(string);).


Дата: Мар 20, 2004 21:32:23

Настоятельно советую покопать чужие исходники. Таких на WASM.RU куча.


Дата: Мар 21, 2004 00:28:07

Перекопал уже не одну кучу. %)
Но практически везде встречается метод (см. выше).


Дата: Мар 21, 2004 01:31:32

ShadowDiver

http://board.win32asmcommunity.net/showthread.php?s=eb2d9f94a3ea444e7f 504ed4934f3c41&threadid=17250

Слей PhysMemBrowser (в аттаче к моему посту) и см функцию PrintHexDump.


Дата: Мар 21, 2004 05:08:19 · Поправил: SolidCode

ShadowDiver
Мне хотелось бы знать, есть ли возможность добавлять
текст в компоненту Edit, как это реализованно в Delphi
(edit.lines.add(string);).


Я не совсем хорошо знаю Дельфу. Но скажу так.
Если надо большие куски текста вставлять (больше 64К), то можно использовать EM_STREAMIN, EM_STREAMOUT. Или EM_EXSETSEL.
А если нужно побуквенно или построчно вставлять, то используй WM_PASTE: вставка текста из клипборда в то место, где курсор. Или можно с помощью EM_REPLACESEL. Там даже в буфер не надо вставлять. Сразу указываешь строку. И встаёт в то место, где курсор. Если что-то выделено, то он заменит это, иначе просто вставит.
А если хочется, чтобы не заменить выделенный сейчас текст, да так, чтобы юзер не заметил, то:
KillFocus
Save Current Selection with CHARRANGE<>
Clear selection
Set caret to required position
Insert needed string
Restore saved selection from CHARRANGE<>
SetFocus


Дата: Мар 26, 2004 00:49:20

Всем огромное спасибо, думаю тему можно прикрыть. :)


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.050