diff --git a/Tutorial/GacUI_ControlTemplate/BlackSkin/Main.cpp b/Tutorial/GacUI_ControlTemplate/BlackSkin/Main.cpp
index 184134ad..041c358c 100644
--- a/Tutorial/GacUI_ControlTemplate/BlackSkin/Main.cpp
+++ b/Tutorial/GacUI_ControlTemplate/BlackSkin/Main.cpp
@@ -1,12 +1,8 @@
#include "UI/FullControlTest/Source/Demo.h"
using namespace vl;
-using namespace vl::collections;
using namespace vl::stream;
-using namespace vl::reflection::description;
using namespace vl::presentation;
-using namespace vl::presentation::templates;
-using namespace vl::presentation::elements;
using namespace vl::presentation::controls;
#pragma comment(linker,"\"/manifestdependency:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
diff --git a/Tutorial/GacUI_ControlTemplate/GacUI_ControlTemplate.sln b/Tutorial/GacUI_ControlTemplate/GacUI_ControlTemplate.sln
index cbde5fe3..8db23c70 100644
--- a/Tutorial/GacUI_ControlTemplate/GacUI_ControlTemplate.sln
+++ b/Tutorial/GacUI_ControlTemplate/GacUI_ControlTemplate.sln
@@ -1,7 +1,7 @@
Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 14
-VisualStudioVersion = 14.0.25420.1
+# Visual Studio Version 16
+VisualStudioVersion = 16.0.31515.178
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "BlackSkin", "BlackSkin\BlackSkin.vcxproj", "{DCAB59C4-4394-4F79-8BE1-835B1313651B}"
EndProject
@@ -9,20 +9,36 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Lib", "Lib", "{A7FA6C2B-37E
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GacUILite", "..\Lib\GacUILite\GacUILite.vcxproj", "{96C559CA-9718-4BEC-A053-28A0AB6A8CA2}"
EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WindowSkin", "WindowSkin\WindowSkin.vcxproj", "{A152FCC6-E757-4690-9BCC-3BF062E5E1C3}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
+ Debug|x64 = Debug|x64
Release|Win32 = Release|Win32
+ Release|x64 = Release|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{DCAB59C4-4394-4F79-8BE1-835B1313651B}.Debug|Win32.ActiveCfg = Debug|Win32
{DCAB59C4-4394-4F79-8BE1-835B1313651B}.Debug|Win32.Build.0 = Debug|Win32
+ {DCAB59C4-4394-4F79-8BE1-835B1313651B}.Debug|x64.ActiveCfg = Debug|Win32
{DCAB59C4-4394-4F79-8BE1-835B1313651B}.Release|Win32.ActiveCfg = Release|Win32
{DCAB59C4-4394-4F79-8BE1-835B1313651B}.Release|Win32.Build.0 = Release|Win32
+ {DCAB59C4-4394-4F79-8BE1-835B1313651B}.Release|x64.ActiveCfg = Release|Win32
{96C559CA-9718-4BEC-A053-28A0AB6A8CA2}.Debug|Win32.ActiveCfg = Debug|Win32
{96C559CA-9718-4BEC-A053-28A0AB6A8CA2}.Debug|Win32.Build.0 = Debug|Win32
+ {96C559CA-9718-4BEC-A053-28A0AB6A8CA2}.Debug|x64.ActiveCfg = Debug|Win32
{96C559CA-9718-4BEC-A053-28A0AB6A8CA2}.Release|Win32.ActiveCfg = Release|Win32
{96C559CA-9718-4BEC-A053-28A0AB6A8CA2}.Release|Win32.Build.0 = Release|Win32
+ {96C559CA-9718-4BEC-A053-28A0AB6A8CA2}.Release|x64.ActiveCfg = Release|Win32
+ {A152FCC6-E757-4690-9BCC-3BF062E5E1C3}.Debug|Win32.ActiveCfg = Debug|Win32
+ {A152FCC6-E757-4690-9BCC-3BF062E5E1C3}.Debug|Win32.Build.0 = Debug|Win32
+ {A152FCC6-E757-4690-9BCC-3BF062E5E1C3}.Debug|x64.ActiveCfg = Debug|x64
+ {A152FCC6-E757-4690-9BCC-3BF062E5E1C3}.Debug|x64.Build.0 = Debug|x64
+ {A152FCC6-E757-4690-9BCC-3BF062E5E1C3}.Release|Win32.ActiveCfg = Release|Win32
+ {A152FCC6-E757-4690-9BCC-3BF062E5E1C3}.Release|Win32.Build.0 = Release|Win32
+ {A152FCC6-E757-4690-9BCC-3BF062E5E1C3}.Release|x64.ActiveCfg = Release|x64
+ {A152FCC6-E757-4690-9BCC-3BF062E5E1C3}.Release|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -30,4 +46,7 @@ Global
GlobalSection(NestedProjects) = preSolution
{96C559CA-9718-4BEC-A053-28A0AB6A8CA2} = {A7FA6C2B-37E0-4C2B-AC76-6E577A987492}
EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {8E6B233D-9958-466C-A2A8-FD25BC9EE36A}
+ EndGlobalSection
EndGlobal
diff --git a/Tutorial/GacUI_ControlTemplate/UIRes/WindowSkin.bin b/Tutorial/GacUI_ControlTemplate/UIRes/WindowSkin.bin
new file mode 100644
index 00000000..7078ecf3
Binary files /dev/null and b/Tutorial/GacUI_ControlTemplate/UIRes/WindowSkin.bin differ
diff --git a/Tutorial/GacUI_ControlTemplate/WindowSkin/Main.cpp b/Tutorial/GacUI_ControlTemplate/WindowSkin/Main.cpp
new file mode 100644
index 00000000..a2f5b632
--- /dev/null
+++ b/Tutorial/GacUI_ControlTemplate/WindowSkin/Main.cpp
@@ -0,0 +1,22 @@
+#include "UI/Source/Demo.h"
+
+using namespace vl;
+using namespace vl::stream;
+using namespace vl::presentation;
+using namespace vl::presentation::controls;
+
+#pragma comment(linker,"\"/manifestdependency:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
+
+void GuiMain()
+{
+ {
+ FileStream fileStream(L"../UIRes/WindowSkin.bin", FileStream::ReadOnly);
+ GetResourceManager()->LoadResourceOrPending(fileStream);
+ }
+ {
+ demo::MainWindow window;
+ window.ForceCalculateSizeImmediately();
+ window.MoveToScreenCenter();
+ GetApplication()->Run(&window);
+ }
+}
\ No newline at end of file
diff --git a/Tutorial/GacUI_ControlTemplate/WindowSkin/Screenshot.gif b/Tutorial/GacUI_ControlTemplate/WindowSkin/Screenshot.gif
new file mode 100644
index 00000000..b6bd326d
Binary files /dev/null and b/Tutorial/GacUI_ControlTemplate/WindowSkin/Screenshot.gif differ
diff --git a/Tutorial/GacUI_ControlTemplate/WindowSkin/UI/Resource.xml b/Tutorial/GacUI_ControlTemplate/WindowSkin/UI/Resource.xml
new file mode 100644
index 00000000..35bf54b4
--- /dev/null
+++ b/Tutorial/GacUI_ControlTemplate/WindowSkin/UI/Resource.xml
@@ -0,0 +1,44 @@
+
+
+
+
+ Source
+ ..\..\UIRes\WindowSkin.bin
+ Skins/DarkSkin/DarkSkin.h
+ Demo
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Tutorial/GacUI_ControlTemplate/WindowSkin/UI/Source/Demo.h b/Tutorial/GacUI_ControlTemplate/WindowSkin/UI/Source/Demo.h
new file mode 100644
index 00000000..3cd0ec2e
--- /dev/null
+++ b/Tutorial/GacUI_ControlTemplate/WindowSkin/UI/Source/Demo.h
@@ -0,0 +1,16 @@
+/***********************************************************************
+!!!!!! DO NOT MODIFY !!!!!!
+
+GacGen.exe Resource.xml
+
+This file is generated by Workflow compiler
+https://github.com/vczh-libraries
+***********************************************************************/
+
+#ifndef VCZH_WORKFLOW_COMPILER_GENERATED_DEMO
+#define VCZH_WORKFLOW_COMPILER_GENERATED_DEMO
+
+#include "DemoPartialClasses.h"
+#include "MainWindow.h"
+
+#endif
diff --git a/Tutorial/GacUI_ControlTemplate/WindowSkin/UI/Source/DemoPartialClasses.cpp b/Tutorial/GacUI_ControlTemplate/WindowSkin/UI/Source/DemoPartialClasses.cpp
new file mode 100644
index 00000000..e84b00d3
--- /dev/null
+++ b/Tutorial/GacUI_ControlTemplate/WindowSkin/UI/Source/DemoPartialClasses.cpp
@@ -0,0 +1,814 @@
+/***********************************************************************
+!!!!!! DO NOT MODIFY !!!!!!
+
+GacGen.exe Resource.xml
+
+This file is generated by Workflow compiler
+https://github.com/vczh-libraries
+***********************************************************************/
+
+#include "Demo.h"
+/* CodePack:BeginIgnore() */
+#ifndef VCZH_DEBUG_NO_REFLECTION
+/* CodePack:ConditionOff(VCZH_DEBUG_NO_REFLECTION, DemoReflection.h) */
+#include "DemoReflection.h"
+#endif
+/* CodePack:EndIgnore() */
+
+#if defined( _MSC_VER)
+#pragma warning(push)
+#pragma warning(disable:4250)
+#elif defined(__GNUC__)
+#pragma GCC diagnostic push
+#elif defined(__clang__)
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wparentheses-equality"
+#endif
+
+#define GLOBAL_SYMBOL ::vl_workflow_global::Demo::
+#define GLOBAL_NAME ::vl_workflow_global::Demo::Instance().
+#define GLOBAL_OBJ &::vl_workflow_global::Demo::Instance()
+
+/***********************************************************************
+Global Variables
+***********************************************************************/
+
+BEGIN_GLOBAL_STORAGE_CLASS(vl_workflow_global_Demo)
+ vl_workflow_global::Demo instance;
+ INITIALIZE_GLOBAL_STORAGE_CLASS
+ FINALIZE_GLOBAL_STORAGE_CLASS
+END_GLOBAL_STORAGE_CLASS(vl_workflow_global_Demo)
+
+namespace vl_workflow_global
+{
+/***********************************************************************
+Global Functions
+***********************************************************************/
+
+ Demo& Demo::Instance()
+ {
+ return Getvl_workflow_global_Demo().instance;
+ }
+
+/***********************************************************************
+Closures
+***********************************************************************/
+
+ //-------------------------------------------------------------------
+
+ __vwsnf2_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_::__vwsnf2_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_(::demo::MainWindowConstructor* __vwsnctorthis_0)
+ :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0))
+ {
+ }
+
+ void __vwsnf2_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const
+ {
+ auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->self)->GetMaximizedBox();
+ auto __vwsn_new_ = ::vl::__vwsn::Unbox(__vwsn_value_);
+ if ((__vwsn_old_ == __vwsn_new_))
+ {
+ return;
+ }
+ ::vl::__vwsn::This(__vwsnthis_0->self)->SetMaximizedBox(__vwsn_new_);
+ }
+
+ //-------------------------------------------------------------------
+
+ __vwsnf3_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_::__vwsnf3_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_(::demo::MainWindowConstructor* __vwsnctorthis_0)
+ :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0))
+ {
+ }
+
+ void __vwsnf3_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const
+ {
+ auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->self)->GetMinimizedBox();
+ auto __vwsn_new_ = ::vl::__vwsn::Unbox(__vwsn_value_);
+ if ((__vwsn_old_ == __vwsn_new_))
+ {
+ return;
+ }
+ ::vl::__vwsn::This(__vwsnthis_0->self)->SetMinimizedBox(__vwsn_new_);
+ }
+
+ //-------------------------------------------------------------------
+
+ __vwsnf4_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_::__vwsnf4_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_(::demo::MainWindowConstructor* __vwsnctorthis_0)
+ :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0))
+ {
+ }
+
+ void __vwsnf4_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const
+ {
+ auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->self)->GetBorder();
+ auto __vwsn_new_ = ::vl::__vwsn::Unbox(__vwsn_value_);
+ if ((__vwsn_old_ == __vwsn_new_))
+ {
+ return;
+ }
+ ::vl::__vwsn::This(__vwsnthis_0->self)->SetBorder(__vwsn_new_);
+ }
+
+ //-------------------------------------------------------------------
+
+ __vwsnf5_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_::__vwsnf5_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_(::demo::MainWindowConstructor* __vwsnctorthis_0)
+ :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0))
+ {
+ }
+
+ void __vwsnf5_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const
+ {
+ auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->self)->GetSizeBox();
+ auto __vwsn_new_ = ::vl::__vwsn::Unbox(__vwsn_value_);
+ if ((__vwsn_old_ == __vwsn_new_))
+ {
+ return;
+ }
+ ::vl::__vwsn::This(__vwsnthis_0->self)->SetSizeBox(__vwsn_new_);
+ }
+
+ //-------------------------------------------------------------------
+
+ __vwsnf6_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_::__vwsnf6_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_(::demo::MainWindowConstructor* __vwsnctorthis_0)
+ :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0))
+ {
+ }
+
+ void __vwsnf6_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const
+ {
+ auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->self)->GetIconVisible();
+ auto __vwsn_new_ = ::vl::__vwsn::Unbox(__vwsn_value_);
+ if ((__vwsn_old_ == __vwsn_new_))
+ {
+ return;
+ }
+ ::vl::__vwsn::This(__vwsnthis_0->self)->SetIconVisible(__vwsn_new_);
+ }
+
+ //-------------------------------------------------------------------
+
+ __vwsnf7_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_::__vwsnf7_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_(::demo::MainWindowConstructor* __vwsnctorthis_0)
+ :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0))
+ {
+ }
+
+ void __vwsnf7_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const
+ {
+ auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->self)->GetTitleBar();
+ auto __vwsn_new_ = ::vl::__vwsn::Unbox(__vwsn_value_);
+ if ((__vwsn_old_ == __vwsn_new_))
+ {
+ return;
+ }
+ ::vl::__vwsn::This(__vwsnthis_0->self)->SetTitleBar(__vwsn_new_);
+ }
+
+ //-------------------------------------------------------------------
+
+ __vwsno1_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_::__vwsno1_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_(::demo::MainWindow* __vwsnctor___vwsn_this_, ::demo::MainWindowConstructor* __vwsnctorthis_0)
+ :__vwsn_this_(__vwsnctor___vwsn_this_)
+ , __vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0))
+ {
+ }
+
+ void __vwsno1_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_::operator()(::vl::presentation::compositions::GuiGraphicsComposition* __vwsno_1, ::vl::presentation::compositions::GuiEventArgs* __vwsno_2) const
+ {
+ return ::vl::__vwsn::This(__vwsn_this_)->checkFrame_SelectionChanged(__vwsno_1, __vwsno_2);
+ }
+
+ //-------------------------------------------------------------------
+
+ __vwsnc1_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription::__vwsnc1_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription(::demo::MainWindowConstructor* __vwsnctorthis_0)
+ :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0))
+ {
+ this->__vwsn_bind_cache_0 = static_cast<::vl::presentation::controls::GuiSelectableButton*>(nullptr);
+ this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>();
+ this->__vwsn_bind_opened_ = false;
+ this->__vwsn_bind_closed_ = false;
+ }
+
+ void __vwsnc1_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_()
+ {
+ auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetSelected();
+ ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_));
+ }
+
+ void __vwsnc1_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1)
+ {
+ this->__vwsn_bind_activator_();
+ }
+
+ bool __vwsnc1_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription::Open()
+ {
+ if ((! __vwsn_bind_opened_))
+ {
+ (__vwsn_bind_opened_ = true);
+ (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->checkMax; } catch(...){ return static_cast<::vl::presentation::controls::GuiSelectableButton*>(nullptr); } }());
+ (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->SelectedChanged, ::vl::Func(this, &__vwsnc1_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }());
+ return true;
+ }
+ return false;
+ }
+
+ bool __vwsnc1_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription::Update()
+ {
+ if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_)))
+ {
+ this->__vwsn_bind_activator_();
+ return true;
+ }
+ return false;
+ }
+
+ bool __vwsnc1_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription::Close()
+ {
+ if ((! __vwsn_bind_closed_))
+ {
+ (__vwsn_bind_closed_ = true);
+ if (static_cast(__vwsn_bind_handler_0_0))
+ {
+ ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->SelectedChanged, __vwsn_bind_handler_0_0);
+ (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>());
+ }
+ (__vwsn_bind_cache_0 = static_cast<::vl::presentation::controls::GuiSelectableButton*>(nullptr));
+ (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>());
+ return true;
+ }
+ return false;
+ }
+
+ //-------------------------------------------------------------------
+
+ __vwsnc2_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription::__vwsnc2_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription(::demo::MainWindowConstructor* __vwsnctorthis_0)
+ :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0))
+ {
+ this->__vwsn_bind_cache_0 = static_cast<::vl::presentation::controls::GuiSelectableButton*>(nullptr);
+ this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>();
+ this->__vwsn_bind_opened_ = false;
+ this->__vwsn_bind_closed_ = false;
+ }
+
+ void __vwsnc2_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_()
+ {
+ auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetSelected();
+ ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_));
+ }
+
+ void __vwsnc2_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1)
+ {
+ this->__vwsn_bind_activator_();
+ }
+
+ bool __vwsnc2_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription::Open()
+ {
+ if ((! __vwsn_bind_opened_))
+ {
+ (__vwsn_bind_opened_ = true);
+ (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->checkMin; } catch(...){ return static_cast<::vl::presentation::controls::GuiSelectableButton*>(nullptr); } }());
+ (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->SelectedChanged, ::vl::Func(this, &__vwsnc2_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }());
+ return true;
+ }
+ return false;
+ }
+
+ bool __vwsnc2_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription::Update()
+ {
+ if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_)))
+ {
+ this->__vwsn_bind_activator_();
+ return true;
+ }
+ return false;
+ }
+
+ bool __vwsnc2_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription::Close()
+ {
+ if ((! __vwsn_bind_closed_))
+ {
+ (__vwsn_bind_closed_ = true);
+ if (static_cast(__vwsn_bind_handler_0_0))
+ {
+ ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->SelectedChanged, __vwsn_bind_handler_0_0);
+ (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>());
+ }
+ (__vwsn_bind_cache_0 = static_cast<::vl::presentation::controls::GuiSelectableButton*>(nullptr));
+ (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>());
+ return true;
+ }
+ return false;
+ }
+
+ //-------------------------------------------------------------------
+
+ __vwsnc3_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription::__vwsnc3_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription(::demo::MainWindowConstructor* __vwsnctorthis_0)
+ :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0))
+ {
+ this->__vwsn_bind_cache_0 = static_cast<::vl::presentation::controls::GuiSelectableButton*>(nullptr);
+ this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>();
+ this->__vwsn_bind_opened_ = false;
+ this->__vwsn_bind_closed_ = false;
+ }
+
+ void __vwsnc3_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_()
+ {
+ auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetSelected();
+ ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_));
+ }
+
+ void __vwsnc3_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1)
+ {
+ this->__vwsn_bind_activator_();
+ }
+
+ bool __vwsnc3_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription::Open()
+ {
+ if ((! __vwsn_bind_opened_))
+ {
+ (__vwsn_bind_opened_ = true);
+ (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->checkBorder; } catch(...){ return static_cast<::vl::presentation::controls::GuiSelectableButton*>(nullptr); } }());
+ (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->SelectedChanged, ::vl::Func(this, &__vwsnc3_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }());
+ return true;
+ }
+ return false;
+ }
+
+ bool __vwsnc3_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription::Update()
+ {
+ if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_)))
+ {
+ this->__vwsn_bind_activator_();
+ return true;
+ }
+ return false;
+ }
+
+ bool __vwsnc3_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription::Close()
+ {
+ if ((! __vwsn_bind_closed_))
+ {
+ (__vwsn_bind_closed_ = true);
+ if (static_cast(__vwsn_bind_handler_0_0))
+ {
+ ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->SelectedChanged, __vwsn_bind_handler_0_0);
+ (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>());
+ }
+ (__vwsn_bind_cache_0 = static_cast<::vl::presentation::controls::GuiSelectableButton*>(nullptr));
+ (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>());
+ return true;
+ }
+ return false;
+ }
+
+ //-------------------------------------------------------------------
+
+ __vwsnc4_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription::__vwsnc4_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription(::demo::MainWindowConstructor* __vwsnctorthis_0)
+ :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0))
+ {
+ this->__vwsn_bind_cache_0 = static_cast<::vl::presentation::controls::GuiSelectableButton*>(nullptr);
+ this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>();
+ this->__vwsn_bind_opened_ = false;
+ this->__vwsn_bind_closed_ = false;
+ }
+
+ void __vwsnc4_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_()
+ {
+ auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetSelected();
+ ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_));
+ }
+
+ void __vwsnc4_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1)
+ {
+ this->__vwsn_bind_activator_();
+ }
+
+ bool __vwsnc4_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription::Open()
+ {
+ if ((! __vwsn_bind_opened_))
+ {
+ (__vwsn_bind_opened_ = true);
+ (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->checkSizeBox; } catch(...){ return static_cast<::vl::presentation::controls::GuiSelectableButton*>(nullptr); } }());
+ (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->SelectedChanged, ::vl::Func(this, &__vwsnc4_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }());
+ return true;
+ }
+ return false;
+ }
+
+ bool __vwsnc4_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription::Update()
+ {
+ if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_)))
+ {
+ this->__vwsn_bind_activator_();
+ return true;
+ }
+ return false;
+ }
+
+ bool __vwsnc4_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription::Close()
+ {
+ if ((! __vwsn_bind_closed_))
+ {
+ (__vwsn_bind_closed_ = true);
+ if (static_cast(__vwsn_bind_handler_0_0))
+ {
+ ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->SelectedChanged, __vwsn_bind_handler_0_0);
+ (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>());
+ }
+ (__vwsn_bind_cache_0 = static_cast<::vl::presentation::controls::GuiSelectableButton*>(nullptr));
+ (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>());
+ return true;
+ }
+ return false;
+ }
+
+ //-------------------------------------------------------------------
+
+ __vwsnc5_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription::__vwsnc5_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription(::demo::MainWindowConstructor* __vwsnctorthis_0)
+ :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0))
+ {
+ this->__vwsn_bind_cache_0 = static_cast<::vl::presentation::controls::GuiSelectableButton*>(nullptr);
+ this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>();
+ this->__vwsn_bind_opened_ = false;
+ this->__vwsn_bind_closed_ = false;
+ }
+
+ void __vwsnc5_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_()
+ {
+ auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetSelected();
+ ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_));
+ }
+
+ void __vwsnc5_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1)
+ {
+ this->__vwsn_bind_activator_();
+ }
+
+ bool __vwsnc5_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription::Open()
+ {
+ if ((! __vwsn_bind_opened_))
+ {
+ (__vwsn_bind_opened_ = true);
+ (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->checkIcon; } catch(...){ return static_cast<::vl::presentation::controls::GuiSelectableButton*>(nullptr); } }());
+ (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->SelectedChanged, ::vl::Func(this, &__vwsnc5_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }());
+ return true;
+ }
+ return false;
+ }
+
+ bool __vwsnc5_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription::Update()
+ {
+ if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_)))
+ {
+ this->__vwsn_bind_activator_();
+ return true;
+ }
+ return false;
+ }
+
+ bool __vwsnc5_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription::Close()
+ {
+ if ((! __vwsn_bind_closed_))
+ {
+ (__vwsn_bind_closed_ = true);
+ if (static_cast(__vwsn_bind_handler_0_0))
+ {
+ ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->SelectedChanged, __vwsn_bind_handler_0_0);
+ (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>());
+ }
+ (__vwsn_bind_cache_0 = static_cast<::vl::presentation::controls::GuiSelectableButton*>(nullptr));
+ (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>());
+ return true;
+ }
+ return false;
+ }
+
+ //-------------------------------------------------------------------
+
+ __vwsnc6_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription::__vwsnc6_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription(::demo::MainWindowConstructor* __vwsnctorthis_0)
+ :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0))
+ {
+ this->__vwsn_bind_cache_0 = static_cast<::vl::presentation::controls::GuiSelectableButton*>(nullptr);
+ this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>();
+ this->__vwsn_bind_opened_ = false;
+ this->__vwsn_bind_closed_ = false;
+ }
+
+ void __vwsnc6_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_()
+ {
+ auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetSelected();
+ ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_));
+ }
+
+ void __vwsnc6_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1)
+ {
+ this->__vwsn_bind_activator_();
+ }
+
+ bool __vwsnc6_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription::Open()
+ {
+ if ((! __vwsn_bind_opened_))
+ {
+ (__vwsn_bind_opened_ = true);
+ (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->checkTitle; } catch(...){ return static_cast<::vl::presentation::controls::GuiSelectableButton*>(nullptr); } }());
+ (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->SelectedChanged, ::vl::Func(this, &__vwsnc6_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }());
+ return true;
+ }
+ return false;
+ }
+
+ bool __vwsnc6_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription::Update()
+ {
+ if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_)))
+ {
+ this->__vwsn_bind_activator_();
+ return true;
+ }
+ return false;
+ }
+
+ bool __vwsnc6_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription::Close()
+ {
+ if ((! __vwsn_bind_closed_))
+ {
+ (__vwsn_bind_closed_ = true);
+ if (static_cast(__vwsn_bind_handler_0_0))
+ {
+ ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->SelectedChanged, __vwsn_bind_handler_0_0);
+ (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>());
+ }
+ (__vwsn_bind_cache_0 = static_cast<::vl::presentation::controls::GuiSelectableButton*>(nullptr));
+ (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>());
+ return true;
+ }
+ return false;
+ }
+
+}
+
+/***********************************************************************
+Class (::demo::MainWindowConstructor)
+***********************************************************************/
+
+namespace demo
+{
+ void MainWindowConstructor::__vwsn_demo_MainWindow_Initialize(::demo::MainWindow* __vwsn_this_)
+ {
+ (this->self = __vwsn_this_);
+ {
+ ::vl::__vwsn::This(this->self)->SetClientSize([&](){ ::vl::presentation::Size __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(480); __vwsn_temp__.y = static_cast<::vl::vint>(320); return __vwsn_temp__; }());
+ }
+ {
+ ::vl::__vwsn::This(this->self)->SetText(::vl::WString(L"WindowSkin", false));
+ }
+ (this->__vwsn_precompile_0 = new ::vl::presentation::compositions::GuiStackComposition());
+ {
+ ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetPadding(static_cast<::vl::vint>(5));
+ }
+ {
+ ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetDirection(::vl::presentation::compositions::GuiStackComposition::Direction::Vertical);
+ }
+ {
+ ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(5); __vwsn_temp__.top = static_cast<::vl::vint>(5); __vwsn_temp__.right = static_cast<::vl::vint>(5); __vwsn_temp__.bottom = static_cast<::vl::vint>(5); return __vwsn_temp__; }());
+ }
+ {
+ ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren);
+ }
+ (this->__vwsn_precompile_1 = new ::vl::presentation::compositions::GuiStackItemComposition());
+ {
+ (this->checkFrame = new ::vl::presentation::controls::GuiSelectableButton(::vl::presentation::theme::ThemeName::CheckBox));
+ }
+ {
+ ::vl::__vwsn::This(this->checkFrame)->SetSelected(true);
+ }
+ {
+ ::vl::__vwsn::This(this->checkFrame)->SetText(::vl::WString(L"Customized Frame", false));
+ }
+ {
+ ::vl::__vwsn::This(this->__vwsn_precompile_1)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->checkFrame)->GetBoundsComposition()));
+ }
+ {
+ ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_1));
+ }
+ (this->__vwsn_precompile_2 = new ::vl::presentation::compositions::GuiStackItemComposition());
+ {
+ (this->checkMax = new ::vl::presentation::controls::GuiSelectableButton(::vl::presentation::theme::ThemeName::CheckBox));
+ }
+ {
+ ::vl::__vwsn::This(this->checkMax)->SetSelected(true);
+ }
+ {
+ ::vl::__vwsn::This(this->checkMax)->SetText(::vl::WString(L"MaximizedBox", false));
+ }
+ {
+ ::vl::__vwsn::This(this->__vwsn_precompile_2)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->checkMax)->GetBoundsComposition()));
+ }
+ {
+ ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_2));
+ }
+ (this->__vwsn_precompile_3 = new ::vl::presentation::compositions::GuiStackItemComposition());
+ {
+ (this->checkMin = new ::vl::presentation::controls::GuiSelectableButton(::vl::presentation::theme::ThemeName::CheckBox));
+ }
+ {
+ ::vl::__vwsn::This(this->checkMin)->SetSelected(true);
+ }
+ {
+ ::vl::__vwsn::This(this->checkMin)->SetText(::vl::WString(L"MinimizedBox", false));
+ }
+ {
+ ::vl::__vwsn::This(this->__vwsn_precompile_3)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->checkMin)->GetBoundsComposition()));
+ }
+ {
+ ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_3));
+ }
+ (this->__vwsn_precompile_4 = new ::vl::presentation::compositions::GuiStackItemComposition());
+ {
+ (this->checkBorder = new ::vl::presentation::controls::GuiSelectableButton(::vl::presentation::theme::ThemeName::CheckBox));
+ }
+ {
+ ::vl::__vwsn::This(this->checkBorder)->SetSelected(true);
+ }
+ {
+ ::vl::__vwsn::This(this->checkBorder)->SetText(::vl::WString(L"Border", false));
+ }
+ {
+ ::vl::__vwsn::This(this->__vwsn_precompile_4)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->checkBorder)->GetBoundsComposition()));
+ }
+ {
+ ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_4));
+ }
+ (this->__vwsn_precompile_5 = new ::vl::presentation::compositions::GuiStackItemComposition());
+ {
+ (this->checkSizeBox = new ::vl::presentation::controls::GuiSelectableButton(::vl::presentation::theme::ThemeName::CheckBox));
+ }
+ {
+ ::vl::__vwsn::This(this->checkSizeBox)->SetSelected(true);
+ }
+ {
+ ::vl::__vwsn::This(this->checkSizeBox)->SetText(::vl::WString(L"SizeBox", false));
+ }
+ {
+ ::vl::__vwsn::This(this->__vwsn_precompile_5)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->checkSizeBox)->GetBoundsComposition()));
+ }
+ {
+ ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_5));
+ }
+ (this->__vwsn_precompile_6 = new ::vl::presentation::compositions::GuiStackItemComposition());
+ {
+ (this->checkIcon = new ::vl::presentation::controls::GuiSelectableButton(::vl::presentation::theme::ThemeName::CheckBox));
+ }
+ {
+ ::vl::__vwsn::This(this->checkIcon)->SetSelected(true);
+ }
+ {
+ ::vl::__vwsn::This(this->checkIcon)->SetText(::vl::WString(L"IconVisible", false));
+ }
+ {
+ ::vl::__vwsn::This(this->__vwsn_precompile_6)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->checkIcon)->GetBoundsComposition()));
+ }
+ {
+ ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_6));
+ }
+ (this->__vwsn_precompile_7 = new ::vl::presentation::compositions::GuiStackItemComposition());
+ {
+ (this->checkTitle = new ::vl::presentation::controls::GuiSelectableButton(::vl::presentation::theme::ThemeName::CheckBox));
+ }
+ {
+ ::vl::__vwsn::This(this->checkTitle)->SetSelected(true);
+ }
+ {
+ ::vl::__vwsn::This(this->checkTitle)->SetText(::vl::WString(L"TitleBar", false));
+ }
+ {
+ ::vl::__vwsn::This(this->__vwsn_precompile_7)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->checkTitle)->GetBoundsComposition()));
+ }
+ {
+ ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_7));
+ }
+ {
+ ::vl::__vwsn::This(::vl::__vwsn::This(this->self)->GetContainerComposition())->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_0));
+ }
+ {
+ ::vl::__vwsn::EventAttach(::vl::__vwsn::This(this->checkFrame)->SelectedChanged, LAMBDA(::vl_workflow_global::__vwsno1_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_(__vwsn_this_, this)));
+ }
+ {
+ auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc1_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription(this));
+ ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf2_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_(this)));
+ ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_);
+ }
+ {
+ auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc2_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription(this));
+ ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf3_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_(this)));
+ ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_);
+ }
+ {
+ auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc3_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription(this));
+ ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf4_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_(this)));
+ ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_);
+ }
+ {
+ auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc4_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription(this));
+ ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf5_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_(this)));
+ ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_);
+ }
+ {
+ auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc5_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription(this));
+ ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf6_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_(this)));
+ ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_);
+ }
+ {
+ auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc6_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription(this));
+ ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, LAMBDA(::vl_workflow_global::__vwsnf7_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_(this)));
+ ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_);
+ }
+ }
+
+ MainWindowConstructor::MainWindowConstructor()
+ : self(static_cast<::demo::MainWindow*>(nullptr))
+ , checkFrame(static_cast<::vl::presentation::controls::GuiSelectableButton*>(nullptr))
+ , checkMax(static_cast<::vl::presentation::controls::GuiSelectableButton*>(nullptr))
+ , checkMin(static_cast<::vl::presentation::controls::GuiSelectableButton*>(nullptr))
+ , checkBorder(static_cast<::vl::presentation::controls::GuiSelectableButton*>(nullptr))
+ , checkSizeBox(static_cast<::vl::presentation::controls::GuiSelectableButton*>(nullptr))
+ , checkIcon(static_cast<::vl::presentation::controls::GuiSelectableButton*>(nullptr))
+ , checkTitle(static_cast<::vl::presentation::controls::GuiSelectableButton*>(nullptr))
+ , __vwsn_precompile_0(static_cast<::vl::presentation::compositions::GuiStackComposition*>(nullptr))
+ , __vwsn_precompile_1(static_cast<::vl::presentation::compositions::GuiStackItemComposition*>(nullptr))
+ , __vwsn_precompile_2(static_cast<::vl::presentation::compositions::GuiStackItemComposition*>(nullptr))
+ , __vwsn_precompile_3(static_cast<::vl::presentation::compositions::GuiStackItemComposition*>(nullptr))
+ , __vwsn_precompile_4(static_cast<::vl::presentation::compositions::GuiStackItemComposition*>(nullptr))
+ , __vwsn_precompile_5(static_cast<::vl::presentation::compositions::GuiStackItemComposition*>(nullptr))
+ , __vwsn_precompile_6(static_cast<::vl::presentation::compositions::GuiStackItemComposition*>(nullptr))
+ , __vwsn_precompile_7(static_cast<::vl::presentation::compositions::GuiStackItemComposition*>(nullptr))
+ {
+ }
+
+/***********************************************************************
+Class (::demo::SystemFrameWindowTemplateConstructor)
+***********************************************************************/
+
+ void SystemFrameWindowTemplateConstructor::__vwsn_demo_SystemFrameWindowTemplate_Initialize(::demo::SystemFrameWindowTemplate* __vwsn_this_)
+ {
+ (this->__vwsn_precompile_0 = __vwsn_this_);
+ {
+ ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren);
+ }
+ {
+ ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetCustomFrameEnabled(false);
+ }
+ (this->__vwsn_precompile_1 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBackgroundElement>()));
+ {
+ ::vl::__vwsn::This(this->__vwsn_precompile_1.Obj())->SetColor(::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString(L"#2D2D30", false)));
+ }
+ {
+ ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_1));
+ }
+ (this->container = new ::vl::presentation::compositions::GuiBoundsComposition());
+ {
+ ::vl::__vwsn::This(this->container)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }());
+ }
+ {
+ ::vl::__vwsn::This(this->container)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren);
+ }
+ {
+ ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->container));
+ }
+ {
+ ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetContainerComposition(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->container));
+ }
+ }
+
+ SystemFrameWindowTemplateConstructor::SystemFrameWindowTemplateConstructor()
+ : container(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr))
+ , __vwsn_precompile_0(static_cast<::demo::SystemFrameWindowTemplate*>(nullptr))
+ , __vwsn_precompile_1(::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>())
+ {
+ }
+
+/***********************************************************************
+Class (::demo::SystemFrameWindowTemplate)
+***********************************************************************/
+
+ SystemFrameWindowTemplate::SystemFrameWindowTemplate()
+ {
+ auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString(L"demo::SystemFrameWindowTemplate", false));
+ auto __vwsn_resolver_ = ::vl::Ptr<::vl::presentation::GuiResourcePathResolver>(new ::vl::presentation::GuiResourcePathResolver(__vwsn_resource_, ::vl::__vwsn::This(__vwsn_resource_.Obj())->GetWorkingDirectory()));
+ ::vl::__vwsn::This(this)->SetResourceResolver(__vwsn_resolver_);
+ ::vl::__vwsn::This(this)->__vwsn_demo_SystemFrameWindowTemplate_Initialize(this);
+ }
+
+ SystemFrameWindowTemplate::~SystemFrameWindowTemplate()
+ {
+ this->FinalizeInstanceRecursively(static_cast<::vl::presentation::templates::GuiTemplate*>(this));
+ }
+
+}
+#undef GLOBAL_SYMBOL
+#undef GLOBAL_NAME
+#undef GLOBAL_OBJ
+
+#if defined( _MSC_VER)
+#pragma warning(pop)
+#elif defined(__GNUC__)
+#pragma GCC diagnostic pop
+#elif defined(__clang__)
+#pragma clang diagnostic pop
+#endif
diff --git a/Tutorial/GacUI_ControlTemplate/WindowSkin/UI/Source/DemoPartialClasses.h b/Tutorial/GacUI_ControlTemplate/WindowSkin/UI/Source/DemoPartialClasses.h
new file mode 100644
index 00000000..80845576
--- /dev/null
+++ b/Tutorial/GacUI_ControlTemplate/WindowSkin/UI/Source/DemoPartialClasses.h
@@ -0,0 +1,313 @@
+/***********************************************************************
+!!!!!! DO NOT MODIFY !!!!!!
+
+GacGen.exe Resource.xml
+
+This file is generated by Workflow compiler
+https://github.com/vczh-libraries
+***********************************************************************/
+
+#ifndef VCZH_WORKFLOW_COMPILER_GENERATED_DEMOPARTIALCLASSES
+#define VCZH_WORKFLOW_COMPILER_GENERATED_DEMOPARTIALCLASSES
+
+#include "Skins/DarkSkin/DarkSkin.h"
+
+#if defined( _MSC_VER)
+#pragma warning(push)
+#pragma warning(disable:4250)
+#elif defined(__GNUC__)
+#pragma GCC diagnostic push
+#elif defined(__clang__)
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wparentheses-equality"
+#endif
+
+namespace vl_workflow_global
+{
+ struct __vwsnf2_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_;
+ struct __vwsnf3_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_;
+ struct __vwsnf4_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_;
+ struct __vwsnf5_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_;
+ struct __vwsnf6_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_;
+ struct __vwsnf7_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_;
+ struct __vwsno1_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_;
+ class __vwsnc1_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription;
+ class __vwsnc2_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription;
+ class __vwsnc3_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription;
+ class __vwsnc4_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription;
+ class __vwsnc5_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription;
+ class __vwsnc6_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription;
+}
+
+namespace demo
+{
+ class MainWindowConstructor;
+ class MainWindow;
+ class SystemFrameWindowTemplateConstructor;
+ class SystemFrameWindowTemplate;
+
+ class MainWindowConstructor : public ::vl::Object, public ::vl::reflection::Description
+ {
+ friend class ::vl_workflow_global::__vwsnc1_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription;
+ friend class ::vl_workflow_global::__vwsnc2_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription;
+ friend class ::vl_workflow_global::__vwsnc3_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription;
+ friend class ::vl_workflow_global::__vwsnc4_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription;
+ friend class ::vl_workflow_global::__vwsnc5_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription;
+ friend class ::vl_workflow_global::__vwsnc6_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription;
+ friend struct ::vl_workflow_global::__vwsnf2_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_;
+ friend struct ::vl_workflow_global::__vwsnf3_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_;
+ friend struct ::vl_workflow_global::__vwsnf4_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_;
+ friend struct ::vl_workflow_global::__vwsnf5_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_;
+ friend struct ::vl_workflow_global::__vwsnf6_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_;
+ friend struct ::vl_workflow_global::__vwsnf7_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_;
+ friend struct ::vl_workflow_global::__vwsno1_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_;
+#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA
+ friend struct ::vl::reflection::description::CustomTypeDescriptorSelector;
+#endif
+ protected:
+ ::demo::MainWindow* self;
+ ::vl::presentation::controls::GuiSelectableButton* checkFrame;
+ ::vl::presentation::controls::GuiSelectableButton* checkMax;
+ ::vl::presentation::controls::GuiSelectableButton* checkMin;
+ ::vl::presentation::controls::GuiSelectableButton* checkBorder;
+ ::vl::presentation::controls::GuiSelectableButton* checkSizeBox;
+ ::vl::presentation::controls::GuiSelectableButton* checkIcon;
+ ::vl::presentation::controls::GuiSelectableButton* checkTitle;
+ ::vl::presentation::compositions::GuiStackComposition* __vwsn_precompile_0;
+ ::vl::presentation::compositions::GuiStackItemComposition* __vwsn_precompile_1;
+ ::vl::presentation::compositions::GuiStackItemComposition* __vwsn_precompile_2;
+ ::vl::presentation::compositions::GuiStackItemComposition* __vwsn_precompile_3;
+ ::vl::presentation::compositions::GuiStackItemComposition* __vwsn_precompile_4;
+ ::vl::presentation::compositions::GuiStackItemComposition* __vwsn_precompile_5;
+ ::vl::presentation::compositions::GuiStackItemComposition* __vwsn_precompile_6;
+ ::vl::presentation::compositions::GuiStackItemComposition* __vwsn_precompile_7;
+ void __vwsn_demo_MainWindow_Initialize(::demo::MainWindow* __vwsn_this_);
+ public:
+ MainWindowConstructor();
+ };
+
+ class SystemFrameWindowTemplateConstructor : public ::vl::Object, public ::vl::reflection::Description
+ {
+#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA
+ friend struct ::vl::reflection::description::CustomTypeDescriptorSelector;
+#endif
+ protected:
+ ::vl::presentation::compositions::GuiBoundsComposition* container;
+ ::demo::SystemFrameWindowTemplate* __vwsn_precompile_0;
+ ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement> __vwsn_precompile_1;
+ void __vwsn_demo_SystemFrameWindowTemplate_Initialize(::demo::SystemFrameWindowTemplate* __vwsn_this_);
+ public:
+ SystemFrameWindowTemplateConstructor();
+ };
+
+ class SystemFrameWindowTemplate : public ::vl::presentation::templates::GuiWindowTemplate, public ::demo::SystemFrameWindowTemplateConstructor, public ::vl::reflection::Description
+ {
+ friend class ::demo::SystemFrameWindowTemplateConstructor;
+#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA
+ friend struct ::vl::reflection::description::CustomTypeDescriptorSelector;
+#endif
+ public:
+ SystemFrameWindowTemplate();
+ ~SystemFrameWindowTemplate();
+ };
+
+}
+/***********************************************************************
+Global Variables and Functions
+***********************************************************************/
+
+namespace vl_workflow_global
+{
+ class Demo
+ {
+ public:
+
+ static Demo& Instance();
+ };
+
+/***********************************************************************
+Closures
+***********************************************************************/
+
+ struct __vwsnf2_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_
+ {
+ ::demo::MainWindowConstructor* __vwsnthis_0;
+
+ __vwsnf2_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_(::demo::MainWindowConstructor* __vwsnctorthis_0);
+
+ void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const;
+ };
+
+ struct __vwsnf3_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_
+ {
+ ::demo::MainWindowConstructor* __vwsnthis_0;
+
+ __vwsnf3_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_(::demo::MainWindowConstructor* __vwsnctorthis_0);
+
+ void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const;
+ };
+
+ struct __vwsnf4_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_
+ {
+ ::demo::MainWindowConstructor* __vwsnthis_0;
+
+ __vwsnf4_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_(::demo::MainWindowConstructor* __vwsnctorthis_0);
+
+ void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const;
+ };
+
+ struct __vwsnf5_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_
+ {
+ ::demo::MainWindowConstructor* __vwsnthis_0;
+
+ __vwsnf5_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_(::demo::MainWindowConstructor* __vwsnctorthis_0);
+
+ void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const;
+ };
+
+ struct __vwsnf6_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_
+ {
+ ::demo::MainWindowConstructor* __vwsnthis_0;
+
+ __vwsnf6_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_(::demo::MainWindowConstructor* __vwsnctorthis_0);
+
+ void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const;
+ };
+
+ struct __vwsnf7_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_
+ {
+ ::demo::MainWindowConstructor* __vwsnthis_0;
+
+ __vwsnf7_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_(::demo::MainWindowConstructor* __vwsnctorthis_0);
+
+ void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const;
+ };
+
+ struct __vwsno1_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_
+ {
+ ::demo::MainWindow* __vwsn_this_;
+ ::demo::MainWindowConstructor* __vwsnthis_0;
+
+ __vwsno1_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_(::demo::MainWindow* __vwsnctor___vwsn_this_, ::demo::MainWindowConstructor* __vwsnctorthis_0);
+
+ void operator()(::vl::presentation::compositions::GuiGraphicsComposition* __vwsno_1, ::vl::presentation::compositions::GuiEventArgs* __vwsno_2) const;
+ };
+
+ class __vwsnc1_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription
+ {
+ public:
+ ::demo::MainWindowConstructor* __vwsnthis_0;
+
+ __vwsnc1_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription(::demo::MainWindowConstructor* __vwsnctorthis_0);
+
+ ::vl::presentation::controls::GuiSelectableButton* __vwsn_bind_cache_0 = nullptr;
+ ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0;
+ bool __vwsn_bind_opened_ = false;
+ bool __vwsn_bind_closed_ = false;
+ void __vwsn_bind_activator_();
+ void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1);
+ bool Open() override;
+ bool Update() override;
+ bool Close() override;
+ };
+
+ class __vwsnc2_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription
+ {
+ public:
+ ::demo::MainWindowConstructor* __vwsnthis_0;
+
+ __vwsnc2_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription(::demo::MainWindowConstructor* __vwsnctorthis_0);
+
+ ::vl::presentation::controls::GuiSelectableButton* __vwsn_bind_cache_0 = nullptr;
+ ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0;
+ bool __vwsn_bind_opened_ = false;
+ bool __vwsn_bind_closed_ = false;
+ void __vwsn_bind_activator_();
+ void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1);
+ bool Open() override;
+ bool Update() override;
+ bool Close() override;
+ };
+
+ class __vwsnc3_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription
+ {
+ public:
+ ::demo::MainWindowConstructor* __vwsnthis_0;
+
+ __vwsnc3_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription(::demo::MainWindowConstructor* __vwsnctorthis_0);
+
+ ::vl::presentation::controls::GuiSelectableButton* __vwsn_bind_cache_0 = nullptr;
+ ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0;
+ bool __vwsn_bind_opened_ = false;
+ bool __vwsn_bind_closed_ = false;
+ void __vwsn_bind_activator_();
+ void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1);
+ bool Open() override;
+ bool Update() override;
+ bool Close() override;
+ };
+
+ class __vwsnc4_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription
+ {
+ public:
+ ::demo::MainWindowConstructor* __vwsnthis_0;
+
+ __vwsnc4_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription(::demo::MainWindowConstructor* __vwsnctorthis_0);
+
+ ::vl::presentation::controls::GuiSelectableButton* __vwsn_bind_cache_0 = nullptr;
+ ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0;
+ bool __vwsn_bind_opened_ = false;
+ bool __vwsn_bind_closed_ = false;
+ void __vwsn_bind_activator_();
+ void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1);
+ bool Open() override;
+ bool Update() override;
+ bool Close() override;
+ };
+
+ class __vwsnc5_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription
+ {
+ public:
+ ::demo::MainWindowConstructor* __vwsnthis_0;
+
+ __vwsnc5_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription(::demo::MainWindowConstructor* __vwsnctorthis_0);
+
+ ::vl::presentation::controls::GuiSelectableButton* __vwsn_bind_cache_0 = nullptr;
+ ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0;
+ bool __vwsn_bind_opened_ = false;
+ bool __vwsn_bind_closed_ = false;
+ void __vwsn_bind_activator_();
+ void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1);
+ bool Open() override;
+ bool Update() override;
+ bool Close() override;
+ };
+
+ class __vwsnc6_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription
+ {
+ public:
+ ::demo::MainWindowConstructor* __vwsnthis_0;
+
+ __vwsnc6_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription(::demo::MainWindowConstructor* __vwsnctorthis_0);
+
+ ::vl::presentation::controls::GuiSelectableButton* __vwsn_bind_cache_0 = nullptr;
+ ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0;
+ bool __vwsn_bind_opened_ = false;
+ bool __vwsn_bind_closed_ = false;
+ void __vwsn_bind_activator_();
+ void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1);
+ bool Open() override;
+ bool Update() override;
+ bool Close() override;
+ };
+}
+
+#if defined( _MSC_VER)
+#pragma warning(pop)
+#elif defined(__GNUC__)
+#pragma GCC diagnostic pop
+#elif defined(__clang__)
+#pragma clang diagnostic pop
+#endif
+
+#endif
diff --git a/Tutorial/GacUI_ControlTemplate/WindowSkin/UI/Source/DemoReflection.cpp b/Tutorial/GacUI_ControlTemplate/WindowSkin/UI/Source/DemoReflection.cpp
new file mode 100644
index 00000000..935fc971
--- /dev/null
+++ b/Tutorial/GacUI_ControlTemplate/WindowSkin/UI/Source/DemoReflection.cpp
@@ -0,0 +1,123 @@
+/***********************************************************************
+!!!!!! DO NOT MODIFY !!!!!!
+
+GacGen.exe Resource.xml
+
+This file is generated by Workflow compiler
+https://github.com/vczh-libraries
+***********************************************************************/
+
+#include "DemoReflection.h"
+
+#if defined( _MSC_VER)
+#pragma warning(push)
+#pragma warning(disable:4250)
+#elif defined(__GNUC__)
+#pragma GCC diagnostic push
+#elif defined(__clang__)
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wparentheses-equality"
+#endif
+
+/***********************************************************************
+Reflection
+***********************************************************************/
+
+namespace vl
+{
+ namespace reflection
+ {
+ namespace description
+ {
+#ifndef VCZH_DEBUG_NO_REFLECTION
+ IMPL_CPP_TYPE_INFO(demo::MainWindow)
+ IMPL_CPP_TYPE_INFO(demo::MainWindowConstructor)
+ IMPL_CPP_TYPE_INFO(demo::SystemFrameWindowTemplate)
+ IMPL_CPP_TYPE_INFO(demo::SystemFrameWindowTemplateConstructor)
+
+#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA
+#define _ ,
+ BEGIN_CLASS_MEMBER(::demo::MainWindow)
+ CLASS_MEMBER_BASE(::vl::presentation::controls::GuiWindow)
+ CLASS_MEMBER_BASE(::demo::MainWindowConstructor)
+ CLASS_MEMBER_CONSTRUCTOR(::demo::MainWindow*(), NO_PARAMETER)
+ CLASS_MEMBER_METHOD(checkFrame_SelectionChanged, { L"sender" _ L"arguments" })
+ END_CLASS_MEMBER(::demo::MainWindow)
+
+ BEGIN_CLASS_MEMBER(::demo::MainWindowConstructor)
+ CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject)
+ CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::MainWindowConstructor>(), NO_PARAMETER)
+ CLASS_MEMBER_METHOD(__vwsn_demo_MainWindow_Initialize, { L"__vwsn_this_" })
+ CLASS_MEMBER_FIELD(__vwsn_precompile_0)
+ CLASS_MEMBER_FIELD(__vwsn_precompile_1)
+ CLASS_MEMBER_FIELD(__vwsn_precompile_2)
+ CLASS_MEMBER_FIELD(__vwsn_precompile_3)
+ CLASS_MEMBER_FIELD(__vwsn_precompile_4)
+ CLASS_MEMBER_FIELD(__vwsn_precompile_5)
+ CLASS_MEMBER_FIELD(__vwsn_precompile_6)
+ CLASS_MEMBER_FIELD(__vwsn_precompile_7)
+ CLASS_MEMBER_FIELD(checkBorder)
+ CLASS_MEMBER_FIELD(checkFrame)
+ CLASS_MEMBER_FIELD(checkIcon)
+ CLASS_MEMBER_FIELD(checkMax)
+ CLASS_MEMBER_FIELD(checkMin)
+ CLASS_MEMBER_FIELD(checkSizeBox)
+ CLASS_MEMBER_FIELD(checkTitle)
+ CLASS_MEMBER_FIELD(self)
+ END_CLASS_MEMBER(::demo::MainWindowConstructor)
+
+ BEGIN_CLASS_MEMBER(::demo::SystemFrameWindowTemplate)
+ CLASS_MEMBER_BASE(::vl::presentation::templates::GuiWindowTemplate)
+ CLASS_MEMBER_BASE(::demo::SystemFrameWindowTemplateConstructor)
+ CLASS_MEMBER_CONSTRUCTOR(::demo::SystemFrameWindowTemplate*(), NO_PARAMETER)
+ END_CLASS_MEMBER(::demo::SystemFrameWindowTemplate)
+
+ BEGIN_CLASS_MEMBER(::demo::SystemFrameWindowTemplateConstructor)
+ CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject)
+ CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::SystemFrameWindowTemplateConstructor>(), NO_PARAMETER)
+ CLASS_MEMBER_METHOD(__vwsn_demo_SystemFrameWindowTemplate_Initialize, { L"__vwsn_this_" })
+ CLASS_MEMBER_FIELD(__vwsn_precompile_0)
+ CLASS_MEMBER_FIELD(__vwsn_precompile_1)
+ CLASS_MEMBER_FIELD(container)
+ END_CLASS_MEMBER(::demo::SystemFrameWindowTemplateConstructor)
+
+#undef _
+ class DemoTypeLoader : public Object, public ITypeLoader
+ {
+ public:
+ void Load(ITypeManager* manager)
+ {
+ ADD_TYPE_INFO(::demo::MainWindow)
+ ADD_TYPE_INFO(::demo::MainWindowConstructor)
+ ADD_TYPE_INFO(::demo::SystemFrameWindowTemplate)
+ ADD_TYPE_INFO(::demo::SystemFrameWindowTemplateConstructor)
+ }
+
+ void Unload(ITypeManager* manager)
+ {
+ }
+ };
+#endif
+#endif
+
+ bool LoadDemoTypes()
+ {
+#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA
+ if (auto manager = GetGlobalTypeManager())
+ {
+ return manager->AddTypeLoader(MakePtr());
+ }
+#endif
+ return false;
+ }
+ }
+ }
+}
+
+#if defined( _MSC_VER)
+#pragma warning(pop)
+#elif defined(__GNUC__)
+#pragma GCC diagnostic pop
+#elif defined(__clang__)
+#pragma clang diagnostic pop
+#endif
diff --git a/Tutorial/GacUI_ControlTemplate/WindowSkin/UI/Source/DemoReflection.h b/Tutorial/GacUI_ControlTemplate/WindowSkin/UI/Source/DemoReflection.h
new file mode 100644
index 00000000..98bc70b1
--- /dev/null
+++ b/Tutorial/GacUI_ControlTemplate/WindowSkin/UI/Source/DemoReflection.h
@@ -0,0 +1,55 @@
+/***********************************************************************
+!!!!!! DO NOT MODIFY !!!!!!
+
+GacGen.exe Resource.xml
+
+This file is generated by Workflow compiler
+https://github.com/vczh-libraries
+***********************************************************************/
+
+#ifndef VCZH_WORKFLOW_COMPILER_GENERATED_DEMOREFLECTION
+#define VCZH_WORKFLOW_COMPILER_GENERATED_DEMOREFLECTION
+
+#include "Demo.h"
+
+#if defined( _MSC_VER)
+#pragma warning(push)
+#pragma warning(disable:4250)
+#elif defined(__GNUC__)
+#pragma GCC diagnostic push
+#elif defined(__clang__)
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wparentheses-equality"
+#endif
+
+/***********************************************************************
+Reflection
+***********************************************************************/
+
+namespace vl
+{
+ namespace reflection
+ {
+ namespace description
+ {
+#ifndef VCZH_DEBUG_NO_REFLECTION
+ DECL_TYPE_INFO(::demo::MainWindow)
+ DECL_TYPE_INFO(::demo::MainWindowConstructor)
+ DECL_TYPE_INFO(::demo::SystemFrameWindowTemplate)
+ DECL_TYPE_INFO(::demo::SystemFrameWindowTemplateConstructor)
+#endif
+
+ extern bool LoadDemoTypes();
+ }
+ }
+}
+
+#if defined( _MSC_VER)
+#pragma warning(pop)
+#elif defined(__GNUC__)
+#pragma GCC diagnostic pop
+#elif defined(__clang__)
+#pragma clang diagnostic pop
+#endif
+
+#endif
diff --git a/Tutorial/GacUI_ControlTemplate/WindowSkin/UI/Source/MainWindow.cpp b/Tutorial/GacUI_ControlTemplate/WindowSkin/UI/Source/MainWindow.cpp
new file mode 100644
index 00000000..e451b94b
--- /dev/null
+++ b/Tutorial/GacUI_ControlTemplate/WindowSkin/UI/Source/MainWindow.cpp
@@ -0,0 +1,84 @@
+/***********************************************************************
+!!!!!! DO NOT MODIFY !!!!!!
+
+GacGen.exe Resource.xml
+
+This file is generated by Workflow compiler
+https://github.com/vczh-libraries
+***********************************************************************/
+
+#include "Demo.h"
+/* CodePack:BeginIgnore() */
+#ifndef VCZH_DEBUG_NO_REFLECTION
+/* CodePack:ConditionOff(VCZH_DEBUG_NO_REFLECTION, DemoReflection.h) */
+#include "DemoReflection.h"
+#endif
+/* CodePack:EndIgnore() */
+
+#if defined( _MSC_VER)
+#pragma warning(push)
+#pragma warning(disable:4250)
+#elif defined(__GNUC__)
+#pragma GCC diagnostic push
+#elif defined(__clang__)
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wparentheses-equality"
+#endif
+
+#define GLOBAL_SYMBOL ::vl_workflow_global::Demo::
+#define GLOBAL_NAME ::vl_workflow_global::Demo::Instance().
+#define GLOBAL_OBJ &::vl_workflow_global::Demo::Instance()
+
+/* USER_CONTENT_BEGIN(custom global declarations) */
+/* USER_CONTENT_END() */
+
+/***********************************************************************
+Class (::demo::MainWindow)
+***********************************************************************/
+
+namespace demo
+{
+ void MainWindow::checkFrame_SelectionChanged(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments)
+ {/* USER_CONTENT_BEGIN(::demo::MainWindow) */
+ if (checkFrame->GetSelected())
+ {
+ SetControlTemplate([](const vl::reflection::description::Value&)->vl::presentation::templates::GuiControlTemplate*
+ {
+ return new darkskin::WindowTemplate();
+ });
+ }
+ else
+ {
+ SetControlTemplate([](const vl::reflection::description::Value&)->vl::presentation::templates::GuiControlTemplate*
+ {
+ return new SystemFrameWindowTemplate();
+ });
+ }
+ }/* USER_CONTENT_END() */
+
+ MainWindow::MainWindow()
+ : ::vl::presentation::controls::GuiWindow(::vl::presentation::theme::ThemeName::Window)
+ {
+ auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString(L"demo::MainWindow", false));
+ auto __vwsn_resolver_ = ::vl::Ptr<::vl::presentation::GuiResourcePathResolver>(new ::vl::presentation::GuiResourcePathResolver(__vwsn_resource_, ::vl::__vwsn::This(__vwsn_resource_.Obj())->GetWorkingDirectory()));
+ ::vl::__vwsn::This(this)->SetResourceResolver(__vwsn_resolver_);
+ ::vl::__vwsn::This(this)->__vwsn_demo_MainWindow_Initialize(this);
+ }
+
+ MainWindow::~MainWindow()
+ {
+ this->FinalizeInstanceRecursively(static_cast<::vl::presentation::controls::GuiControlHost*>(this));
+ }
+
+}
+#undef GLOBAL_SYMBOL
+#undef GLOBAL_NAME
+#undef GLOBAL_OBJ
+
+#if defined( _MSC_VER)
+#pragma warning(pop)
+#elif defined(__GNUC__)
+#pragma GCC diagnostic pop
+#elif defined(__clang__)
+#pragma clang diagnostic pop
+#endif
diff --git a/Tutorial/GacUI_ControlTemplate/WindowSkin/UI/Source/MainWindow.h b/Tutorial/GacUI_ControlTemplate/WindowSkin/UI/Source/MainWindow.h
new file mode 100644
index 00000000..8d8481e6
--- /dev/null
+++ b/Tutorial/GacUI_ControlTemplate/WindowSkin/UI/Source/MainWindow.h
@@ -0,0 +1,65 @@
+/***********************************************************************
+!!!!!! DO NOT MODIFY !!!!!!
+
+GacGen.exe Resource.xml
+
+This file is generated by Workflow compiler
+https://github.com/vczh-libraries
+***********************************************************************/
+
+#ifndef VCZH_WORKFLOW_COMPILER_GENERATED_MAINWINDOW
+#define VCZH_WORKFLOW_COMPILER_GENERATED_MAINWINDOW
+
+#include "DemoPartialClasses.h"
+
+#if defined( _MSC_VER)
+#pragma warning(push)
+#pragma warning(disable:4250)
+#elif defined(__GNUC__)
+#pragma GCC diagnostic push
+#elif defined(__clang__)
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wparentheses-equality"
+#endif
+
+namespace demo
+{
+ class MainWindow : public ::vl::presentation::controls::GuiWindow, public ::demo::MainWindowConstructor, public ::vl::reflection::Description
+ {
+ friend class ::demo::MainWindowConstructor;
+ friend class ::vl_workflow_global::__vwsnc1_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription;
+ friend class ::vl_workflow_global::__vwsnc2_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription;
+ friend class ::vl_workflow_global::__vwsnc3_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription;
+ friend class ::vl_workflow_global::__vwsnc4_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription;
+ friend class ::vl_workflow_global::__vwsnc5_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription;
+ friend class ::vl_workflow_global::__vwsnc6_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription;
+ friend struct ::vl_workflow_global::__vwsnf2_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_;
+ friend struct ::vl_workflow_global::__vwsnf3_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_;
+ friend struct ::vl_workflow_global::__vwsnf4_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_;
+ friend struct ::vl_workflow_global::__vwsnf5_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_;
+ friend struct ::vl_workflow_global::__vwsnf6_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_;
+ friend struct ::vl_workflow_global::__vwsnf7_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_;
+ friend struct ::vl_workflow_global::__vwsno1_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_;
+#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA
+ friend struct ::vl::reflection::description::CustomTypeDescriptorSelector;
+#endif
+ protected:
+ void checkFrame_SelectionChanged(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments);
+ public:
+ MainWindow();
+ ~MainWindow();
+
+ /* USER_CONTENT_BEGIN(custom members of ::demo::MainWindow) */
+ /* USER_CONTENT_END() */
+ };
+
+}
+#if defined( _MSC_VER)
+#pragma warning(pop)
+#elif defined(__GNUC__)
+#pragma GCC diagnostic pop
+#elif defined(__clang__)
+#pragma clang diagnostic pop
+#endif
+
+#endif
diff --git a/Tutorial/GacUI_ControlTemplate/WindowSkin/WindowSkin.vcxproj b/Tutorial/GacUI_ControlTemplate/WindowSkin/WindowSkin.vcxproj
new file mode 100644
index 00000000..8d241ba5
--- /dev/null
+++ b/Tutorial/GacUI_ControlTemplate/WindowSkin/WindowSkin.vcxproj
@@ -0,0 +1,163 @@
+
+
+
+
+ Debug
+ Win32
+
+
+ Release
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ x64
+
+
+
+ 16.0
+ Win32Proj
+ {a152fcc6-e757-4690-9bcc-3bf062e5e1c3}
+ WindowSkin
+ 10.0.17763.0
+
+
+
+ Application
+ true
+ v141
+ Unicode
+
+
+ Application
+ false
+ v141
+ true
+ Unicode
+
+
+ Application
+ true
+ v141
+ Unicode
+
+
+ Application
+ false
+ v141
+ true
+ Unicode
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ $(ProjectDir)..\..\..\Import;$(IncludePath)
+
+
+ false
+ $(ProjectDir)..\..\..\Import;$(IncludePath)
+
+
+ true
+ $(ProjectDir)..\..\..\Import;$(IncludePath)
+
+
+ false
+ $(ProjectDir)..\..\..\Import;$(IncludePath)
+
+
+
+ Level3
+ true
+ VCZH_DEBUG_NO_REFLECTION;WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)
+ true
+
+
+ Windows
+ true
+
+
+
+
+ Level3
+ true
+ true
+ true
+ VCZH_DEBUG_NO_REFLECTION;WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)
+ true
+
+
+ Windows
+ true
+ true
+ true
+
+
+
+
+ Level3
+ true
+ VCZH_DEBUG_NO_REFLECTION;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)
+ true
+
+
+ Windows
+ true
+
+
+
+
+ Level3
+ true
+ true
+ true
+ VCZH_DEBUG_NO_REFLECTION;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)
+ true
+
+
+ Windows
+ true
+ true
+ true
+
+
+
+
+ {96c559ca-9718-4bec-a053-28a0ab6a8ca2}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Tutorial/GacUI_ControlTemplate/WindowSkin/WindowSkin.vcxproj.filters b/Tutorial/GacUI_ControlTemplate/WindowSkin/WindowSkin.vcxproj.filters
new file mode 100644
index 00000000..ed4cb16f
--- /dev/null
+++ b/Tutorial/GacUI_ControlTemplate/WindowSkin/WindowSkin.vcxproj.filters
@@ -0,0 +1,42 @@
+
+
+
+
+ {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
+ cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx
+
+
+ {93995380-89BD-4b04-88EB-625FBE52EBFB}
+ h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd
+
+
+ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
+ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms
+
+
+ {2bb4492e-25d6-4c4f-8cc9-99bd9e18430b}
+
+
+
+
+ Source Files
+
+
+ UI
+
+
+ UI
+
+
+
+
+ UI
+
+
+ UI
+
+
+ UI
+
+
+
\ No newline at end of file
diff --git a/Tutorial/GacUI_Controls/ProgressAndAsync/Main.cpp b/Tutorial/GacUI_Controls/ProgressAndAsync/Main.cpp
index 33e5aa74..50912fa9 100644
--- a/Tutorial/GacUI_Controls/ProgressAndAsync/Main.cpp
+++ b/Tutorial/GacUI_Controls/ProgressAndAsync/Main.cpp
@@ -12,7 +12,7 @@ using namespace vl::stream;
class ViewModel : public Object, public demo::IViewModel
{
public:
- void BeginDownload(const ::vl::Func& progress, const ::vl::Func& callback)override
+ void BeginDownload(const ::vl::Func& progress, const ::vl::Func& callback)override
{
GetApplication()->InvokeAsync([=]()
{
@@ -36,7 +36,7 @@ public:
progress(1);
for (vint i = 2; i <= 10; i+=2)
{
- Sleep(1000);
+ sleep(1000);
progress(i);
}