Паpаметpы:
Parent: Окно, владеющее блоком сообщений.
Txt: отображаемое сообщение (заканчивающееся пустым символом).
Caption: Заголовок блока диалога (заканчивающийся пустым символом) или nil для "Error" ("Ошибка").
TextType: Одна или комбинация констант mb_. См. pаздел "Флаги блока сообщения, mb_" в главе 1.
Возвpащаемое значение:
В случае успешного завершения одна из следующих констант: id_Abort, id_Cancel, id_Ignore, id_No, id_OK, id_Retry или id_Yes. См. pаздел "Идентификатоpы команд блока диалога, id_" в главе 1.
Вот эту функцию мы и используем в программе для вывода нашего текста. Функция не требует длительной подготовки к своему использованию: описанию параметров и регистрации окна, в качестве окна-родителя для нее можно выбрать центральное окно ОС Windows, которое называется DeskTop. Опишем эту функцию как внешнюю (функция будет предоставлена операционной системой «из вне…») в тексте нашей программы:
extrn MESSAGEBOX:PROC
Теперь начнем описывать данные, используемые нашей программой. В режиме программирования в TASM, называемом IDEAL (который устанавливается по умолчанию) сегмент данных может начинаться в любом месте программы кодовым словом:
.data
Первые 16-ть байт области данных программы следует зарезервировать для менеждера 16-ти битных задач ОС Windows. Уж так создали этот менеджер программисты Билла Гейса тут нам ничего не остается делать, как смириться. «Вынь и положь» им эти шестнадцать байт в начале Вашей программы. При запуске приложения ОС разместит в них свою системную информацию. Место в программе под эту информацию рекомендуется задать так:
DB 16 DUP(0)
Далее расположим в области данных текстовые строки, которые будем выводить в окне. Это собственно наше сообщение, выводимое в центре окна MessageBox:
szMsg db 'HELLO, WORLD!',0
и заголовок этого окна:
szCapt db 'Моя ПЕРВАЯ программа',0
Имена для этих текстовых строк szMsg и szCapt мы придумали произвольно. Вы можете их заменить на что-нибудь более понятное Вам. Обратите внимание, что обе текстовые строки заканчиваются кодом ноль. Это ОБЯЗАТЕЛЬНО. Практически во все системные функции ОС Windows текстовые строки подаются в формате языка “C” – с замыкающим нулем (видно к моменту написания этих функций у Била Гейса уволились все программисты-паскалисты и на их смену пришли программисты языка C).
Теперь можно начать писать код программы. Кодовый сегмент в стандарте Ассемблера Ideal начинается кодовым словом:
.code
далее следует метка начала программы, например:
start:
Во всех 16-ти разрядных приложениях, компилируемых в EXE файлы первым делом желательно установить регистр данных DS на область наших данных, описанных выше. Это делается стандартным присваиванием в DS адреса системной метки сегмента данных - @data. А так как напрямую в DS ее присвоить нельзя, перебрасываем адрес через AX:
mov ax, @data
mov ds, ax
А теперь просто вызовем системную функцию MessageBox, послав в нее правильно параметры например так:
call MESSAGEBOX,0,ds,offset szMsg,ds,offset szCapt,0
Вот это – самый ответственный момент: правильно послать параметры в системную функцию, поэтому разберем его поподробнее.
Как было описано выше в справочнике SDK по API функциям, функция MessageBox имеет четыре параметра:
Parent: HWnd; - хэндел окна родителя;
Txt: PChar; - указатель на строку с основным текстом сообщения;
Caption: PChar; - указатель на строку с текстом заголовка окна;
TextType: Word - код описывающий число кнопок на окне, и вид иконок
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.