;struc.inc - описываем используемые структуры
;Описание этих структур можно найти в справочной системе интегрированной среды разработки
;приложений для Windows C++,если она установлена на вашем компьютере
;winuser.h
;структура,описывающая класс основного окна
WNDCLASSEX struc
cbSize dd ? ;размер в байтах этой структуры
style dd ? ;стиль окна
lpfnWndProc dd ? ;обработчик событий окна(оконная процедура)
cbClsExtra dd ? ;число дополнительных байт после структуры(0)
cbWndExtra dd ? число дополнительных байт после окна(0)
hInstance dd ? ;идентификатор нашего процесса
hIcon dd ? ;идентификатор иконки
hCursor dd ? ;идентификатор курсора
hbrBackground dd ? ;цвет фона
lpszMenuName dd ? ;ресурс в основном меню
lpszClassName dd ? ;имя класса основного окна
hIconSm dd ? ;идентификатор маленькой иконки
WNDCLASSEX ends
;эта структура заполняеться каждый раз,когда окно получает какое-то сообщение
MSG struc
hwnd dd ? идентификатор окна,которое получило сообщение
message dd ? ;номер сообщения
wParam dd ? ;определяет дополнительную информацию о сообщении
lParam dd ? ;определяет дополнительную информацию о сообщении
time dd ? ;определяет время в котором сообщение было объявлено
pt dd ? ;позиция курсора,в экранных координатах(пикселях),когда сообщение было объявлено
MSG ends

;эта cтруктура содержит информацию для приложения. Эта информация может использоваться,
;чтобы окраcить область клиента окна принадлежащую этому приложению.
PAINTSTRUCT struc
hdc dd ? ;Идентифицирует дисплейный контекст для перерисовки
fErase dd ? ;определяет должен ли фон быть стерт
RECT dd 4 dup(?) ;определяет RECT структуру(см.ниже)
fRestore dd ? ;зарезервированно
fIncUpdate dd ? ;зарезервированно
rgbReserved dd 16 dup(?) ;зарезервированно
PAINTSTRUCT ends

;Структура определяет координаты верхних-левых и нижних-правых углов прямоугольника
RECT struc
rcLeft dd ? ;определяет x-координату верхнего-левого угла прямоугольника
rcTop dd ? ;определяет y-координату верхнего-левого угла прямоугольника
rcRight dd ? ;определяет x-координату более низкого-правого угла прямоугольника
rcBottom dd ? ;определяет y-координату более низкого-правого угла прямоугольника
RECT ends


;Const.inc - здесь находяться необходимые нам константы:
;стили окон,сообщения,флаги и др.
;все их можно найти в файле winuser.h или др.включаемых файлах(они находяться в папке
;INCLUDE интегрированной среды разработки,а их описание в справочной системе)
CS_HREDRAW equ 2h ;перерисовать окно при изменении ширины окна
CS_VREDRAW equ 1h ;перерисовать окно при изменении высоты окна
COLOR_WINDOW equ 5 ;цвет фона окна
IDC_ARROW equ 32512
CW_USEDEFAULT equ 80000000h ;размер окна по умолчанию
SW_SHOWNORMAL equ 1
WM_PAINT equ 000Fh ;перерисовать часть окна
WM_DESTROY equ 2 ;была вызвана функция уничтожения окна
WM_CREATE equ 0001h ;была вызвана функция создания окна
WM_LBUTTONDOWN = 0201h ;была нажата левая кнопка мыши
WM_CLOSE = 0010h ;окно было закрыто
WM_INITDIALOG = 110h ;была вызвана функция создания диалового окна
WM_COMMAND = 0111h ;сообщение от меню
MB_OK = 0 ;кнопка MB_OK

;mac.inc - макроопределения макрокоманд
;string_out - вывод строки символов в рабочую область окна(неформатированный текст)
;параметры:
;par1 - длина выводимой строки
;par2 - адрес строки
;par3 - y-координата
;par4 - x-координата
string_out macro par1,par2,par3,par4
push par1
push offset par2
push par3
push par4
push hdc ; дескриптор контекста устройства
call TextOut
endm

;Файл Win32API.inc - здесь мы описываем импортируемые функции
;из библиотек динамической компоновки(файлы с расширением DLL) и тот способ их подключения,
который использует комптлятор фирмы Microsoft.
;Описание этих функций можно найти в справочной системе интегрированной среды разработки
;приложений для Windows C++,если она установлена на вашем компьютере
includelib kernel32.lib
extrn __imp__GetModuleHandleA@4:dword
extrn __imp__ExitProcess@4:dword
ExitProcess equ __imp__ExitProcess@4
GetModuleHandle equ __imp__GetModuleHandleA@4
includelib user32.lib
extrn __imp__MessageBoxA@16:dword
extrn __imp__CreateWindowExA@48:dword
extrn __imp__LoadIconA@8:dword
extrn __imp__LoadCursorA@8:dword
extrn __imp__RegisterClassExA@4:dword
extrn __imp__UpdateWindow@4:dword
extrn __imp__ShowWindow@8:dword
extrn __imp__GetMessageA@16:dword
extrn __imp__TranslateMessage@4:dword
extrn __imp__DispatchMessageA@4:dword
extrn __imp__PostQuitMessage@4:dword
extrn __imp__DefWindowProcA@16:dword
extrn __imp__BeginPaint@8:dword
extrn __imp__EndPaint@8:dword
extrn __imp__InvalidateRect@12:dword
extrn __imp__GetClientRect@8:dword
extrn __imp__DrawTextA@20:dword
extrn __imp__DialogBoxParamA@20:dword
extrn __imp__GetDlgItem@8:dword
extrn __imp__GetDlgItemTextA@16:dword
extrn __imp__SetFocus@4:dword
extrn __imp__SetDlgItemTextA@12:dword
extrn __imp__EndDialog@8:dword
MessageBox equ __imp__MessageBoxA@16
LoadIcon equ __imp__LoadIconA@8
LoadCursor equ __imp__LoadCursorA@8
RegisterClassEx equ __imp__RegisterClassExA@4
CreateWindowEx equ __imp__CreateWindowExA@48
UpdateWindow equ __imp__UpdateWindow@4
ShowWindow equ __imp__ShowWindow@8
GetMessage equ __imp__GetMessageA@16
DispatchMessage equ __imp__DispatchMessageA@4
TranslateMessage equ __imp__TranslateMessage@4
DefWindowProc equ __imp__DefWindowProcA@16
PostQuitMessage equ __imp__PostQuitMessage@4
BeginPaint equ __imp__BeginPaint@8
EndPaint equ __imp__EndPaint@8
InvalidateRect equ __imp__InvalidateRect@12
GetClientRect equ __imp__GetClientRect@8
DrawText equ __imp__DrawTextA@20
DialogBoxParam equ __imp__DialogBoxParamA@20
GetDlgItem equ __imp__GetDlgItem@8
GetDlgItemText equ __imp__GetDlgItemTextA@16
SetFocus equ __imp__SetFocus@4
SetDlgItemText equ __imp__SetDlgItemTextA@12
EndDialog equ __imp__EndDialog@8
includelib gdi32.lib
extrn __imp__TextOutA@20:dword
TextOut equ __imp__TextOutA@20
includelib shell32.lib
extrn __imp__ShellExecuteA@24:dword
ShellExecute equ __imp__ShellExecuteA@24