Blog. Just Blog

Образ мышления: Assembler

То, что не удается запрограммировать на Ассемблере, приходится паять
Образ мышления: Assembler - RSS-канал Образ мышления: Assembler - Карта сайта

Как добавить замещающий текст в поле EDIT

15.03.2021 | Категория: Образ мышления: Assembler | Автор: ManHunter
Продолжаем ставить эксперименты с полем EDIT. Сегодня будем добавлять в поле ввода так называемый "cue banner", что с некоторой натяжкой можно перевести на русский язык как "замещающий текст". Очень полезная штуковина, помогающая пользователю при заполнении форм с неочевидным форматом вводимых данных, а также снимающая с разработчика различные костыльно-велосипедные задачи по кастомной обработке полей ввода. Смотрите сами. По умолчанию в пустом поле ввода располагается замещающий текст. Это может быть пример данных или информация о необходимости заполнения, да вообще что угодно. Когда пользователь переходит на это поле, текст заполнителя исчезает и позволяет вводить свой собственный текст. А если поле ввода теряет фокус, но текст при этом все еще отсутствует, тогда замещающий текст возвращается обратно на свое место. При этом замещающий текст фактически не является содержимым поля, его нельзя получить через WM_GETTEXT или GetWindowText, он никуда не попадет при отправке незаполненной формы.

Для добавления замещающего текста в однострочное поле EDIT используется сообщение EM_SETCUEBANNER. В параметре lParam передается указатель на юникодную строку, которая будет отображаться в качестве замещающего текста. При этом не имеет значения, какую кодировку имеет само приложение, строка должна быть только в юникоде. В параметре wParam передается режим отображения замещающего текста. В старых мануалах вы можете встретить информацию, что этот параметр зарезервирован и там обязательно должен быть ноль. В последней редакции официальной документации написано, если значение нулевое, то подсказка будет пропадать сразу же при установке фокуса на EDIT, а если указано значение 1, то подсказка пропадет только при начале ввода пользовательского текста. И похоже, что из-за этого дополнения на сайте MSDN заявлена поддержка операционной системы как минимум Windows Vista, хотя на деле EM_SETCUEBANNER прекрасно работает, начиная с Windows XP.

Читать статью целиком »
Просмотров: 257 | Комментариев: 0

Распаковка данных в формате aPLib на Ассемблере

10.03.2021 | Категория: Образ мышления: Assembler | Автор: ManHunter

Распаковка данных в формате aPLib на Ассемблере

Вот мы и добрались до одной из самых популярных библиотек для компрессии данных aPLib. Ее разработал Joergen Ibsen в 1998 году, но исходники по какой-то причине до сих пор не раскрыты, хотя сама библиотека бесплатная. За счет превосходных показателей сжатия и легкой интеграции, aPLib используется в некоторых упаковщиках исполняемых файлов. В 2019 году Emmanuel Marty сделал, казалось бы, невозможное. Ему удалось не только отреверсить алгоритм упаковки aPLib, но и улучшить на 5-7% степень сжатия, полностью сохранив при этом совместимость с оригинальным кодом для распаковки. Таким образом, алгоритм aPLib теперь можно считать открытым.

Читать статью целиком »
Просмотров: 288 | Комментариев: 2

Распаковка данных в формате NRV на Ассемблере

27.02.2021 | Категория: Образ мышления: Assembler | Автор: ManHunter

Распаковка данных в формате NRV на Ассемблере

Алгоритм компрессии NRV (Not Really Vanished) разработан автором знаменитого упаковщика UPX Markus F.X.J. Oberhumer. Алгоритм используется в этом упаковщике, а также в нескольких вариантах входит в состав библиотеки с открытым кодом UCL. Высокая скорость обработки данных сочетается с очень хорошей степенью компрессии данных.

Читать статью целиком »
Просмотров: 258 | Комментариев: 0

Упаковка и распаковка данных в формате LZ48 на Ассемблере

24.02.2021 | Категория: Образ мышления: Assembler | Автор: ManHunter

Упаковка и распаковка данных в формате LZ48 на Ассемблере

На просторах этих ваших интернетов обнаружился вот такой простенький алгоритм упаковки, обозначенный автором как LZ48. Собственно, это даже не совсем алгоритм, а исходник утилиты для упаковки и распаковки данных за авторством roudoudou. Больше никакой информации нет, поэтому пояснить, что означают цифры "48", я не могу, все вопросы к автору, если, конечно, найдете первоисточник. Вряд ли вы когда-нибудь встретите этот упаковщик в "дикой природе", но для коллекции сгодится. Да и для какой-нибудь лабораторной работы тоже может оказаться полезным.

Читать статью целиком »
Просмотров: 249 | Комментариев: 0

Распаковка данных в формате BriefLZ на Ассемблере

10.02.2021 | Категория: Образ мышления: Assembler | Автор: ManHunter

Распаковка данных в формате BriefLZ на Ассемблере

Программиста Joergen Ibsen вы можете знать, как автора популярной библиотеки aPLib и DOS'овского упаковщика исполняемых файлов aPACK, который на протяжении многих лет неизменно занимал первые строки рейтингов по степени компрессии. Про aPLib поговорим позже, а сегодня будет распаковщик для еще одной разработки Joergen Ibsen - BriefLZ. Это высокоскоростная разновидность Lempel-Ziv алгоритма для сжатия данных, по степени компрессии приближающаяся к zlib.

Читать статью целиком »
Просмотров: 259 | Комментариев: 1

Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2021
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.07 сек. / MySQL: 2 (0.0031 сек.) / Память: 4.75 Mb
Наверх