diff --git a/Tutorial/GacUI_Controls/Dialogs/Dialogs.vcxproj b/Tutorial/GacUI_Controls/Dialogs/Dialogs.vcxproj index 67f0198b..a28f5586 100644 --- a/Tutorial/GacUI_Controls/Dialogs/Dialogs.vcxproj +++ b/Tutorial/GacUI_Controls/Dialogs/Dialogs.vcxproj @@ -104,7 +104,7 @@ true true true - WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions);VCZH_DEBUG_NO_REFLECTION true stdcpp20 diff --git a/Tutorial/GacUI_Controls/GacUI_Controls.sln b/Tutorial/GacUI_Controls/GacUI_Controls.sln index 9d6eb09b..8a034cc2 100644 --- a/Tutorial/GacUI_Controls/GacUI_Controls.sln +++ b/Tutorial/GacUI_Controls/GacUI_Controls.sln @@ -45,6 +45,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ColorPicker2", "ColorPicker EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Dialogs", "Dialogs\Dialogs.vcxproj", "{5D6CC27A-A227-4A12-B56E-827E671F1445}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GlobalHotKey", "GlobalHotKey\GlobalHotKey.vcxproj", "{817507B6-7715-4C02-8DEA-28F55F8E6C03}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 @@ -203,6 +205,14 @@ Global {5D6CC27A-A227-4A12-B56E-827E671F1445}.Release|Win32.Build.0 = Release|Win32 {5D6CC27A-A227-4A12-B56E-827E671F1445}.Release|x64.ActiveCfg = Release|x64 {5D6CC27A-A227-4A12-B56E-827E671F1445}.Release|x64.Build.0 = Release|x64 + {817507B6-7715-4C02-8DEA-28F55F8E6C03}.Debug|Win32.ActiveCfg = Debug|Win32 + {817507B6-7715-4C02-8DEA-28F55F8E6C03}.Debug|Win32.Build.0 = Debug|Win32 + {817507B6-7715-4C02-8DEA-28F55F8E6C03}.Debug|x64.ActiveCfg = Debug|x64 + {817507B6-7715-4C02-8DEA-28F55F8E6C03}.Debug|x64.Build.0 = Debug|x64 + {817507B6-7715-4C02-8DEA-28F55F8E6C03}.Release|Win32.ActiveCfg = Release|Win32 + {817507B6-7715-4C02-8DEA-28F55F8E6C03}.Release|Win32.Build.0 = Release|Win32 + {817507B6-7715-4C02-8DEA-28F55F8E6C03}.Release|x64.ActiveCfg = Release|x64 + {817507B6-7715-4C02-8DEA-28F55F8E6C03}.Release|x64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/Tutorial/GacUI_Controls/GlobalHotKey/GlobalHotKey.vcxproj b/Tutorial/GacUI_Controls/GlobalHotKey/GlobalHotKey.vcxproj new file mode 100644 index 00000000..322bc5bf --- /dev/null +++ b/Tutorial/GacUI_Controls/GlobalHotKey/GlobalHotKey.vcxproj @@ -0,0 +1,161 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 16.0 + Win32Proj + {817507b6-7715-4c02-8dea-28f55f8e6c03} + GlobalHotKey + 10.0 + + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + + + + + + + + + + + + + + + + + + + $(ProjectDir)..\..\..\Import;$(IncludePath) + + + $(ProjectDir)..\..\..\Import;$(IncludePath) + + + $(ProjectDir)..\..\..\Import;$(IncludePath) + + + $(ProjectDir)..\..\..\Import;$(IncludePath) + + + + Level3 + true + VCZH_DEBUG_NO_REFLECTION;WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + stdcpp20 + + + Windows + true + + + + + Level3 + true + true + true + VCZH_DEBUG_NO_REFLECTION;WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + stdcpp20 + + + Windows + true + true + true + + + + + Level3 + true + VCZH_DEBUG_NO_REFLECTION;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + stdcpp20 + + + Windows + true + + + + + Level3 + true + true + true + VCZH_DEBUG_NO_REFLECTION;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + stdcpp20 + + + Windows + true + true + true + + + + + + + + + + + + + {96c559ca-9718-4bec-a053-28a0ab6a8ca2} + + + + + + \ No newline at end of file diff --git a/Tutorial/GacUI_Controls/GlobalHotKey/GlobalHotKey.vcxproj.filters b/Tutorial/GacUI_Controls/GlobalHotKey/GlobalHotKey.vcxproj.filters new file mode 100644 index 00000000..b9a457b8 --- /dev/null +++ b/Tutorial/GacUI_Controls/GlobalHotKey/GlobalHotKey.vcxproj.filters @@ -0,0 +1,36 @@ + + + + + {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 + + + {77c64e27-8843-4ab3-a9ce-4f93def40045} + + + + + Source Files + + + UI + + + + + UI + + + UI + + + \ No newline at end of file diff --git a/Tutorial/GacUI_Controls/GlobalHotKey/Main.cpp b/Tutorial/GacUI_Controls/GlobalHotKey/Main.cpp new file mode 100644 index 00000000..da53205b --- /dev/null +++ b/Tutorial/GacUI_Controls/GlobalHotKey/Main.cpp @@ -0,0 +1,16 @@ +#define GAC_HEADER_USE_NAMESPACE +#include "UI/Source/Demo.h" + +using namespace vl::collections; +using namespace vl::stream; + +void GuiMain() +{ + { + FileStream fileStream(L"../UIRes/GlobalHotkey.bin", FileStream::ReadOnly); + GetResourceManager()->LoadResourceOrPending(fileStream); + } + demo::MainWindow window; + window.MoveToScreenCenter(); + GetApplication()->Run(&window); +} \ No newline at end of file diff --git a/Tutorial/GacUI_Controls/GlobalHotKey/UI/Resource.xml b/Tutorial/GacUI_Controls/GlobalHotKey/UI/Resource.xml new file mode 100644 index 00000000..b0be3860 --- /dev/null +++ b/Tutorial/GacUI_Controls/GlobalHotKey/UI/Resource.xml @@ -0,0 +1,78 @@ + + + + Source + ..\..\UIRes\GlobalHotkey.bin + GacUI.h + Demo + + + + + + + + + + + + + + + + + + + + + + <_>composeType:MinSize + <_>composeType:Percentage percentage:1.0 + + + <_>composeType:Percentage percentage:1.0 + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
\ No newline at end of file diff --git a/Tutorial/GacUI_Controls/GlobalHotKey/UI/Source/Demo.h b/Tutorial/GacUI_Controls/GlobalHotKey/UI/Source/Demo.h new file mode 100644 index 00000000..7566a5bb --- /dev/null +++ b/Tutorial/GacUI_Controls/GlobalHotKey/UI/Source/Demo.h @@ -0,0 +1,15 @@ +/*********************************************************************** +!!!!!! 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" + +#endif diff --git a/Tutorial/GacUI_Controls/GlobalHotKey/UI/Source/DemoPartialClasses.cpp b/Tutorial/GacUI_Controls/GlobalHotKey/UI/Source/DemoPartialClasses.cpp new file mode 100644 index 00000000..92ec48a9 --- /dev/null +++ b/Tutorial/GacUI_Controls/GlobalHotKey/UI/Source/DemoPartialClasses.cpp @@ -0,0 +1,314 @@ +/*********************************************************************** +!!!!!! 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(__clang__) +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wparentheses-equality" +#elif defined(__GNUC__) +#pragma GCC diagnostic push +#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 +***********************************************************************/ + + //------------------------------------------------------------------- + + __vwsnf1_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_::__vwsnf1_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_(::demo::MainWindowConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf1_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const + { + ::vl::__vwsn::This(::vl::presentation::controls::GetApplication())->InvokeInMainThread(static_cast<::vl::presentation::controls::GuiControlHost*>(__vwsnthis_0->self), vl::Func(::vl_workflow_global::__vwsnf2_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__(__vwsnthis_0))); + } + + //------------------------------------------------------------------- + + __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::__vwsn::This(__vwsnthis_0->dialog)->ShowDialog(); + } + + //------------------------------------------------------------------- + + __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()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiMouseEventArgs* arguments) const + { + auto b = ::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0->self)->GetContainerComposition())->GetGlobalBounds(); + auto p = [&](){ ::vl::presentation::Point __vwsn_temp__; __vwsn_temp__.x = (::vl::__vwsn::This(arguments)->x + b.x1); __vwsn_temp__.y = (::vl::__vwsn::This(arguments)->y + b.y1); return __vwsn_temp__; }(); + ::vl::__vwsn::This(__vwsnthis_0->menuRightClick)->ShowPopup(static_cast<::vl::presentation::controls::GuiControl*>(__vwsnthis_0->self), p); + } +} + +/*********************************************************************** +Class (::demo::MainWindowConstructor) +***********************************************************************/ + +namespace demo +{ + void MainWindowConstructor::__vwsn_demo_MainWindow_Initialize(::demo::MainWindow* __vwsn_this_) + { + (this->self = __vwsn_this_); + (this->__vwsn_precompile_14 = ::vl::__vwsn::This(this->self)->GetContainerComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_14)->SetPreferredMinSize([&](){ ::vl::presentation::Size __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(320); __vwsn_temp__.y = static_cast<::vl::vint>(240); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->self)->SetClientSize([&](){ ::vl::presentation::Size __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(640); __vwsn_temp__.y = static_cast<::vl::vint>(480); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->self)->SetText(::vl::WString::Unmanaged(L"GlobalHotkey")); + } + (this->dialog = new ::vl::presentation::controls::GuiMessageDialog()); + { + ::vl::__vwsn::This(this->dialog)->SetTitle(::vl::WString::Unmanaged(L"Global Hotkey")); + } + { + ::vl::__vwsn::This(this->dialog)->SetText(::vl::WString::Unmanaged(L"The global hotkey is activated!")); + } + { + ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->dialog)); + } + (this->commandGlobal = new ::vl::presentation::controls::GuiToolstripCommand()); + { + ::vl::__vwsn::This(this->commandGlobal)->SetShortcutBuilder(::vl::WString::Unmanaged(L"global:Ctrl+Shift+Alt+D")); + } + { + ::vl::__vwsn::This(this->commandGlobal)->SetText(::vl::WString::Unmanaged(L"Show Message Dialog")); + } + { + ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandGlobal)); + } + { + (this->menuRightClick = new ::vl::presentation::controls::GuiToolstripMenu(::vl::presentation::theme::ThemeName::Menu, static_cast<::vl::presentation::controls::GuiControl*>(nullptr))); + } + { + (this->__vwsn_precompile_0 = new ::vl::presentation::controls::GuiToolstripGroupContainer(::vl::presentation::theme::ThemeName::CustomControl)); + } + { + (this->__vwsn_precompile_1 = new ::vl::presentation::controls::GuiToolstripGroup(::vl::presentation::theme::ThemeName::CustomControl)); + } + { + (this->__vwsn_precompile_2 = new ::vl::presentation::controls::GuiToolstripButton(::vl::presentation::theme::ThemeName::MenuItemButton)); + } + { + ::vl::__vwsn::This(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->__vwsn_precompile_1)->GetToolstripItems()).Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_2)); + } + { + ::vl::__vwsn::This(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->__vwsn_precompile_0)->GetToolstripItems()).Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_1)); + } + { + ::vl::__vwsn::This(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->menuRightClick)->GetToolstripItems()).Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_0)); + } + { + ::vl::__vwsn::This(this->self)->AddControlHostComponent(static_cast<::vl::presentation::controls::GuiControlHost*>(this->menuRightClick)); + } + (this->__vwsn_precompile_3 = new ::vl::presentation::compositions::GuiTableComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_3)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_3)->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->__vwsn_precompile_3)->SetBorderVisible(true); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_3)->SetCellPadding(static_cast<::vl::vint>(5)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_3)->SetRowsAndColumns(static_cast<::vl::vint>(2), static_cast<::vl::vint>(1)); + ::vl::__vwsn::This(this->__vwsn_precompile_3)->SetRowOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_3)->SetRowOption(static_cast<::vl::vint>(1), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(1.0); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_3)->SetColumnOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(1.0); return __vwsn_temp__; }()); + } + (this->__vwsn_precompile_4 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_4)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + { + (this->__vwsn_precompile_5 = new ::vl::presentation::controls::GuiToolstripMenuBar(::vl::presentation::theme::ThemeName::MenuBar)); + } + (this->__vwsn_precompile_10 = ::vl::__vwsn::This(this->__vwsn_precompile_5)->GetBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_10)->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__; }()); + } + { + (this->__vwsn_precompile_6 = new ::vl::presentation::controls::GuiToolstripButton(::vl::presentation::theme::ThemeName::MenuBarButton)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_6)->SetAlt(::vl::WString::Unmanaged(L"A")); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_6)->SetText(::vl::WString::Unmanaged(L"A Menu")); + } + (this->__vwsn_precompile_7 = ::vl::__vwsn::This(this->__vwsn_precompile_6)->EnsureToolstripSubMenu()); + { + (this->__vwsn_precompile_8 = new ::vl::presentation::controls::GuiToolstripGroup(::vl::presentation::theme::ThemeName::CustomControl)); + } + { + (this->__vwsn_precompile_9 = new ::vl::presentation::controls::GuiToolstripButton(::vl::presentation::theme::ThemeName::MenuItemButton)); + } + { + ::vl::__vwsn::This(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->__vwsn_precompile_8)->GetToolstripItems()).Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_9)); + } + { + ::vl::__vwsn::This(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->__vwsn_precompile_7)->GetToolstripItems()).Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_8)); + } + { + ::vl::__vwsn::This(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->__vwsn_precompile_5)->GetToolstripItems()).Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_6)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_4)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->__vwsn_precompile_5)->GetBoundsComposition())); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_3)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_4)); + } + (this->__vwsn_precompile_11 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_11)->SetSite(static_cast<::vl::vint>(1), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + { + (this->__vwsn_precompile_12 = new ::vl::presentation::controls::GuiLabel(::vl::presentation::theme::ThemeName::Label)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_12)->SetFont(::vl::Nullable<::vl::presentation::FontProperties>([&](){ ::vl::presentation::FontProperties __vwsn_temp__; __vwsn_temp__.fontFamily = ::vl::WString::Unmanaged(L"Segoe UI"); __vwsn_temp__.size = static_cast<::vl::vint>(24); return __vwsn_temp__; }())); + } + (this->__vwsn_precompile_13 = ::vl::__vwsn::This(this->__vwsn_precompile_12)->GetBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_13)->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->__vwsn_precompile_12)->SetText(::vl::WString::Unmanaged(L"Right click to show the menu")); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_11)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->__vwsn_precompile_12)->GetBoundsComposition())); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_3)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_11)); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this->self)->GetContainerComposition())->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_3)); + } + { + auto __vwsn_event_handler_ = vl::Func(::vl_workflow_global::__vwsnf1_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(this->commandGlobal)->Executed, __vwsn_event_handler_); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetCommand(this->commandGlobal); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_9)->SetCommand(this->commandGlobal); + } + { + auto __vwsn_event_handler_ = vl::Func(::vl_workflow_global::__vwsnf3_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(this->__vwsn_precompile_14)->GetEventReceiver()->rightButtonDown, __vwsn_event_handler_); + } + } + + MainWindowConstructor::MainWindowConstructor() + : self(static_cast<::demo::MainWindow*>(nullptr)) + , dialog(static_cast<::vl::presentation::controls::GuiMessageDialog*>(nullptr)) + , commandGlobal(static_cast<::vl::presentation::controls::GuiToolstripCommand*>(nullptr)) + , menuRightClick(static_cast<::vl::presentation::controls::GuiToolstripMenu*>(nullptr)) + , __vwsn_precompile_0(static_cast<::vl::presentation::controls::GuiToolstripGroupContainer*>(nullptr)) + , __vwsn_precompile_1(static_cast<::vl::presentation::controls::GuiToolstripGroup*>(nullptr)) + , __vwsn_precompile_2(static_cast<::vl::presentation::controls::GuiToolstripButton*>(nullptr)) + , __vwsn_precompile_3(static_cast<::vl::presentation::compositions::GuiTableComposition*>(nullptr)) + , __vwsn_precompile_4(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_5(static_cast<::vl::presentation::controls::GuiToolstripMenuBar*>(nullptr)) + , __vwsn_precompile_6(static_cast<::vl::presentation::controls::GuiToolstripButton*>(nullptr)) + , __vwsn_precompile_7(static_cast<::vl::presentation::controls::GuiToolstripMenu*>(nullptr)) + , __vwsn_precompile_8(static_cast<::vl::presentation::controls::GuiToolstripGroup*>(nullptr)) + , __vwsn_precompile_9(static_cast<::vl::presentation::controls::GuiToolstripButton*>(nullptr)) + , __vwsn_precompile_10(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_11(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_12(static_cast<::vl::presentation::controls::GuiLabel*>(nullptr)) + , __vwsn_precompile_13(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_14(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(nullptr)) + { + } + +/*********************************************************************** +Class (::demo::MainWindow) +***********************************************************************/ + + MainWindow::MainWindow() + : ::vl::presentation::controls::GuiWindow(::vl::presentation::theme::ThemeName::Window) + { + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString::Unmanaged(L"demo::MainWindow")); + 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(__clang__) +#pragma clang diagnostic pop +#elif defined(__GNUC__) +#pragma GCC diagnostic pop +#endif diff --git a/Tutorial/GacUI_Controls/GlobalHotKey/UI/Source/DemoPartialClasses.h b/Tutorial/GacUI_Controls/GlobalHotKey/UI/Source/DemoPartialClasses.h new file mode 100644 index 00000000..fa851c40 --- /dev/null +++ b/Tutorial/GacUI_Controls/GlobalHotKey/UI/Source/DemoPartialClasses.h @@ -0,0 +1,138 @@ +/*********************************************************************** +!!!!!! 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 "GacUI.h" + +#if defined( _MSC_VER) +#pragma warning(push) +#pragma warning(disable:4250) +#elif defined(__clang__) +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wparentheses-equality" +#elif defined(__GNUC__) +#pragma GCC diagnostic push +#endif + +namespace vl_workflow_global +{ + struct __vwsnf1_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_; + struct __vwsnf2_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__; + struct __vwsnf3_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_; +} + +namespace demo +{ + class MainWindowConstructor; + class MainWindow; + + class MainWindowConstructor : public ::vl::Object, public ::vl::reflection::Description + { + friend struct ::vl_workflow_global::__vwsnf1_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_; + 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_; +#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::demo::MainWindow* self; + ::vl::presentation::controls::GuiMessageDialog* dialog; + ::vl::presentation::controls::GuiToolstripCommand* commandGlobal; + ::vl::presentation::controls::GuiToolstripMenu* menuRightClick; + ::vl::presentation::controls::GuiToolstripGroupContainer* __vwsn_precompile_0; + ::vl::presentation::controls::GuiToolstripGroup* __vwsn_precompile_1; + ::vl::presentation::controls::GuiToolstripButton* __vwsn_precompile_2; + ::vl::presentation::compositions::GuiTableComposition* __vwsn_precompile_3; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_4; + ::vl::presentation::controls::GuiToolstripMenuBar* __vwsn_precompile_5; + ::vl::presentation::controls::GuiToolstripButton* __vwsn_precompile_6; + ::vl::presentation::controls::GuiToolstripMenu* __vwsn_precompile_7; + ::vl::presentation::controls::GuiToolstripGroup* __vwsn_precompile_8; + ::vl::presentation::controls::GuiToolstripButton* __vwsn_precompile_9; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_10; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_11; + ::vl::presentation::controls::GuiLabel* __vwsn_precompile_12; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_13; + ::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_precompile_14; + void __vwsn_demo_MainWindow_Initialize(::demo::MainWindow* __vwsn_this_); + public: + MainWindowConstructor(); + }; + + class MainWindow : public ::vl::presentation::controls::GuiWindow, public ::demo::MainWindowConstructor, public ::vl::reflection::Description + { + friend class ::demo::MainWindowConstructor; + friend struct ::vl_workflow_global::__vwsnf1_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_; + 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_; +#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + MainWindow(); + ~MainWindow(); + }; + +} +/*********************************************************************** +Global Variables and Functions +***********************************************************************/ + +namespace vl_workflow_global +{ + class Demo + { + public: + + static Demo& Instance(); + }; + +/*********************************************************************** +Closures +***********************************************************************/ + + struct __vwsnf1_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_ + { + ::demo::MainWindowConstructor* __vwsnthis_0; + + __vwsnf1_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_(::demo::MainWindowConstructor* __vwsnctorthis_0); + + void operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const; + }; + + 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; + }; + + 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()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiMouseEventArgs* arguments) const; + }; +} + +#if defined( _MSC_VER) +#pragma warning(pop) +#elif defined(__clang__) +#pragma clang diagnostic pop +#elif defined(__GNUC__) +#pragma GCC diagnostic pop +#endif + +#endif diff --git a/Tutorial/GacUI_Controls/GlobalHotKey/UI/Source/DemoReflection.cpp b/Tutorial/GacUI_Controls/GlobalHotKey/UI/Source/DemoReflection.cpp new file mode 100644 index 00000000..3556ea2a --- /dev/null +++ b/Tutorial/GacUI_Controls/GlobalHotKey/UI/Source/DemoReflection.cpp @@ -0,0 +1,106 @@ +/*********************************************************************** +!!!!!! 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(__clang__) +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wparentheses-equality" +#elif defined(__GNUC__) +#pragma GCC diagnostic push +#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) + +#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) + 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_10) + CLASS_MEMBER_FIELD(__vwsn_precompile_11) + CLASS_MEMBER_FIELD(__vwsn_precompile_12) + CLASS_MEMBER_FIELD(__vwsn_precompile_13) + CLASS_MEMBER_FIELD(__vwsn_precompile_14) + 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(__vwsn_precompile_8) + CLASS_MEMBER_FIELD(__vwsn_precompile_9) + CLASS_MEMBER_FIELD(commandGlobal) + CLASS_MEMBER_FIELD(dialog) + CLASS_MEMBER_FIELD(menuRightClick) + CLASS_MEMBER_FIELD(self) + END_CLASS_MEMBER(::demo::MainWindowConstructor) + +#undef _ + class DemoTypeLoader : public Object, public ITypeLoader + { + public: + void Load(ITypeManager* manager) + { + ADD_TYPE_INFO(::demo::MainWindow) + ADD_TYPE_INFO(::demo::MainWindowConstructor) + } + + void Unload(ITypeManager* manager) + { + } + }; +#endif +#endif + + bool LoadDemoTypes() + { +#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA + if (auto manager = GetGlobalTypeManager()) + { + return manager->AddTypeLoader(Ptr(new DemoTypeLoader)); + } +#endif + return false; + } + } + } +} + +#if defined( _MSC_VER) +#pragma warning(pop) +#elif defined(__clang__) +#pragma clang diagnostic pop +#elif defined(__GNUC__) +#pragma GCC diagnostic pop +#endif diff --git a/Tutorial/GacUI_Controls/GlobalHotKey/UI/Source/DemoReflection.h b/Tutorial/GacUI_Controls/GlobalHotKey/UI/Source/DemoReflection.h new file mode 100644 index 00000000..8c1e0b5d --- /dev/null +++ b/Tutorial/GacUI_Controls/GlobalHotKey/UI/Source/DemoReflection.h @@ -0,0 +1,53 @@ +/*********************************************************************** +!!!!!! 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(__clang__) +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wparentheses-equality" +#elif defined(__GNUC__) +#pragma GCC diagnostic push +#endif + +/*********************************************************************** +Reflection +***********************************************************************/ + +namespace vl +{ + namespace reflection + { + namespace description + { +#ifndef VCZH_DEBUG_NO_REFLECTION + DECL_TYPE_INFO(::demo::MainWindow) + DECL_TYPE_INFO(::demo::MainWindowConstructor) +#endif + + extern bool LoadDemoTypes(); + } + } +} + +#if defined( _MSC_VER) +#pragma warning(pop) +#elif defined(__clang__) +#pragma clang diagnostic pop +#elif defined(__GNUC__) +#pragma GCC diagnostic pop +#endif + +#endif diff --git a/Tutorial/GacUI_Controls/UIRes/GlobalHotkey.bin b/Tutorial/GacUI_Controls/UIRes/GlobalHotkey.bin new file mode 100644 index 00000000..5d06abc7 Binary files /dev/null and b/Tutorial/GacUI_Controls/UIRes/GlobalHotkey.bin differ