

This is for Codejock Xtreme ToolkitPro (http://www.codejock.com)
Note this is a partial wrapper not a complete one.
SkinFramework.pbi
Code: Select all
;======================================================================
; Library: SkinFramework.pbi
;
; Author: Toni6
; Co-Author:
; Offcut:
; Date: 30/12/2012
; Version: 1.0
; Target Compiler: PureBasic 5.00+
; Target OS: Windows
; License: Public
; Use at your own risk
;======================================================================
CompilerIf Defined(CODEJOCK_SKINFRAMEWORK_H,#PB_Constant) = 0
#CODEJOCK_SKINFRAMEWORK_H = 1
;-CONSTANTS
#CODEJOCK_PATH = "C:\Program Files (x86)\Codejock Software\MFC\Xtreme ToolkitPro v15.3.1\" ; <- you may need to change this!
CompilerIf #PB_Compiler_Unicode
#CODEJOCK_LIB = #CODEJOCK_PATH + "Lib\vc100\ToolkitPro1531vc100U.lib"
CompilerElse
#CODEJOCK_LIB = #CODEJOCK_PATH + "Lib\vc100\ToolkitPro1531vc100.lib"
CompilerEndIf
;-ENUMS
Enumeration 2 ; XTPSkinApplyOptions
#xtpSkinApplyMetrics = 1
#xtpSkinApplyFrame = 2
#xtpSkinApplyColors = 4
#xtpSkinApplyMenus = 8
EndEnumeration
;-IMPORTS
ImportC #CODEJOCK_LIB
XTPSkinManager() As "?XTPSkinManager@@YAPAVCXTPSkinManager@@XZ"
EndImport
Import #CODEJOCK_LIB ; __thiscall - *this goes to ecx
XTPSkinManager_ApplyColorFilter(clr.l) As "?ApplyColorFilter@CXTPSkinManager@@QAEXAAK@Z"
XTPSkinManager_ApplyWindow(hWnd.i) As "?ApplyWindow@CXTPSkinManager@@QAEXPAUHWND__@@@Z"
XTPSkinManager_EnableCurrentThread() As "?EnableCurrentThread@CXTPSkinManager@@QAEXXZ"
XTPSkinManager_EnableThemeDialogTexture.l(hWnd.i, dwFlags.l) As "?EnableThemeDialogTexture@CXTPSkinManager@@QAEJPAUHWND__@@K@Z"
CompilerIf #PB_Compiler_Unicode
XTPSkinManager_ExcludeModule(lpszModule.p-unicode) As "?ExcludeModule@CXTPSkinManager@@QAEXPB_W@Z"
CompilerElse
XTPSkinManager_ExcludeModule(lpszModule.p-ascii) As "?ExcludeModule@CXTPSkinManager@@QAEXPBD@Z"
CompilerEndIf
XTPSkinManager_FreeSkinData() As "?FreeSkinData@CXTPSkinManager@@IAEXXZ"
XTPSkinManager_GetApplyOptions.l() As "?GetApplyOptions@CXTPSkinManager@@QBEKXZ"
XTPSkinManager_GetAutoApplyNewThreads.l() As "?GetAutoApplyNewThreads@CXTPSkinManager@@QBEHXZ"
XTPSkinManager_GetAutoApplyNewWindows.l() As "?GetAutoApplyNewWindows@CXTPSkinManager@@QBEHXZ"
XTPSkinManager_GetThemeSysBool.l(iBoolId.l) As "?GetThemeSysBool@CXTPSkinManager@@QAEHH@Z"
XTPSkinManager_GetThemeSysColor.l(iColorId.l) As "?GetThemeSysColor@CXTPSkinManager@@QAEKH@Z"
CompilerIf #PB_Compiler_Unicode
XTPSkinManager_GetThemeSysFont.l(iFontId.l, *plf) As "?GetThemeSysFont@CXTPSkinManager@@QAEJHPAUtagLOGFONTW@@@Z"
CompilerElse
XTPSkinManager_GetThemeSysFont.l(iFontId.l, *plf) As "?GetThemeSysFont@CXTPSkinManager@@QAEJHPAUtagLOGFONTA@@@Z"
CompilerEndIf
XTPSkinManager_GetThemeSysSize.l(iSizeId.l) As "?GetThemeSysSize@CXTPSkinManager@@QAEHH@Z"
XTPSkinManager_IsColorFilterExists.l() As "?IsColorFilterExists@CXTPSkinManager@@QBEHXZ"
XTPSkinManager_IsComCtlV6.l() As "?IsComCtlV6@CXTPSkinManager@@QBEHXZ"
XTPSkinManager_IsEnabled.l() As "?IsEnabled@CXTPSkinManager@@QBEHXZ"
XTPSkinManager_IsWin9x.l() As "?IsWin9x@CXTPSkinManager@@QBEHXZ"
CompilerIf #PB_Compiler_Unicode
XTPSkinManager_LoadSkin.l(lpszResourcePath.p-unicode, lpszIniFileName.p-unicode) As "?LoadSkin@CXTPSkinManager@@QAEHPB_W0@Z"
CompilerElse
XTPSkinManager_LoadSkin.l(lpszResourcePath.p-ascii, lpszIniFileName.p-ascii) As "?LoadSkin@CXTPSkinManager@@QAEHPBD0@Z"
CompilerEndIf
XTPSkinManager_RedrawAllControls() As "?RedrawAllControls@CXTPSkinManager@@QAEXXZ"
XTPSkinManager_Remove(hWnd.i) As "?Remove@CXTPSkinManager@@QAEXPAUHWND__@@@Z"
XTPSkinManager_RemoveAll(bDetach.l = #True) As "?RemoveAll@CXTPSkinManager@@QAEXH@Z"
XTPSkinManager_RemoveColorFilters() As "?RemoveColorFilters@CXTPSkinManager@@QAEXXZ"
XTPSkinManager_SetApplyOptions(dwOptions.l) As "?SetApplyOptions@CXTPSkinManager@@QAEXK@Z"
XTPSkinManager_SetAutoApplyNewThreads(bAutoApply.l) As "?SetAutoApplyNewThreads@CXTPSkinManager@@QAEXH@Z"
XTPSkinManager_SetAutoApplyNewWindows(bAutoApply.l) As "?SetAutoApplyNewWindows@CXTPSkinManager@@QAEXH@Z"
EndImport
;-INTERFACES
Interface CSkinFramework
Free()
ApplyColorFilter(clr.l)
ApplyWindow(hWnd.i)
EnableCurrentThread()
EnableThemeDialogTexture.l(hWnd.i, dwFlags.l)
ExcludeModule(lpszModule.s)
FreeSkinData()
GetApplyOptions.l()
GetAutoApplyNewThreads.l()
GetAutoApplyNewWindows.l()
GetThemeSysBool.l(iBoolId.l)
GetThemeSysColor.l(iColorId.l)
GetThemeSysFont.l(iFontId.l, *plf)
GetThemeSysSize.l(iSizeId.l)
IsColorFilterExists.l()
IsComCtlV6.l()
IsEnabled.l()
IsWin9x.l()
LoadSkin.l(lpszResourcePath.s, lpszIniFileName.s = "")
RedrawAllControls()
Remove(hWnd.i)
RemoveAll(bDetach.l = #True)
RemoveColorFilters()
SetApplyOptions(dwOptions.l)
SetAutoApplyNewThreads(bAutoApply.l)
SetAutoApplyNewWindows(bAutoApply.l)
EndInterface
;- STRUCTURES
Structure _CSkinFramework
*vTable
*this.CSkinFramework
*pXTPSkinManager
EndStructure
;-=====================================================-
;-CONSTRUCTOR
;-=====================================================-
Procedure.i New_CSkinFramework()
Protected *obj._CSkinFramework
*obj = AllocateMemory(SizeOf(_CSkinFramework))
If *obj
InitializeStructure(*obj, _CSkinFramework)
*obj\vTable = ?vTable_CSkinFramework
*obj\this = *obj
*obj\pXTPSkinManager = XTPSkinManager()
EndIf
ProcedureReturn *obj
EndProcedure
;-=====================================================-
;-DESTRUCTOR
;-=====================================================-
Procedure CSkinFramework_Free(*this._CSkinFramework)
*this\this\SetAutoApplyNewThreads(0)
*this\this\SetAutoApplyNewWindows(0)
*this\this\RemoveAll()
*this\this\FreeSkinData()
*this\this\LoadSkin("")
ClearStructure(*this, _CSkinFramework)
FreeMemory(*this)
EndProcedure
;-=====================================================-
;-CLASS METHODS
;-=====================================================-
EnableASM
Procedure CSkinFramework_ApplyColorFilter(*this._CSkinFramework, clr.l)
MOV ECX, *this\pXTPSkinManager
XTPSkinManager_ApplyColorFilter(clr)
EndProcedure
Procedure CSkinFramework_ApplyWindow(*this._CSkinFramework, hWnd.i)
MOV ECX, *this\pXTPSkinManager
XTPSkinManager_ApplyWindow(hWnd)
EndProcedure
Procedure CSkinFramework_EnableCurrentThread(*this._CSkinFramework)
MOV ECX, *this\pXTPSkinManager
XTPSkinManager_EnableCurrentThread()
EndProcedure
Procedure.l CSkinFramework_EnableThemeDialogTexture(*this._CSkinFramework, hWnd.i, dwFlags.l)
Protected Result.l
MOV ECX, *this\pXTPSkinManager
Result = XTPSkinManager_EnableThemeDialogTexture(hWnd.i, dwFlags.l)
ProcedureReturn Result
EndProcedure
Procedure CSkinFramework_ExcludeModule(*this._CSkinFramework, lpszModule.s)
MOV ECX, *this\pXTPSkinManager
XTPSkinManager_ExcludeModule(lpszModule)
EndProcedure
Procedure CSkinFramework_FreeSkinData(*this._CSkinFramework)
MOV ECX, *this\pXTPSkinManager
XTPSkinManager_FreeSkinData()
EndProcedure
Procedure.l CSkinFramework_GetApplyOptions(*this._CSkinFramework)
Protected Result.l
MOV ECX, *this\pXTPSkinManager
Result = XTPSkinManager_GetApplyOptions()
ProcedureReturn Result
EndProcedure
Procedure.l CSkinFramework_GetAutoApplyNewThreads(*this._CSkinFramework)
Protected Result.l
MOV ECX, *this\pXTPSkinManager
Result = XTPSkinManager_GetAutoApplyNewThreads()
ProcedureReturn Result
EndProcedure
Procedure.l CSkinFramework_GetAutoApplyNewWindows(*this._CSkinFramework)
Protected Result.l
MOV ECX, *this\pXTPSkinManager
Result = XTPSkinManager_GetAutoApplyNewWindows()
ProcedureReturn Result
EndProcedure
Procedure.l CSkinFramework_GetThemeSysBool(*this._CSkinFramework, iBoolId.l)
Protected Result.l
MOV ECX, *this\pXTPSkinManager
Result = XTPSkinManager_GetThemeSysBool(iBoolId)
ProcedureReturn Result
EndProcedure
Procedure.l CSkinFramework_GetThemeSysColor(*this._CSkinFramework, iColorId.l)
Protected Result.l
MOV ECX, *this\pXTPSkinManager
Result = XTPSkinManager_GetThemeSysColor(iColorId)
ProcedureReturn Result
EndProcedure
Procedure.l CSkinFramework_GetThemeSysFont(*this._CSkinFramework, iFontId.l, *plf)
Protected Result.l
MOV ECX, *this\pXTPSkinManager
Result = XTPSkinManager_GetThemeSysFont(iFontId, *plf)
ProcedureReturn Result
EndProcedure
Procedure.l CSkinFramework_GetThemeSysSize(*this._CSkinFramework, iSizeId.l)
Protected Result.l
MOV ECX, *this\pXTPSkinManager
Result = XTPSkinManager_GetThemeSysSize(iSizeId)
ProcedureReturn Result
EndProcedure
Procedure.l CSkinFramework_IsColorFilterExists(*this._CSkinFramework)
Protected Result.l
MOV ECX, *this\pXTPSkinManager
Result = XTPSkinManager_IsColorFilterExists()
ProcedureReturn Result
EndProcedure
Procedure.l CSkinFramework_IsComCtlV6(*this._CSkinFramework)
Protected Result.l
MOV ECX, *this\pXTPSkinManager
Result = XTPSkinManager_IsComCtlV6()
ProcedureReturn Result
EndProcedure
Procedure.l CSkinFramework_IsEnabled(*this._CSkinFramework)
Protected Result.l
MOV ECX, *this\pXTPSkinManager
Result = XTPSkinManager_IsEnabled()
ProcedureReturn Result
EndProcedure
Procedure.l CSkinFramework_IsWin9x(*this._CSkinFramework)
Protected Result.l
MOV ECX, *this\pXTPSkinManager
Result = XTPSkinManager_IsWin9x()
ProcedureReturn Result
EndProcedure
Procedure.l CSkinFramework_LoadSkin(*this._CSkinFramework, lpszResourcePath.s, lpszIniFileName.s = "")
Protected Result.l
MOV ECX, *this\pXTPSkinManager
Result = XTPSkinManager_LoadSkin(lpszResourcePath, lpszIniFileName)
ProcedureReturn Result
EndProcedure
Procedure CSkinFramework_RedrawAllControls(*this._CSkinFramework)
MOV ECX, *this\pXTPSkinManager
XTPSkinManager_RedrawAllControls()
EndProcedure
Procedure CSkinFramework_Remove(*this._CSkinFramework, hWnd.i)
MOV ECX, *this\pXTPSkinManager
XTPSkinManager_Remove(hWnd)
EndProcedure
Procedure CSkinFramework_RemoveAll(*this._CSkinFramework, bDetach.l = #True)
MOV ECX, *this\pXTPSkinManager
XTPSkinManager_RemoveAll(bDetach)
EndProcedure
Procedure CSkinFramework_RemoveColorFilters(*this._CSkinFramework)
MOV ECX, *this\pXTPSkinManager
XTPSkinManager_RemoveColorFilters()
EndProcedure
Procedure CSkinFramework_SetApplyOptions(*this._CSkinFramework, dwOptions.l)
MOV ECX, *this\pXTPSkinManager
XTPSkinManager_SetApplyOptions(dwOptions)
EndProcedure
Procedure CSkinFramework_SetAutoApplyNewThreads(*this._CSkinFramework, bAutoApply.l)
MOV ECX, *this\pXTPSkinManager
XTPSkinManager_SetAutoApplyNewThreads(bAutoApply)
EndProcedure
Procedure CSkinFramework_SetAutoApplyNewWindows(*this._CSkinFramework, bAutoApply.l)
MOV ECX, *this\pXTPSkinManager
XTPSkinManager_SetAutoApplyNewWindows(bAutoApply)
EndProcedure
DisableASM
;-=====================================================-
;-VTABLE
;-=====================================================-
DataSection
vTable_CSkinFramework:
Data.i @CSkinFramework_Free()
Data.i @CSkinFramework_ApplyColorFilter()
Data.i @CSkinFramework_ApplyWindow()
Data.i @CSkinFramework_EnableCurrentThread()
Data.i @CSkinFramework_EnableThemeDialogTexture()
Data.i @CSkinFramework_ExcludeModule()
Data.i @CSkinFramework_FreeSkinData()
Data.i @CSkinFramework_GetApplyOptions()
Data.i @CSkinFramework_GetAutoApplyNewThreads()
Data.i @CSkinFramework_GetAutoApplyNewWindows()
Data.i @CSkinFramework_GetThemeSysBool()
Data.i @CSkinFramework_GetThemeSysColor()
Data.i @CSkinFramework_GetThemeSysFont()
Data.i @CSkinFramework_GetThemeSysSize()
Data.i @CSkinFramework_IsColorFilterExists()
Data.i @CSkinFramework_IsComCtlV6()
Data.i @CSkinFramework_IsEnabled()
Data.i @CSkinFramework_IsWin9x()
Data.i @CSkinFramework_LoadSkin()
Data.i @CSkinFramework_RedrawAllControls()
Data.i @CSkinFramework_Remove()
Data.i @CSkinFramework_RemoveAll()
Data.i @CSkinFramework_RemoveColorFilters()
Data.i @CSkinFramework_SetApplyOptions()
Data.i @CSkinFramework_SetAutoApplyNewThreads()
Data.i @CSkinFramework_SetAutoApplyNewWindows()
EndDataSection
CompilerEndIf
Code: Select all
XIncludeFile "..\SkinFramework.pbi"
Global Window_0
Global Button_0, Button_1, Text_0, String_0
Procedure InitWindow_0()
Window_0 = OpenWindow(#PB_Any, 0, 0, 600, 400, "", #PB_Window_SystemMenu)
Button_0 = ButtonGadget(#PB_Any, 20, 50, 170, 30, "Button A")
Button_1 = ButtonGadget(#PB_Any, 20, 90, 170, 30, "Button B")
Text_0 = TextGadget(#PB_Any, 230, 60, 140, 20, "Text 123456")
String_0 = StringGadget(#PB_Any, 230, 100, 180, 20, "write text here")
EndProcedure
Define Skin.CSkinFramework = New_CSkinFramework()
Skin\SetAutoApplyNewThreads(1)
Skin\SetAutoApplyNewWindows(1)
my_skin.s = "C:\Program Files (x86)\Codejock Software\MFC\Xtreme ToolkitPro v15.3.1\Utils\Styles\Office2007.cjstyles"
Skin\LoadSkin(my_skin, "")
InitWindow_0()
Repeat
event = WaitWindowEvent()
Until event = #PB_Event_CloseWindow
Example 2:
Code: Select all
XIncludeFile "..\SkinFramework.pbi"
Global Window_0
Global Frame3D_0, Button_1, Button_2, Option_0, Checkbox_0, Combo_1, ListIcon_0, ListView_0, ProgressBar_0, Hyperlink_0, ExplorerTree_0, String_0, Text_0, TrackBar_0, Tree_0, Spin_0, Scrollbar_0, IP_0, Text_1, Combo_Skin, Button_SelSkin
Procedure InitWindow_0()
Window_0 = OpenWindow(#PB_Any, 0, 0, 750, 540, "Codejock Skinframework Test", #PB_Window_SystemMenu)
Frame3D_0 = Frame3DGadget(#PB_Any, 10, 10, 290, 130, "MyFrame")
Button_1 = ButtonGadget(#PB_Any, 30, 50, 250, 30, "Normal")
Button_2 = ButtonGadget(#PB_Any, 30, 90, 250, 30, "Disabled")
DisableGadget(Button_2, 1)
Option_0 = OptionGadget(#PB_Any, 330, 20, 130, 20, "Radio")
Checkbox_0 = CheckBoxGadget(#PB_Any, 330, 60, 130, 20, "Checkbox")
Combo_1 = ComboBoxGadget(#PB_Any, 320, 100, 250, 20)
AddGadgetItem(Combo_1, -1, "item1")
AddGadgetItem(Combo_1, -1, "item2")
AddGadgetItem(Combo_1, -1, "item3")
ListIcon_0 = ListIconGadget(#PB_Any, 20, 200, 330, 190, "Column 1", 100)
AddGadgetColumn(ListIcon_0, 1, "Column 2", 100)
AddGadgetColumn(ListIcon_0, 2, "Column 3", 100)
AddGadgetItem(ListIcon_0, -1, "item1")
AddGadgetItem(ListIcon_0, -1, "item2")
AddGadgetItem(ListIcon_0, -1, "item3")
AddGadgetItem(ListIcon_0, -1, "item4")
ListView_0 = ListViewGadget(#PB_Any, 370, 200, 190, 190)
AddGadgetItem(ListView_0, -1, "item1")
AddGadgetItem(ListView_0, -1, "item2")
AddGadgetItem(ListView_0, -1, "item3")
ProgressBar_0 = ProgressBarGadget(#PB_Any, 320, 130, 250, 20, 50, 100)
Hyperlink_0 = HyperLinkGadget(#PB_Any, 320, 170, 160, 20, "www.purebasic.fr", 0)
ExplorerTree_0 = ExplorerTreeGadget(#PB_Any, 600, 200, 140, 190, "")
String_0 = StringGadget(#PB_Any, 20, 410, 170, 20, "Type your text here")
Text_0 = TextGadget(#PB_Any, 30, 450, 170, 20, "my text")
TrackBar_0 = TrackBarGadget(#PB_Any, 250, 410, 220, 20, 0, 0)
Tree_0 = TreeGadget(#PB_Any, 600, 10, 140, 180)
AddGadgetItem(Tree_0, -1, "tree item 1")
AddGadgetItem(Tree_0, -1, "tree item 2")
AddGadgetItem(Tree_0, -1, "tree item 3")
Spin_0 = SpinGadget(#PB_Any, 250, 450, 190, 20, 50, 100)
Scrollbar_0 = ScrollBarGadget(#PB_Any, 520, 410, 210, 20, 5, 100, 0)
IP_0 = IPAddressGadget(#PB_Any, 20, 160, 180, 20)
Text_1 = TextGadget(#PB_Any, 30, 500, 60, 20, "Skin:")
Combo_Skin = ComboBoxGadget(#PB_Any, 120, 500, 250, 20)
Button_SelSkin = ButtonGadget(#PB_Any, 400, 500, 210, 20, "Select Skin")
EndProcedure
Global NewList Skins.s()
Global Skin.CSkinFramework
Procedure LoadSkins()
Protected Directory.s = #CODEJOCK_PATH + "\Utils\Styles\"
If ExamineDirectory(0, Directory, "*.cjstyles")
While NextDirectoryEntry(0)
If DirectoryEntryType(0) = #PB_DirectoryEntry_File
EndIf
AddElement(Skins())
Skins() = Directory + DirectoryEntryName(0)
AddGadgetItem(Combo_Skin, -1, DirectoryEntryName(0))
Wend
FinishDirectory(0)
EndIf
SetGadgetState(Combo_Skin, 0)
EndProcedure
Procedure OnSelectSkin()
Protected index.l
index = GetGadgetState(Combo_Skin)
If Not index = -1
If SelectElement(Skins(), index)
If Not Skin\LoadSkin(Skins())
MessageRequester("Error", "Failed to load skin: "+Skins(),#MB_ICONERROR)
EndIf
EndIf
EndIf
EndProcedure
Procedure OnSelectSkinBox()
Protected Filename.s
Filename = OpenFileRequester("Select your skin...", "", "Skin File (*.cjstyles)|*.cjstyles", 0)
If Filename And FileSize(Filename) > -1
If Not Skin\LoadSkin(Filename)
MessageRequester("Error", "Failed to load skin: "+Filename,#MB_ICONERROR)
EndIf
EndIf
EndProcedure
Skin = New_CSkinFramework()
Skin\SetAutoApplyNewThreads(1)
Skin\SetAutoApplyNewWindows(1)
InitWindow_0()
LoadSkins()
Repeat
event = WaitWindowEvent()
If event = #PB_Event_Gadget
If EventGadget() = Combo_Skin
If EventType() = #PB_EventType_Change
OnSelectSkin()
EndIf
ElseIf EventGadget() = Button_SelSkin
If EventType() = #PB_EventType_LeftClick
OnSelectSkinBox()
EndIf
EndIf
EndIf
Until event = #PB_Event_CloseWindow
DLLs needed:
Code: Select all
Ansi: ToolkitPro1531vc100.dll
Unicode: ToolkitPro1531vc100U.dll