; macro
macro mmsg reg, [msg, msgHandler] {
	cmp  reg,msg
	je   msgHandler
}

; +----------+
; | variable |
; +----------+
crlf					equ 13,10
sobjdel					rd 0xFF												; store the object that need to be freed when calling proc_deleteobject
sobjdelidx				dd 0												; index for sobjdel

; +-----------+
; | structure |
; +-----------+

; struct_createfont
struct struct_createfont
	handle				dd ?
	width				dd 0
	escape				dd 0
	orientation			dd 0
	weight				dd 0
	italic				dd 0
	underline			dd 0
	strike				dd 0
	charset				dd 0
	oprecision			dd OUT_TT_PRECIS
	cprecision			dd CLIP_DEFAULT_PRECIS
	quality				dd DEFAULT_QUALITY
	pitch				dd FF_DONTCARE
ends
sfont.bitstream			db "Bitstream Vera Sans Mono",0
sfont.tahoma			db "Tahoma",0
sfont.verdana			db "Verdana",0
sfont					struct_createfont									; base struct for proc_createfont

; struct_createwindow
struct struct_createwindow
	handle				dd ?
	exstyle				dd 0
	clsname				dd 0
	caption				dd ?
	style				dd WS_CHILD + WS_VISIBLE
	x					dd 0
	y					dd 0
	width				dd 0
	height				dd 0
	parent				dd ?
	id					dd 0
ends
swindow.static			db "static",0
swindow.button			db "button",0
swindow.edit			db "edit",0
swindow.listbox			db "listbox",0

slabel					struct_createwindow ?,0,swindow.static,?,WS_CHILD + SS_NOTIFY + SS_LEFT + WS_VISIBLE,0,0,100,25,?,100
sbutton					struct_createwindow ?,WS_EX_STATICEDGE,swindow.button,?,WS_CHILD + WS_VISIBLE + BS_MULTILINE + BS_PUSHBUTTON + WS_TABSTOP,0,0,100,25,?,200
sedit					struct_createwindow ?,WS_EX_CLIENTEDGE,swindow.edit,?,WS_CHILD + WS_VISIBLE + ES_WANTRETURN + WS_VSCROLL + ES_MULTILINE + ES_AUTOVSCROLL + ES_AUTOHSCROLL,0,0,100,25,?,300
slistbox				struct_createwindow ?,WS_EX_CLIENTEDGE,swindow.listbox,?,WS_CHILD + WS_VISIBLE + LBS_STANDARD + WS_TABSTOP,0,0,100,25,?,400
