Но подключение библиотека импорта это еще не все, что вы должны сделать. Файлы 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
<Здесь ваши константы>