#pragma once

#if defined( __FB_64BIT__ ) and (not defined( __FB_WIN32__))
	'' On 64bit Linux/BSD systems (but not 64bit Windows), C's long is
	'' 64bit like FB's integer.
	'' Note: Using 64bit Integer here instead of LongInt, to match fbc's
	'' mangling: on 64bit Linux/BSD, Integer is mangled to C's long.
	type clong as integer
	type culong as uinteger
#else
	'' On 32bit systems and 64bit Windows, C's long is 32bit like FB's long.
	'' Note: Using 32bit Long here instead of 32bit/64bit Integer, because
	'' this is also used for 64bit Windows where Integer isn't 32bit.
	type clong as long
	type culong as ulong
#endif

#include once "windows.bi"

extern "C"

const ANCHOR_NONE as const long = -1
const ANCHOR_LEFT as const long = 0
const ANCHOR_WIDTH as const long = 1
const ANCHOR_RIGHT as const long = 2
const ANCHOR_CENTER_HORZ as const long = 3
const ANCHOR_HEIGHT as const long = 4
const ANCHOR_HEIGHT_WIDTH as const long = 5
const ANCHOR_HEIGHT_RIGHT as const long = 6
const ANCHOR_BOTTOM as const long = 7
const ANCHOR_BOTTOM_WIDTH as const long = 8
const ANCHOR_BOTTOM_RIGHT as const long = 9
const ANCHOR_CENTER_HORZ_BOTTOM as const long = 10
const ANCHOR_CENTER_VERT as const long = 11
const ANCHOR_CENTER_VERT_RIGHT as const long = 12
const ANCHOR_CENTER as const long = 13
const ANCHOR_LAST as const long = ANCHOR_CENTER
const SK_METRICFIRST as const long = 0
const SK_CYCAPTION as const long = SK_METRICFIRST
const SK_CYMENU as const long = 1
const SK_CYSTATUS as const long = 2
const SK_CXFRAMELEFT as const long = 3
const SK_CXFRAMERIGHT as const long = 4
const SK_CYFRAMETOP as const long = SK_CYCAPTION
const SK_CYFRAMEBOTTOM as const long = 5
const SK_CXSIZE as const long = 6
const SK_CYSIZE as const long = 7
const SK_CXSYSBUT as const long = 8
const SK_CYSYSBUT as const long = 9
const SK_CXCAPTEXT as const long = 10
const SK_CYCAPTEXT as const long = 11
const SK_XBUT3DBORDER as const long = 12
const SK_YBUT3DBORDER as const long = 13
const SK_CXSYSICON as const long = 14
const SK_CYSYSICON as const long = 15
const SK_CXSYSLED as const long = 16
const SK_CYSYSLED as const long = 17
const SK_TRANSLUCENCY as const long = 18
const SK_MENUTRANSLUCENCY as const long = 19
const SK_PAINT_BORDER as const long = 20
const SK_PAINT_BACKGROUND as const long = 21
const SK_ICONSIZE as const long = 22
const SK_OUTER_GLOW as const long = 23
const SK_SKIN_ICON as const long = 24
const SK_DWM_AERO as const long = 25
const SK_DWM_LEFT as const long = 26
const SK_DWM_TOP as const long = 27
const SK_DWM_RIGHT as const long = 28
const SK_DWM_BOTTOM as const long = 29
const SK_USESYSMENU as const long = 30
const SK_DPI as const long = 31
const SKMETRIC_UB as const long = 32

declare function skPopupOwner(byval hWnd as HWND) as HWND
declare function skCaptionFont() as HFONT
declare function skFont() as HFONT
declare function skFontBold() as HFONT
declare function skFontDlg() as HFONT
declare function skCaptionFontPlus() as LONG_PTR
declare function skFontPlus() as LONG_PTR
declare function skFontBoldPlus() as LONG_PTR
declare function skFontDlgPlus() as LONG_PTR
declare sub skSkinDisable(byval hWnd as HWND)
declare sub skSetZorder(byval hWnd as HWND, byval UseOrder as HWND)
declare function skGetHdcMemBmp(byval hOwner as HWND) as HDC
declare function skARGB(byval A as BYTE, byval R as BYTE, byval G as BYTE, byval B as BYTE) as DWORD
declare sub ComputeAspect(byval xPic as clong, byval yPic as clong, byval xCell as clong, byval yCell as clong, byref xP as clong, byref yP as clong, byref xS as clong, byref yS as clong)
declare sub skChildOffset(byval hWnd as HWND, byref ofX as clong, byref ofY as clong)
declare sub skSetLabelFont(byval hCtrl as HWND, byval zFontName as Wstring ptr, byval nFontSize as WORD, byval ARGBcolor as clong, byval nFontStyle as WORD, byval redraw as BOOL)
declare function skVersion() as Wstring ptr
declare function skSetAnchorCtrl(byval hWnd as HWND, byval AnchorMode as clong) as clong
declare function skUsingDWM() as clong
declare function skSkinFolder() as Wstring ptr
declare function skButImage(byval hOwner as HWND, byval hBitmap as HBITMAP, byval xLeft as clong, byval yLeft as clong, byval ButID as clong) as HWND
declare function skAuthor() as Wstring ptr
declare function skBorder(byval hWnd as HWND, byval x as clong, byval y as clong, byval xW as clong, byval yH as clong, byval nID as clong, byval nBorder as clong) as HWND
declare sub skSkinChildCtrl(byval hWnd as HWND, byval RedrawFlag as clong)
declare sub skSkinEnable(byval hWnd as HWND)
declare sub skRedrawMenuBar(byval hWnd as HWND)
declare function skGetMenu(byval hWnd as HWND) as HMENU
declare function skMenuContainer(byval hWnd as HWND) as HWND
declare sub skSkinWindowUpdate(byval hWnd as HWND, byval RedrawFlag as clong)
declare function skSkinWindow(byval hWnd as HWND, byval zSysButTip as Wstring ptr) as clong
declare function skCreateDW(byval hParent as HWND) as HWND
declare sub skDestroyDW(byref hDW as HWND)
declare function skDialogAlert(byval zCaption as Wstring ptr, byval zMessage as Wstring ptr, byval zButton as Wstring ptr) as clong
declare function skDialogError(byval zCaption as Wstring ptr, byval zMessage as Wstring ptr, byval zButton as Wstring ptr) as clong
declare function skDialogInfo(byval zCaption as Wstring ptr, byval zMessage as Wstring ptr, byval zButton as Wstring ptr) as clong
declare function skDialogYesNo(byval zCaption as Wstring ptr, byval zMessage as Wstring ptr, byval zButton as Wstring ptr) as clong
declare function skDialogInput(byval zCaption as Wstring ptr, byval zMessage as Wstring ptr, byval zButton as Wstring ptr) as Wstring ptr
declare function skButtonImage(byval hOwner as HWND, byval zFullpathImageName as Wstring ptr, byval x as clong, byval y as clong, byval ButID as clong, byval StateMax as clong) as HWND
declare function skPushButtonImage(byval hOwner as HWND, byval zFullpathImageName as Wstring ptr, byval zLabel as Wstring ptr, byval x as clong, byval y as clong, byval xW as clong, byval yH as clong, byval ButID as clong, byval Alignment as clong) as HWND
declare sub skSetToolTipText(byval hObj as HWND, byval zText as Wstring ptr)
declare function skGetToolTipText(byval hObj as HWND) as Wstring ptr
declare function skCreateToolTip(byval hObj as HWND, byval zText as Wstring ptr) as HWND
declare sub skRemoveToolTip(byval hObj as HWND)
declare function skClockCtrl(byval hOwner as HWND, byval zFullpathImageName as Wstring ptr, byval x as clong, byval y as clong, byval w as clong, byval h as clong, byval nID as clong, byval ARGB1 as clong, byval ARGB2 as clong, byval GMT as clong) as HWND
declare function skComputeAngleFromPoint(byval hWnd as HWND, byval mX as clong, byval mY as clong) as clong
declare sub skGaugeSetMinMax(byval hCtrl as HWND, byval nMin as clong, byval nMax as clong)
declare sub skGaugeGetMinMax(byval hCtrl as HWND, byref nMin as clong, byref nMax as clong)
declare sub skGaugeSetPos(byval hCtrl as HWND, byval nPos as clong, byval RedrawFlag as clong)
declare function skGaugeGetPos(byval hCtrl as HWND) as clong
declare function skKnobGauge(byval hOwner as HWND, byval zFullpathImageName as Wstring ptr, byval x as clong, byval y as clong, byval w as clong, byval h as clong, byval ButID as clong, byval MinValue as clong, byval MaxValue as clong, byval UsePos as clong, byval StateMax as clong) as HWND
declare function skStaticImage(byval hOwner as HWND, byval zFullpathImageName as Wstring ptr, byval x as clong, byval y as clong, byval w as clong, byval h as clong, byval nID as clong) as HWND
declare function skGetSystemMetrics(byval nMeasure as clong) as clong
declare function skSkiToDib(byval szFile as Wstring ptr, byref nReserved as clong) as HBITMAP
declare function skTerminateProcess(byval szModule as Wstring ptr) as clong
declare sub skPaintBrushBitmap(byval hDC as HDC, byval x as clong, byval y as clong, byval nWidth as clong, byval nHeight as clong, byval ARGBcolor as DWORD)
declare function skTrackbar(byval hOwner as HWND, byval zFullpathImageName as Wstring ptr, byval x as clong, byval y as clong, byval tW as clong, byval tH as clong, byval ButID as clong, byval tMin as clong, byval tMax as clong, byval tVal as clong, byval ARGBcolor as clong) as HWND
declare function skGetTrackValue(byval hWnd as HWND) as clong
declare sub skSetTrackValue(byval hWnd as HWND, byval tVal as clong)
declare sub skSetLabelColor(byval hCtrl as HWND, byval ARGBcolor as clong)
declare function skDoNotSkinPopupMenu(byval nOnOff as clong, byval RW as clong) as clong
declare sub skMaximize(byval hWnd as HWND)
declare sub skRestore(byval hWnd as HWND)
declare sub skRestoreCaption(byval hWnd as HWND, byval nBool as BOOL)
declare sub skSetTrackRange(byval hWnd as HWND, byval tMin as clong, byval tMax as clong)
declare sub skGetTrackRange(byval hWnd as HWND, byref tMin as clong, byref tMax as clong)
declare function skGetSysColor(byval nC as clong) as clong
declare function skLabel(byval hOwner as HWND, byval zFullpathBackground as Wstring ptr, byval zLabel as Wstring ptr, byval x as clong, byval y as clong, byval xW as clong, byval yH as clong, byval ButID as clong, byval Alignment as clong) as HWND
declare function skGetLabelFont(byval hCtrl as HWND) as LONG_PTR
declare function skGetSbVertBitmap() as HBITMAP
declare function skGetSbHorzBitmap() as HBITMAP
declare function skGetSbPictoBitmap() as HBITMAP
declare sub skPaintButton(byval hDC as HDC, byval nB as clong, byval hBmp as HBITMAP, byval nX as clong, byval nY as clong, byval xWidth as clong, byval yHeight as clong)
declare sub DrawPicto(byval hDC as HDC, byval nB as clong, byval nX as clong, byval nY as clong, byval xWidth as clong, byval yHeight as clong)
declare sub skSetSystemMetrics(byval nMeasure as clong, byval UseValue as clong)
declare sub skRedrawNcArea(byval hWnd as HWND)
declare function skMinTrackSizeX(byval hWnd as HWND) as clong
declare function skMinTrackSizeY(byval hWnd as HWND) as clong
declare function skInitEngine(byval zSkinFile as Wstring ptr, byval zUserKey as Wstring ptr) as clong
declare function skUseThisBackground(byval hWnd as HWND, byval zItem as Wstring ptr) as clong
declare sub skGetClientSize(byval hWnd as HWND, byref xClient as clong, byref yClient as clong, byref ClientWidth as clong, byref ClientHeight as clong)

const AT_TOP as const long = 1
const AT_LEFT as const long = 2
const AT_RIGHT as const long = 4
const AT_BOTTOM as const long = 8
const AT_TOPLEFT as const long = 3
const AT_TOPRIGHT as const long = 5
const AT_BOTTOMLEFT as const long = 10
const AT_BOTTOMRIGHT as const long = 12
const AT_ALL as const long = 15
const DOCK_TOP as const long = 256
const DOCK_LEFT as const long = 512
const DOCK_RIGHT as const long = 1024
const DOCK_BOTTOM as const long = 2048
const DOCK_FILL as const long = 3840
const CANCELMODE as const long = -1
const ANCHORMODE as const long = 32
const HOMOTHETIC as const long = 64

declare function skAnchorInit(byval hWnd as HWND) as BOOL
declare function skAnchorResize(byval hWnd as HWND, byval bRepaint as BOOL) as BOOL
declare function skAnchorID(byval hWnd as HWND, byval uID as UINT, byval uFlag as UINT) as BOOL
declare function skAnchorRemoveAll(byval hWnd as HWND) as BOOL
declare function skUseAnchorMode(byval hWnd as HWND, byval UseMode as clong) as clong
declare sub skSetListViewImage(byval FullPathName as Wstring ptr, byval ReadWriteFlag as clong)
declare sub skSetToolBarImage(byval FullPathName as Wstring ptr, byval ReadWriteFlag as clong)
declare sub skGetWindowSize(byval hWnd as HWND, byref x as clong, byref y as clong, byref WindowWidth as clong, byref WindowHeight as clong)
declare function skSkinChange(byval zSkinFile as Wstring ptr) as BOOL

const USE_PREV as const UINT = &h00A2
const USE_NEXT as const UINT = &h00A5
declare sub skChangeBackground(byval uMsg as UINT)
declare sub skAbout()
declare function skCaptionTip(byval hOwner as HWND, byval nID as clong, byval sText as Wstring ptr, byval rc as RECT) as HWND

end extern
