Вы не поверите, но каждый компонент-элемент уже созданного окна - это...то-же окно. Да-а-а...
В свете последних новостей, идея создания ассемблер-арифмометра, уже не кажется такой перспективной.
Но, как говорится, дело и мастер...близнецы-братья!
Попробуем обойтись без лишней красоты.
Арифмометр не будет круглым, но кнопочки и дисплей мы возмём - стандартные, из закромов браузера.
Прежде, чем мы обратимся к коду (рис.8), немного задержимся на его оформлении. Код
нового окна, в отличии от предыдущего (
рис.7), идёт
без директивы
option casemap:none и сочетает в себе как верхний, так и нижний регистр
букв. Связано это с тем, что
Win API, а мы им
пользуемся,
выполнено в верхнем(?) регистре. Зачем нам лишние ошибки при компиляции? Будем исполнять
"имена собственные" - в верхнем регистре, а всё остальное - в нижнем.
Признаюсь, по
секрету, я просмотрел перспективы нашего арифмометра. Что интересно - графика оказалась
наиболее лёгкой частью программы и кнопочек на нашем арифмометре осталось только 16.
Наиболее сложной частью арифмометра оказалось преобразование числа в двоичный код и
обратно. Более подробно преобразование рассмотренно
здесь.
Выглядеть основной файл арифмометра будет так:
Код получился не очень объёмным. Не смотря на то, что одних кнопок на нашем арифмометре - 16 шт.
К тому-же, их создание выполнено в "развёрнутом" виде, для наглядности (не каламбур). Что-бы
не ухудшать читаемость кода, все параметры раздела
.data вынесены в отдельный файл -
data.inc.
Если
приглядется - создание (и не только) идёт по следующему принципу: запихиваем в стэк основообразующие
параметры (типовые и созданные) и вызываем необходимую функцию. Это - уже не совсем ассемблер,
но за стэк подержатся можно. Да и попрыгать - то-же.
В результате мы получили ехе-файл. Это -
не Рафаэль, но на арифмометр похоже.
Несколько слов о файле
const.inc. Это - вспомогательный файл,
даже - разгрузочный. В него можно запихнуть большую часть кода основного (и не только) asm-файла.
С очень большой вероятностью - у нас появятся и вспомогательные asm-файлы и тогда придётся
файл fenix.asm - делать главным (
WinMain proc).
дальше...
...назад