// Атрибуты вывода текста
#define aFA_NORMAL	0x0000	// без атрибутов
#define aFA_BOLD	0x0001	// утолщенный
#define aFA_ITALIC	0x0002	// наклонный
#define aFA_UNDERLINE	0x0004	// подчёркнутый
#define aFA_STRIKE	0x0008	// перечёркнутый
#define aFA_TRANSPARENT 0x0010	// прозрачный фон
#define aFA_SHADOW	0x0020	// присутствует тень

// Структурный прототип для описания текста
struct TEXTDESCR {
dword		tdOutDC;	// Контекст окна, в которое происходит вывод.
dword		tdCharsText;	// Текст для вывода (указатель на строку).
dword		tdFontName;	// Имя шрифта для вывода (указатель на строку).
dword		tdFontColor;	// Цвет шрифта и
dword		tdBackColor;	// цвет фона.
int		tdHeight;	// Размер символов: высота
int		tdWidth;	// и ширина.
int		tdAttrib;	// Атрибуты текста (толщина, курсив, подчёркивание и зачёркивание).
};

// Структурный прототип для описания изображения
struct SBMPDEF{
	dword pBMPName;		//   указатель на имя файла рисунка
	dword dwBMPWidth;	// * размер окна и рисунка по ширине
	dword dwBMPHeight;	// * размер окна и рисунка по высоте
	dword dwWinDC;		//   контекст для рисования на оконной поверхности
	dword dwMemDC;		// * новые контексты изображения в памяти
	dword dwMemBMP;		// * 
};

// нуль-код - это ограничитель памяти. Считается, что после нуль-кода нет информации о переменных
#define ZEROCODE	0x000100ff		// нуль-код

// описание импортируемых функций
extern WINAPI "afunc.dll"
{
	dword aLoadBMP(dword pImage);
	dword aUnloadBMP(dword pImage);
	dword aManageElement(dword hDialg, int hElemID, int hMessage, int wParam, dword lParam);
	dword aEnableWin(dword hDialg, int hElemID, BOOL bEnableVal);
	dword aVisibleWin(dword hDialg, int hElemID, BOOL bShowVal);
	void aCenterWindow(dword hWnd, WinWidth, WinHeight);
	void aDrawText(dword tdOutDC, tdCharsText, tdFontName, tdFontColor, tdBackColor, int ixCoord, iyCoord, tdHeight, tdWidth, tdAttrib);
	void aDrawTextIndirect(dword pTextAttr, int ixCoord, iyCoord);
	dword aSubclassWin(dword hWnd, int iControlID, dword pNewAddrProc);
	
	dword aSearchVar(dword pMem, int iIDvar);
	dword aSearchStr(dword pMem, int iIDvar);
	void aAddVar(dword pMem, int iIDvar, iSize, dword dwValue);
	void aAddStr(dword pMem, int iIDvar, dword pStr);
	dword aSearchZerocode(dword pMem);
	dword aJumpNextRec(dword dwMemPoint);
	void aCloseMem(dword pMem);
	bool aInitMem(dword pMem, dwSize);
}
