
Быстрый поиск
Введите фрагмент названия статьи для поиска
Обработка критических ошибок с помощью VEH
23.08.2021 | Категория: Образ мышления: Assembler | Автор: ManHunter

Обработка критических ошибок с помощью VEH
Продолжение темы, начатой в статье про обработку ошибок, где для этого используется механизм SEH. Принципиальное отличие VEH (Vectored Exception Handling) от SEH (Structured Exception Handling) в том, что обработчики VEH глобальны для процесса и позволяют обрабатывать абсолютно все исключения для всех потоков, тогда как при использовании SEH нужно писать отдельный обработчик на каждый поток.
Читать статью целиком »
Просмотров: 1403 | Комментариев: 3
Генератор xoshiro64 на Ассемблере
19.08.2021 | Категория: Образ мышления: Assembler | Автор: ManHunter

Генератор xoshiro64 на Ассемблере
В качестве продолжения статьи про xoshiro128 реализация алгоритма xoshiro64 на Ассемблере. Напомню, что xoshiro (xoroshiro) - семейство высокоскоростных алгоритмов для генерации псевдослучайных чисел. Есть две разновидности xoshiro64, отличающиеся друг от друга только количеством операций умножения. Это, соответственно, версия xoshiro64* и xoshiro64**. Для работы генератор использует буфер размером в 2 DWORD'а.
Читать статью целиком »
Просмотров: 1062 | Комментариев: 4
Графический курсор (каретка) в поле EDIT
09.08.2021 | Категория: Образ мышления: Assembler | Автор: ManHunter
Сегодня отдохнем от системы и немного поработаем с графикой, будем делать собственный графический курсор в поле EDIT. Какого-то необычайно полезного практического применения этому нет, просто симпатичное дополнение к интерфейсу, например, к окнам нестандартной формы. Ну а что, раз уж наворотили чудо-окна, почему бы не наворотить и чудо-курсор.Начнем с теории. В отличие от "мышиного" курсора, который может легко принимать любой вид, управлять кареткой, то есть курсором в текстовом поле, не так просто. Функция CreateCaret позволяет только описывать форму для каретки, но не меняет ее изображение. Достаточно один раз попробовать, чтобы убедиться в ее бесполезности. Придется самостоятельно рисовать графическую каретку на холсте поля ввода.
Code (Assembler) : Убрать нумерацию
- ; Загрузить из ресурсов картинку
- invoke GetModuleHandle,0
- invoke LoadBitmap,eax,1
- mov [hСaret],eax
- ; Выбрать картинку для холста поля ввода
- invoke GetDlgItem,[hwnddlg],ID_EDIT
- invoke GetDC,eax
- mov [hDC],eax
- invoke CreateCompatibleDC,[hDC]
- mov [hСaretDC],eax
- invoke SelectObject,[hСaretDC],[hСaret]
- ; Получить цвет угловой точки картинки
- invoke GetPixel,[hСaretDC],0,0
- mov [bColor],eax
- ; Создать кисть с этим цветом
- invoke CreateSolidBrush,[bColor]
- mov [hBrush],eax
- ; Прибраться за собой
- invoke DeleteObject,[hСaret]
Читать статью целиком »
Просмотров: 2095 | Комментариев: 7
Работа с кнопкой Help в заголовке окна
28.07.2021 | Категория: Образ мышления: Assembler | Автор: ManHunter
В самом начале развития Windows во многих приложениях очень часто встречалась кнопка "Help" в заголовке окна. Кликнув на нее и переместив курсор на нужный элемент, пользователь мог получить подсказку, например, какие данные надо вводить в конкретное текстовое поле или что получится, если нажать какую-нибудь кнопку. Сейчас UIX-дизайнеры прокачали свои навыки, кнопка справки стала уже не так популярна, по крайней мере я не встречал ее ни в одном современном приложении. Но может быть кому-нибудь будет интересно, как ей пользоваться и как правильно обрабатывать ее сообщения. Начнем с интерфейса. Чтобы в заголовке окна появилась кнопка справки, оно должно быть изначально создано с расширенным стилем WS_EX_CONTEXTHELP. Для динамического управления кнопкой справки можно воспользоваться способом, описанным в этой статье.Из программной части нам понадобится одна структура, которую почему-то не знает коробочный FASM. Хотя, блин, чему я удивляюсь...
Code (Assembler) : Убрать нумерацию
- struct HELPINFO
- cbSize dd ?
- iContextType dd ?
- iCtrlId dd ?
- hItemHandle dd ?
- dwContextId dd ?
- MousePos POINT
- ends
Code (Assembler) : Убрать нумерацию
- .wminitdialog:
- ; Назначить контекстный идентификатор справки элементу окна
- invoke GetDlgItem,[hwnddlg],ID_BUTTON_1
- invoke SetWindowContextHelpId,eax,777
Читать статью целиком »
Просмотров: 1345 | Комментариев: 4
Системные генераторы случайных чисел
13.07.2021 | Категория: Образ мышления: Assembler | Автор: ManHunter

Системные генераторы случайных чисел
На сайте уже выложено несколько различных алгоритмов генераторов псевдослучайных чисел. Какие-то генераторы лучше, какие-то похуже. Но когда надо сгенерировать всего пару-тройку чисел или результаты генерации не используются в критических участках кода, можно воспользоваться системными источниками псевдослучайных чисел.
Читать статью целиком »
Просмотров: 2761 | Комментариев: 26


