Win32asm обучение


    d8ef8794 корректор объема газа Е􈎲, a1k rvg. | икона Святого Луки купить в Москве |     

После этого текста следует целый


После этого текста следует целый список констант и флагов (которые определены в windows.inc). Я не отобразил его здесь, потому что он слишком большой. Смотрите в справочнике, вы можете увидеть, что функция MessageBox берет 4 параметра: родительское окно, указатель на строку сообщения, указатель на строку заголовка и тип messagebox.
hWnd может быть NULL, потому, что наша программа не имеет окна.
lpText Должен быть указателем на наш текст. Это значит, что этот параметр - смещение в памяти, где находится наш текст.
lpCaption смещение строки заголовка.
uType комбинация значений, описанных в справочнике, таких как MB_OK, MB_OKCANCEL, MB_ICONERROR, и т.д.
Давайте сначала определим две строки для messagebox:
Добавте это в first.asm:
.data
MsgText db "Hello world!",0
MsgTitle db "This is a messagebox",0
.data указывает на начало секции данных. Директива db непосредственно вставляет байты, а строка это набор байт, секция данных будет содержать строки выше, а чтобы они заканчивались 0, вставляем дополнительно ,0. MsgText содержит смещение первой строки, а MsgTitle смещение второй. Теперь мы можем использовать функцию:
invoke MessageBox, NULL, offset MsgText, offset MsgTitle, NULL
А так, как вы используете invoke, вы можете использовать (более безопасную) ADDR вместо offset:
invoke MessageBox, NULL, ADDR MsgText, ADDR MsgTitle, NULL
Мы еще не смотрели на последний параметр, но это прекрасно будет работать, потому что MB_OK (стиль для messagebox с кнопкой OK) равняется 0 (NULL). Но Вы можете использовать любой другой стиль. UType (4-ый параметр) определяет:
Определяет флаги, которые определяют содержание и поведение диалогового окна. Этот параметр может быть комбинацией флагов из следующих групп флагов.
Теперь возьмем для напримера, что мы хотим простой messagebox с кнопкой OK с значком 'информация'. MB_OK это стиль для кнопки OK, MB_ICONINFORMATION это стиль для информационного значка. Стили объединены с помощью оператора 'or'. Это не опкод. Masm выполнит операцию or перед ассемблированием. Вместо or, вы можете использовать знак + (добавление), но так иногда возникают проблемы с накладывающимися стилями (один стиль содержит некоторые другие). В нашем случае, вы можете использовать +.

Содержание  Назад  Вперед