Win32asm обучение


    d8ef8794     

Но подключение библиотека импорта это


Но подключение библиотека импорта это еще не все, что вы должны сделать. Файлы include (.inc) также необходимы. Они могут быть автоматически сгенерированы из библиотек, используя утилиту l2inc. Файлы include подключаются так:
include \masm32\include\kernel32.inc
Внутри include файлы, содержат определение прототипов функций dll, так что вы можете использовать invoke.
kernel32.inc:
...
MessageBoxA proto stdcall :DWORD, :DWORD, :DWORD, :DWORD
MessageBox textequ <MessageBoxA>
...
Вы можете заметить, что include-файл содержит ansi функции, а также определяет имена функций без суффикса 'A', чтобы они были такими-же, как их реальные имена: вы можете использовать MessageBox вместо MessageBoxA. После того, как вы подключили библиотеку и include-файл, вы можете использовать функцию:
invoke MessageBox, NULL, ADDR MsgText, ADDR MsgTitle, NULL
11.2 - include-файл 'windows'
Здесь есть еще специальный include-файл, названный windows.inc, который содержит все константы и структуры для windows API. Например, окно сообщений может иметь различные стили. Четвертый параметр функции это стиль. NULL (пустой указатель) замещает MB_OK, которая обозначает кнопку OK. Include-файл windows содержит определения для этих стилей:
MB_OK equ 0
MB_OKCANCEL equ ...
MB_YESNO equ ...
Так что вы можете использовать эти имена, как константы:
invoke MessageBox, NULL, ADDR MsgText, ADDR MsgTitle, MB_YESNO
Пример использует include-файл из пакета masm:
include \masm32\include\windows.inc
11.3 - "Каркас" программы
.486
.model flat, stdcall

option casemap:none

includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\user32.lib
includelib \masm32\lib\gdi32.lib
include \masm32\include\kernel32.inc
include \masm32\include\user32.inc
include \masm32\include\gdi32.inc
include \masm32\include\windows.inc
.data
    <Здесь ваши инициализируемые данные>
.data?
    <Здесь ваши не инициализируемые данные>
.const
    <Здесь ваши константы>

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