edit на винапи?
Как это дозапись? Типа автозаполнения?
Ну типа добавляется ещё текст к тому, что уже был
Так просто прочитай (GetDlgItemTextA/GetWindowTextA), и допиши, затем вставь.
Я планирую чтобы в этом edit было прям возможно очень много текста
Так получи размер текста, который там вписан, и выдели память.
Так этот текст ещё надо получить, склеить с полученными данными и установить обратно, че то у меня подозрения есть что весьма затратная операция. В тырнетах предлагали через SETSELECTED и REPLACESELECTED, но я беспокоюсь за сохранность фокуса и уже возможно выделенного текста
Это за пару миллисекунд всё сделается. GetWindowTextLength+GetWindowTextA+VirtualAlloc+movaps+SetWindowTextA+VirtualFree
Даже при условии того, что у меня будет потенциально огромный кусок текста?
Насколько? 1 гигабайт текста склеит не больше, чем за 2-3 секунды, думаю.
А вот фиг знает сколько там с порта может налететь
А с чем ты склеивать собрался? Тоже переменными данными, или свои какие-то?
Переменные, с порта
Склеить данные с порта с другими данными с порта?
Склеить уже имеющиеся данные в эдите с новыми данными. Типа чтоб в реальном времени выводить все, что на порте появляется
Зачем? Это для чего? Почему нельзя просто изменять данные в EDIT, зачем склеивать?
Чтобы отслеживать что было отправлено ранее тоже
Сделай просто лог-файл. А в окно выводи только настоящее, и предыдущее значение.
Его нельзя будет отслеживать в реальном времени
Жесть ты весь api знаешь или гуглишь так быстро?
Да эти штуки быстро запоминаются, нужны часто
Сделай как Томаш - просто выдели огромный кусок памяти, и там склеивай сколько хочешь, и проверяй, подходит ли память к концу. Когда подходит - VirtualFree+VirtualAlloc, указатель измени, и снова пиши сколько хочешь.
А почему не malloc/free?
Фуу, это же Сишные, там куча обёрток. Медлятина.
Хм, в принципе, аргумент
VirtualAlloc почти сразу прыгает в NtVirtualAlloc, а там в ядро. Кстати, можешь сразу импортировать ntdll.NtVirtualAlloc, будет ещё круче.
Обсуждают сегодня