#Include "window9.bi"

'Константы для выборочного скриншота
Enum SelectHW
SizeValue=1
TopRight
RightBottom
BottomRight
LeftBottom
Exit_W
TopSize
LeftSize
BottomSize
RightSize
BottomLeftSize
BottomRightSize
ToolTip
End Enum
'константы для окна настроек
Enum Options
spinWidth=ToolTip+1
spinHeight
GroupSize
GroupFormat
GroupPATH
TextWidth
TextHeight
StringGadgetPATH
CheckBoxReal
CheckBoxReplace
OptionJPEG
OptionJPG
OptionBMP
OptionPNG
OptionTIFF
OptionGIF
OPtionICO
ButtonOK
ButtonCancel
ButtonChangePATH
End Enum
'константы для окна HotKey
Enum Hotkey
StringHotkeyControl=ButtonChangePATH+1
GroupHotkey
StringHotkeyPATH
ListViewHotkey
ButtonHotkeyS
ButtonHotKeyClear
ButtonHotKeyPath
ButtonHotkeyOK
TextHotkeyExit
End Enum
'константы для окна Resize
Enum Resize
spinResizeWidth=TextHotkeyExit+1
spinResizeHeight
ResizeButtonOK
ResizeCheckBox
End Enum
'константы для меню и системного трея
Enum MenuAndSysTray
MemuColorFrameGreen=1
MemuColorFrameRed
MemuColorFrameBlue
MemuColorFrameBlack
MemuColorFrameWhite
MemuColorTextGreen
MemuColorTextRed
MemuColorTextBlue
MemuColorTextBlack
MemuColorTextWhite
MenuOptionWindow
menuDeleteItem
MenuHelp
MenuHotKey
MenuAbout
MenuExit
SysTray
End Enum

Type Hot_Key
	Shift As String
	Ctrl As String
	Alt As String
	Key As String
	tempmodkey As Integer ' временное хранилище реального значения модификации клавиши
	tempvirtkey As Integer ' временное хранилище реального значения самой клавиши
	flag As Integer 'флаг открытия и закрытия окна
	Hide As Integer 'флаг для остановки потока
	CountHotKey As Integer ' общее кол-во горячих клавиш
	DimKey0(33 To 36) As String*4={"PUp","PDw","End","Home"}
	DimKey1(45 To 46) As String*3={"Del","Ins"}
	DimKey2(96 To 111) As String*4={"Num0","Num1","Num2","Num3","Num4","Num5","Num6","Num7","Num8","Num9","Num*","Num+","","Num-","Num.","Num/"}
	DimKey3(186 To 192) As String*1={":","=","<","-",">","?","Ё"}
	DimKey4(219 To 222) As String*1={"[","|","]","Э"}
End Type

Type SaveLoad
	path As String
	real As bool
	rewrite As bool
	Width As integer
	height As Integer
	Format As String
	Hide As bool
	trect As RECT
	ico As HICON
	temppath As String
End Type

Type Obj
	SaveLoad As SaveLoad '<- тип с настройками
	As String formatimage(OptionJPEG To OPtionICO)={".jpeg",".jpg",".bmp",".png",".tiff",".gif",".ico"}
	Hot_Key As Hot_Key
	As HWND OptionhWnd '<- окно настроек скриншотов по умолчанию
	As HWND SelectHwnd '<- окно выборочного скриншота
	As HWND HotKeyHWND '<- окно настроек горячих клавиш
	As HWND ResizeSnapHwnd ' <- окно изменения размеров скриншота
	As HMENU H_MENU    '<- основное меню
	As HMENU H_MENU_1  '<- меню цвет рамки
	As HMENU H_MENU_2  '<- меню цвет текста
	As HMENU H_MENU_3  '<- контекстное меню в ListView
	As Integer ev      '<- событие
	As String dir_ '<- выбранная директория
	As String Tdir_ '<- временная директория
	As BOOL flag       '<- используется при создании рамки в процедуре Obj.Color
	As Integer DimColor(1 To 5)={&h00FF00,&h0000FF,&hFF0000,&h1,&hFFFFFF} '<- цвета рамки и текста
	As HANDLE FileINI '<- хендл файла настроек
	As HBITMAP bmp,Tbmp '<- битмапы для сохранения
	Declare Sub HotKeyRun(param As integer)'<- Запуск по горячим клавишам
	Declare Function SaveLoadOption(flag As bool,flagWindow As bool=1) As Integer ' <-процедура , загружающая и сохраняющая настройки
	Declare Sub SelectScreenshootWindow() 'процедура окна выборочного скриншота
	Declare Sub menu() '<-процедура меню в трее
	Declare Sub Snap(param As integer) '<- снимок
	Declare Sub CreateResizeSnapWindow
	Declare Sub ResizeSnap()
	Declare Sub NewHotKey() '<-процедура установки новой горячей клавиши
	Declare Sub DeleteHotKey() '<- удаление пункта из ListView (и горячей клавиши)
	Declare Sub UnRegHotKey() '<- отмена регистрации всех клавиш
	Declare Sub LoadSaveHotkey(flag As bool) '<- загрузка и сохранение горячих клавиш из файла
	Declare Sub OptionWindow() '<-процедура окна настроек скриншота по умолчанию
	Declare Sub Color(col As COLORREF=GetGadgetColor(TopRight,1),Coltext As COLORREF=GetGadgetColor(SizeValue,2))
	Declare Sub Hotkey() '<- процедура окна настроек горячих клавиш
	Declare Static Sub EventHotkey(Byval param As Any Ptr = 0) '<- процедура сообщений клавиш HotKeyControl
	Declare Static Sub size() '<- процедура изменения размеров окна SelectHwnd
	Declare Sub Event() '<- обработчик сообщений
	Declare Sub Clear() '<- очистка флагов и HotKey контрола
	Declare Static Function windowproc(hwnd As HWND,msg As UINT,wParam As WPARAM,lParam As LPARAM) As Integer
End Type
Dim shared As Any Ptr Incfilepng
Dim Shared a As Obj '<- Инициализация объекта