From f2f4b32a60ea3b5cd3df4dd4123b1ec99f860327 Mon Sep 17 00:00:00 2001 From: vczh Date: Fri, 15 Oct 2021 03:15:57 -0700 Subject: [PATCH] New tutorial: Win11ToolstripMenu --- Tutorial/GacUI_Controls/GacUI_Controls.sln | 14 +- .../UIRes/Win11ToolstripMenu.bin | Bin 0 -> 35494 bytes .../Win11ToolstripMenu/Main.cpp | 17 + .../Win11ToolstripMenu/UI/Resource.xml | 75 +++ .../Win11ToolstripMenu/UI/Source/Demo.h | 15 + .../UI/Source/DemoPartialClasses.cpp | 450 ++++++++++++++++++ .../UI/Source/DemoPartialClasses.h | 162 +++++++ .../UI/Source/DemoReflection.cpp | 134 ++++++ .../UI/Source/DemoReflection.h | 56 +++ .../Win11ToolstripMenu.vcxproj | 164 +++++++ .../Win11ToolstripMenu.vcxproj.filters | 41 ++ 11 files changed, 1126 insertions(+), 2 deletions(-) create mode 100644 Tutorial/GacUI_Controls/UIRes/Win11ToolstripMenu.bin create mode 100644 Tutorial/GacUI_Controls/Win11ToolstripMenu/Main.cpp create mode 100644 Tutorial/GacUI_Controls/Win11ToolstripMenu/UI/Resource.xml create mode 100644 Tutorial/GacUI_Controls/Win11ToolstripMenu/UI/Source/Demo.h create mode 100644 Tutorial/GacUI_Controls/Win11ToolstripMenu/UI/Source/DemoPartialClasses.cpp create mode 100644 Tutorial/GacUI_Controls/Win11ToolstripMenu/UI/Source/DemoPartialClasses.h create mode 100644 Tutorial/GacUI_Controls/Win11ToolstripMenu/UI/Source/DemoReflection.cpp create mode 100644 Tutorial/GacUI_Controls/Win11ToolstripMenu/UI/Source/DemoReflection.h create mode 100644 Tutorial/GacUI_Controls/Win11ToolstripMenu/Win11ToolstripMenu.vcxproj create mode 100644 Tutorial/GacUI_Controls/Win11ToolstripMenu/Win11ToolstripMenu.vcxproj.filters diff --git a/Tutorial/GacUI_Controls/GacUI_Controls.sln b/Tutorial/GacUI_Controls/GacUI_Controls.sln index c95b8212..e0c785ae 100644 --- a/Tutorial/GacUI_Controls/GacUI_Controls.sln +++ b/Tutorial/GacUI_Controls/GacUI_Controls.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.27130.2027 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.31515.178 MinimumVisualStudioVersion = 10.0.40219.1 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ContainersAndButtons", "ContainersAndButtons\ContainersAndButtons.vcxproj", "{0C211930-C5DA-4567-A752-1D847CADEC1C}" EndProject @@ -39,6 +39,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TriplePhaseImageButton", "T EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "QueryService", "QueryService\QueryService.vcxproj", "{54A3E487-AF4A-4148-B28C-6190A52CC5D1}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Win11ToolstripMenu", "Win11ToolstripMenu\Win11ToolstripMenu.vcxproj", "{1955DEBE-9913-45D6-B819-9ADB52E5A447}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 @@ -173,6 +175,14 @@ Global {54A3E487-AF4A-4148-B28C-6190A52CC5D1}.Release|Win32.Build.0 = Release|Win32 {54A3E487-AF4A-4148-B28C-6190A52CC5D1}.Release|x64.ActiveCfg = Release|x64 {54A3E487-AF4A-4148-B28C-6190A52CC5D1}.Release|x64.Build.0 = Release|x64 + {1955DEBE-9913-45D6-B819-9ADB52E5A447}.Debug|Win32.ActiveCfg = Debug|Win32 + {1955DEBE-9913-45D6-B819-9ADB52E5A447}.Debug|Win32.Build.0 = Debug|Win32 + {1955DEBE-9913-45D6-B819-9ADB52E5A447}.Debug|x64.ActiveCfg = Debug|x64 + {1955DEBE-9913-45D6-B819-9ADB52E5A447}.Debug|x64.Build.0 = Debug|x64 + {1955DEBE-9913-45D6-B819-9ADB52E5A447}.Release|Win32.ActiveCfg = Release|Win32 + {1955DEBE-9913-45D6-B819-9ADB52E5A447}.Release|Win32.Build.0 = Release|Win32 + {1955DEBE-9913-45D6-B819-9ADB52E5A447}.Release|x64.ActiveCfg = Release|x64 + {1955DEBE-9913-45D6-B819-9ADB52E5A447}.Release|x64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/Tutorial/GacUI_Controls/UIRes/Win11ToolstripMenu.bin b/Tutorial/GacUI_Controls/UIRes/Win11ToolstripMenu.bin new file mode 100644 index 0000000000000000000000000000000000000000..6072a5b404ce6191fb89fccab37738f6cdf5adce GIT binary patch literal 35494 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 l@tgM)Nb`a$GKd$?u{ePT<86N-u literal 0 HcmV?d00001 diff --git a/Tutorial/GacUI_Controls/Win11ToolstripMenu/Main.cpp b/Tutorial/GacUI_Controls/Win11ToolstripMenu/Main.cpp new file mode 100644 index 00000000..027c0767 --- /dev/null +++ b/Tutorial/GacUI_Controls/Win11ToolstripMenu/Main.cpp @@ -0,0 +1,17 @@ +#define GAC_HEADER_USE_NAMESPACE +#include "UI/Source/Demo.h" +#include + +using namespace vl::collections; +using namespace vl::stream; + +void GuiMain() +{ + { + FileStream fileStream(L"../UIRes/Win11ToolstripMenu.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/Win11ToolstripMenu/UI/Resource.xml b/Tutorial/GacUI_Controls/Win11ToolstripMenu/UI/Resource.xml new file mode 100644 index 00000000..9b3cbba5 --- /dev/null +++ b/Tutorial/GacUI_Controls/Win11ToolstripMenu/UI/Resource.xml @@ -0,0 +1,75 @@ + + + + Source + ..\..\UIRes\Win11ToolstripMenu.bin + GacUI.h + Demo + + + + ../../../GacUI_ControlTemplate/BlackSkin/UI/FullControlTest/ToolbarImages/Images.xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Tutorial/GacUI_Controls/Win11ToolstripMenu/UI/Source/Demo.h b/Tutorial/GacUI_Controls/Win11ToolstripMenu/UI/Source/Demo.h new file mode 100644 index 00000000..7566a5bb --- /dev/null +++ b/Tutorial/GacUI_Controls/Win11ToolstripMenu/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/Win11ToolstripMenu/UI/Source/DemoPartialClasses.cpp b/Tutorial/GacUI_Controls/Win11ToolstripMenu/UI/Source/DemoPartialClasses.cpp new file mode 100644 index 00000000..42afb1e8 --- /dev/null +++ b/Tutorial/GacUI_Controls/Win11ToolstripMenu/UI/Source/DemoPartialClasses.cpp @@ -0,0 +1,450 @@ +/*********************************************************************** +!!!!!! 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 +#pragma GCC diagnostic ignored "-Wparentheses-equality" +#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 +***********************************************************************/ + + //------------------------------------------------------------------- + + __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)) + { + } + + ::vl::presentation::templates::GuiControlTemplate* __vwsnf1_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const + { + { + return static_cast<::vl::presentation::templates::GuiControlTemplate*>(new ::demo::MenuToolBarControlTemplate()); + } + } + + //------------------------------------------------------------------- + + __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()(::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->menuEdit)->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_17 = ::vl::__vwsn::This(this->self)->GetContainerComposition()); + (this->__vwsn_precompile_16 = ::vl::__vwsn::This(this->self)->GetBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_16)->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(L"Win11ToolstripMenu", false)); + } + (this->commandCut = new ::vl::presentation::controls::GuiToolstripCommand()); + { + ::vl::__vwsn::This(this->commandCut)->SetShortcutBuilder(::vl::WString(L"Ctrl+X", false)); + } + { + ::vl::__vwsn::This(this->commandCut)->SetText(::vl::WString(L"Cut", false)); + } + { + ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandCut)); + } + (this->commandCopy = new ::vl::presentation::controls::GuiToolstripCommand()); + { + ::vl::__vwsn::This(this->commandCopy)->SetShortcutBuilder(::vl::WString(L"Ctrl+C", false)); + } + { + ::vl::__vwsn::This(this->commandCopy)->SetText(::vl::WString(L"Copy", false)); + } + { + ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandCopy)); + } + (this->commandPaste = new ::vl::presentation::controls::GuiToolstripCommand()); + { + ::vl::__vwsn::This(this->commandPaste)->SetShortcutBuilder(::vl::WString(L"Ctrl+V", false)); + } + { + ::vl::__vwsn::This(this->commandPaste)->SetText(::vl::WString(L"Paste", false)); + } + { + ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandPaste)); + } + (this->commandDelete = new ::vl::presentation::controls::GuiToolstripCommand()); + { + ::vl::__vwsn::This(this->commandDelete)->SetText(::vl::WString(L"Delete", false)); + } + { + ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandDelete)); + } + (this->commandUndo = new ::vl::presentation::controls::GuiToolstripCommand()); + { + ::vl::__vwsn::This(this->commandUndo)->SetShortcutBuilder(::vl::WString(L"Ctrl+Z", false)); + } + { + ::vl::__vwsn::This(this->commandUndo)->SetText(::vl::WString(L"Undo", false)); + } + { + ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandUndo)); + } + (this->commandRedo = new ::vl::presentation::controls::GuiToolstripCommand()); + { + ::vl::__vwsn::This(this->commandRedo)->SetShortcutBuilder(::vl::WString(L"Ctrl+Y", false)); + } + { + ::vl::__vwsn::This(this->commandRedo)->SetText(::vl::WString(L"Redo", false)); + } + { + ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandRedo)); + } + (this->commandExportPrivate = new ::vl::presentation::controls::GuiToolstripCommand()); + { + ::vl::__vwsn::This(this->commandExportPrivate)->SetText(::vl::WString(L"Export as Private Format", false)); + } + { + ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandExportPrivate)); + } + (this->commandExportRtf = new ::vl::presentation::controls::GuiToolstripCommand()); + { + ::vl::__vwsn::This(this->commandExportRtf)->SetText(::vl::WString(L"Export as Rich Text Format", false)); + } + { + ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandExportRtf)); + } + (this->commandExportHtml = new ::vl::presentation::controls::GuiToolstripCommand()); + { + ::vl::__vwsn::This(this->commandExportHtml)->SetText(::vl::WString(L"Export as HTML", false)); + } + { + ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandExportHtml)); + } + { + (this->menuEdit = 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::GuiToolstripToolBar(::vl::presentation::theme::ThemeName::ToolstripToolBar)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetControlTemplate(LAMBDA(::vl_workflow_global::__vwsnf1_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_(this))); + } + { + (this->__vwsn_precompile_3 = new ::vl::presentation::controls::GuiToolstripButton(::vl::presentation::theme::ThemeName::ToolstripButton)); + } + { + ::vl::__vwsn::This(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->__vwsn_precompile_2)->GetToolstripItems()).Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_3)); + } + { + (this->__vwsn_precompile_4 = new ::vl::presentation::controls::GuiToolstripButton(::vl::presentation::theme::ThemeName::ToolstripButton)); + } + { + ::vl::__vwsn::This(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->__vwsn_precompile_2)->GetToolstripItems()).Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_4)); + } + { + (this->__vwsn_precompile_5 = new ::vl::presentation::controls::GuiToolstripButton(::vl::presentation::theme::ThemeName::ToolstripButton)); + } + { + ::vl::__vwsn::This(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->__vwsn_precompile_2)->GetToolstripItems()).Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_5)); + } + { + (this->__vwsn_precompile_6 = new ::vl::presentation::controls::GuiToolstripButton(::vl::presentation::theme::ThemeName::ToolstripButton)); + } + { + ::vl::__vwsn::This(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->__vwsn_precompile_2)->GetToolstripItems()).Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_6)); + } + { + ::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)); + } + { + (this->__vwsn_precompile_7 = new ::vl::presentation::controls::GuiToolstripGroup(::vl::presentation::theme::ThemeName::CustomControl)); + } + { + (this->__vwsn_precompile_8 = 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_7)->GetToolstripItems()).Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_8)); + } + { + (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_7)->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_0)->GetToolstripItems()).Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_7)); + } + { + (this->__vwsn_precompile_10 = new ::vl::presentation::controls::GuiToolstripGroup(::vl::presentation::theme::ThemeName::CustomControl)); + } + { + (this->__vwsn_precompile_11 = 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_10)->GetToolstripItems()).Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_11)); + } + { + (this->__vwsn_precompile_12 = 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_10)->GetToolstripItems()).Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_12)); + } + { + (this->__vwsn_precompile_13 = 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_10)->GetToolstripItems()).Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_13)); + } + { + ::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_10)); + } + { + ::vl::__vwsn::This(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->menuEdit)->GetToolstripItems()).Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_0)); + } + { + ::vl::__vwsn::This(this->self)->AddControlHostComponent(static_cast<::vl::presentation::controls::GuiControlHost*>(this->menuEdit)); + } + { + (this->__vwsn_precompile_14 = new ::vl::presentation::controls::GuiLabel(::vl::presentation::theme::ThemeName::Label)); + } + (this->__vwsn_precompile_15 = ::vl::__vwsn::This(this->__vwsn_precompile_14)->GetBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_15)->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_14)->SetFont(::vl::Nullable<::vl::presentation::FontProperties>([&](){ ::vl::presentation::FontProperties __vwsn_temp__; __vwsn_temp__.fontFamily = ::vl::WString(L"Segoe UI", false); __vwsn_temp__.size = static_cast<::vl::vint>(24); return __vwsn_temp__; }())); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_14)->SetText(::vl::WString(L"Right click to show the menu", false)); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::controls::GuiControl*>(this->__vwsn_precompile_14)); + } + { + ::vl::__vwsn::This(this->commandCut)->SetImage(::vl::__vwsn::Ensure(::vl::__vwsn::SharedPtrCast<::vl::presentation::GuiImageData>(::vl::__vwsn::This(__vwsn_this_)->ResolveResource(::vl::WString(L"res", false), ::vl::WString(L"Images/Cut", false), true).Obj()))); + } + { + ::vl::__vwsn::This(this->commandCopy)->SetImage(::vl::__vwsn::Ensure(::vl::__vwsn::SharedPtrCast<::vl::presentation::GuiImageData>(::vl::__vwsn::This(__vwsn_this_)->ResolveResource(::vl::WString(L"res", false), ::vl::WString(L"Images/Copy", false), true).Obj()))); + } + { + ::vl::__vwsn::This(this->commandPaste)->SetImage(::vl::__vwsn::Ensure(::vl::__vwsn::SharedPtrCast<::vl::presentation::GuiImageData>(::vl::__vwsn::This(__vwsn_this_)->ResolveResource(::vl::WString(L"res", false), ::vl::WString(L"Images/Paste", false), true).Obj()))); + } + { + ::vl::__vwsn::This(this->commandDelete)->SetImage(::vl::__vwsn::Ensure(::vl::__vwsn::SharedPtrCast<::vl::presentation::GuiImageData>(::vl::__vwsn::This(__vwsn_this_)->ResolveResource(::vl::WString(L"res", false), ::vl::WString(L"Images/Delete", false), true).Obj()))); + } + { + ::vl::__vwsn::This(this->commandUndo)->SetImage(::vl::__vwsn::Ensure(::vl::__vwsn::SharedPtrCast<::vl::presentation::GuiImageData>(::vl::__vwsn::This(__vwsn_this_)->ResolveResource(::vl::WString(L"res", false), ::vl::WString(L"Images/Undo", false), true).Obj()))); + } + { + ::vl::__vwsn::This(this->commandRedo)->SetImage(::vl::__vwsn::Ensure(::vl::__vwsn::SharedPtrCast<::vl::presentation::GuiImageData>(::vl::__vwsn::This(__vwsn_this_)->ResolveResource(::vl::WString(L"res", false), ::vl::WString(L"Images/Redo", false), true).Obj()))); + } + { + ::vl::__vwsn::This(this->commandExportPrivate)->SetImage(::vl::__vwsn::Ensure(::vl::__vwsn::SharedPtrCast<::vl::presentation::GuiImageData>(::vl::__vwsn::This(__vwsn_this_)->ResolveResource(::vl::WString(L"res", false), ::vl::WString(L"Images/FormatPrivate", false), true).Obj()))); + } + { + ::vl::__vwsn::This(this->commandExportRtf)->SetImage(::vl::__vwsn::Ensure(::vl::__vwsn::SharedPtrCast<::vl::presentation::GuiImageData>(::vl::__vwsn::This(__vwsn_this_)->ResolveResource(::vl::WString(L"res", false), ::vl::WString(L"Images/FormatRtf", false), true).Obj()))); + } + { + ::vl::__vwsn::This(this->commandExportHtml)->SetImage(::vl::__vwsn::Ensure(::vl::__vwsn::SharedPtrCast<::vl::presentation::GuiImageData>(::vl::__vwsn::This(__vwsn_this_)->ResolveResource(::vl::WString(L"res", false), ::vl::WString(L"Images/FormatHtml", false), true).Obj()))); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_3)->SetCommand(this->commandCut); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_4)->SetCommand(this->commandCopy); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_5)->SetCommand(this->commandPaste); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_6)->SetCommand(this->commandDelete); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_8)->SetCommand(this->commandUndo); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_9)->SetCommand(this->commandRedo); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_11)->SetCommand(this->commandExportPrivate); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_12)->SetCommand(this->commandExportRtf); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_13)->SetCommand(this->commandExportHtml); + } + { + auto __vwsn_event_handler_ = LAMBDA(::vl_workflow_global::__vwsnf2_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(this->__vwsn_precompile_17)->GetEventReceiver()->rightButtonDown, __vwsn_event_handler_); + } + } + + MainWindowConstructor::MainWindowConstructor() + : self(static_cast<::demo::MainWindow*>(nullptr)) + , commandCut(static_cast<::vl::presentation::controls::GuiToolstripCommand*>(nullptr)) + , commandCopy(static_cast<::vl::presentation::controls::GuiToolstripCommand*>(nullptr)) + , commandPaste(static_cast<::vl::presentation::controls::GuiToolstripCommand*>(nullptr)) + , commandDelete(static_cast<::vl::presentation::controls::GuiToolstripCommand*>(nullptr)) + , commandUndo(static_cast<::vl::presentation::controls::GuiToolstripCommand*>(nullptr)) + , commandRedo(static_cast<::vl::presentation::controls::GuiToolstripCommand*>(nullptr)) + , commandExportPrivate(static_cast<::vl::presentation::controls::GuiToolstripCommand*>(nullptr)) + , commandExportRtf(static_cast<::vl::presentation::controls::GuiToolstripCommand*>(nullptr)) + , commandExportHtml(static_cast<::vl::presentation::controls::GuiToolstripCommand*>(nullptr)) + , menuEdit(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::GuiToolstripToolBar*>(nullptr)) + , __vwsn_precompile_3(static_cast<::vl::presentation::controls::GuiToolstripButton*>(nullptr)) + , __vwsn_precompile_4(static_cast<::vl::presentation::controls::GuiToolstripButton*>(nullptr)) + , __vwsn_precompile_5(static_cast<::vl::presentation::controls::GuiToolstripButton*>(nullptr)) + , __vwsn_precompile_6(static_cast<::vl::presentation::controls::GuiToolstripButton*>(nullptr)) + , __vwsn_precompile_7(static_cast<::vl::presentation::controls::GuiToolstripGroup*>(nullptr)) + , __vwsn_precompile_8(static_cast<::vl::presentation::controls::GuiToolstripButton*>(nullptr)) + , __vwsn_precompile_9(static_cast<::vl::presentation::controls::GuiToolstripButton*>(nullptr)) + , __vwsn_precompile_10(static_cast<::vl::presentation::controls::GuiToolstripGroup*>(nullptr)) + , __vwsn_precompile_11(static_cast<::vl::presentation::controls::GuiToolstripButton*>(nullptr)) + , __vwsn_precompile_12(static_cast<::vl::presentation::controls::GuiToolstripButton*>(nullptr)) + , __vwsn_precompile_13(static_cast<::vl::presentation::controls::GuiToolstripButton*>(nullptr)) + , __vwsn_precompile_14(static_cast<::vl::presentation::controls::GuiLabel*>(nullptr)) + , __vwsn_precompile_15(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_16(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_17(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(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)); + } + +/*********************************************************************** +Class (::demo::MenuToolBarControlTemplateConstructor) +***********************************************************************/ + + void MenuToolBarControlTemplateConstructor::__vwsn_demo_MenuToolBarControlTemplate_Initialize(::demo::MenuToolBarControlTemplate* __vwsn_this_) + { + (this->__vwsn_precompile_0 = __vwsn_this_); + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + } + + MenuToolBarControlTemplateConstructor::MenuToolBarControlTemplateConstructor() + : __vwsn_precompile_0(static_cast<::demo::MenuToolBarControlTemplate*>(nullptr)) + { + } + +/*********************************************************************** +Class (::demo::MenuToolBarControlTemplate) +***********************************************************************/ + + MenuToolBarControlTemplate::MenuToolBarControlTemplate() + { + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString(L"demo::MenuToolBarControlTemplate", 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_MenuToolBarControlTemplate_Initialize(this); + } + + MenuToolBarControlTemplate::~MenuToolBarControlTemplate() + { + 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_Controls/Win11ToolstripMenu/UI/Source/DemoPartialClasses.h b/Tutorial/GacUI_Controls/Win11ToolstripMenu/UI/Source/DemoPartialClasses.h new file mode 100644 index 00000000..2191ac5d --- /dev/null +++ b/Tutorial/GacUI_Controls/Win11ToolstripMenu/UI/Source/DemoPartialClasses.h @@ -0,0 +1,162 @@ +/*********************************************************************** +!!!!!! 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(__GNUC__) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wparentheses-equality" +#elif defined(__clang__) +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wparentheses-equality" +#endif + +namespace vl_workflow_global +{ + struct __vwsnf1_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_; + struct __vwsnf2_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_; +} + +namespace demo +{ + class MainWindowConstructor; + class MainWindow; + class MenuToolBarControlTemplateConstructor; + class MenuToolBarControlTemplate; + + 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_; +#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::demo::MainWindow* self; + ::vl::presentation::controls::GuiToolstripCommand* commandCut; + ::vl::presentation::controls::GuiToolstripCommand* commandCopy; + ::vl::presentation::controls::GuiToolstripCommand* commandPaste; + ::vl::presentation::controls::GuiToolstripCommand* commandDelete; + ::vl::presentation::controls::GuiToolstripCommand* commandUndo; + ::vl::presentation::controls::GuiToolstripCommand* commandRedo; + ::vl::presentation::controls::GuiToolstripCommand* commandExportPrivate; + ::vl::presentation::controls::GuiToolstripCommand* commandExportRtf; + ::vl::presentation::controls::GuiToolstripCommand* commandExportHtml; + ::vl::presentation::controls::GuiToolstripMenu* menuEdit; + ::vl::presentation::controls::GuiToolstripGroupContainer* __vwsn_precompile_0; + ::vl::presentation::controls::GuiToolstripGroup* __vwsn_precompile_1; + ::vl::presentation::controls::GuiToolstripToolBar* __vwsn_precompile_2; + ::vl::presentation::controls::GuiToolstripButton* __vwsn_precompile_3; + ::vl::presentation::controls::GuiToolstripButton* __vwsn_precompile_4; + ::vl::presentation::controls::GuiToolstripButton* __vwsn_precompile_5; + ::vl::presentation::controls::GuiToolstripButton* __vwsn_precompile_6; + ::vl::presentation::controls::GuiToolstripGroup* __vwsn_precompile_7; + ::vl::presentation::controls::GuiToolstripButton* __vwsn_precompile_8; + ::vl::presentation::controls::GuiToolstripButton* __vwsn_precompile_9; + ::vl::presentation::controls::GuiToolstripGroup* __vwsn_precompile_10; + ::vl::presentation::controls::GuiToolstripButton* __vwsn_precompile_11; + ::vl::presentation::controls::GuiToolstripButton* __vwsn_precompile_12; + ::vl::presentation::controls::GuiToolstripButton* __vwsn_precompile_13; + ::vl::presentation::controls::GuiLabel* __vwsn_precompile_14; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_15; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_16; + ::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_precompile_17; + 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_; +#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + MainWindow(); + ~MainWindow(); + }; + + class MenuToolBarControlTemplateConstructor : public ::vl::Object, public ::vl::reflection::Description + { +#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::demo::MenuToolBarControlTemplate* __vwsn_precompile_0; + void __vwsn_demo_MenuToolBarControlTemplate_Initialize(::demo::MenuToolBarControlTemplate* __vwsn_this_); + public: + MenuToolBarControlTemplateConstructor(); + }; + + class MenuToolBarControlTemplate : public ::vl::presentation::templates::GuiControlTemplate, public ::demo::MenuToolBarControlTemplateConstructor, public ::vl::reflection::Description + { + friend class ::demo::MenuToolBarControlTemplateConstructor; +#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + MenuToolBarControlTemplate(); + ~MenuToolBarControlTemplate(); + }; + +} +/*********************************************************************** +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); + + ::vl::presentation::templates::GuiControlTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) 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()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiMouseEventArgs* arguments) const; + }; +} + +#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_Controls/Win11ToolstripMenu/UI/Source/DemoReflection.cpp b/Tutorial/GacUI_Controls/Win11ToolstripMenu/UI/Source/DemoReflection.cpp new file mode 100644 index 00000000..b55bceb2 --- /dev/null +++ b/Tutorial/GacUI_Controls/Win11ToolstripMenu/UI/Source/DemoReflection.cpp @@ -0,0 +1,134 @@ +/*********************************************************************** +!!!!!! 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 +#pragma GCC diagnostic ignored "-Wparentheses-equality" +#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::MenuToolBarControlTemplate) + IMPL_CPP_TYPE_INFO(demo::MenuToolBarControlTemplateConstructor) + +#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_15) + CLASS_MEMBER_FIELD(__vwsn_precompile_16) + CLASS_MEMBER_FIELD(__vwsn_precompile_17) + 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(commandCopy) + CLASS_MEMBER_FIELD(commandCut) + CLASS_MEMBER_FIELD(commandDelete) + CLASS_MEMBER_FIELD(commandExportHtml) + CLASS_MEMBER_FIELD(commandExportPrivate) + CLASS_MEMBER_FIELD(commandExportRtf) + CLASS_MEMBER_FIELD(commandPaste) + CLASS_MEMBER_FIELD(commandRedo) + CLASS_MEMBER_FIELD(commandUndo) + CLASS_MEMBER_FIELD(menuEdit) + CLASS_MEMBER_FIELD(self) + END_CLASS_MEMBER(::demo::MainWindowConstructor) + + BEGIN_CLASS_MEMBER(::demo::MenuToolBarControlTemplate) + CLASS_MEMBER_BASE(::vl::presentation::templates::GuiControlTemplate) + CLASS_MEMBER_BASE(::demo::MenuToolBarControlTemplateConstructor) + CLASS_MEMBER_CONSTRUCTOR(::demo::MenuToolBarControlTemplate*(), NO_PARAMETER) + END_CLASS_MEMBER(::demo::MenuToolBarControlTemplate) + + BEGIN_CLASS_MEMBER(::demo::MenuToolBarControlTemplateConstructor) + CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::MenuToolBarControlTemplateConstructor>(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_demo_MenuToolBarControlTemplate_Initialize, { L"__vwsn_this_" }) + CLASS_MEMBER_FIELD(__vwsn_precompile_0) + END_CLASS_MEMBER(::demo::MenuToolBarControlTemplateConstructor) + +#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::MenuToolBarControlTemplate) + ADD_TYPE_INFO(::demo::MenuToolBarControlTemplateConstructor) + } + + 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_Controls/Win11ToolstripMenu/UI/Source/DemoReflection.h b/Tutorial/GacUI_Controls/Win11ToolstripMenu/UI/Source/DemoReflection.h new file mode 100644 index 00000000..ecbcd3f4 --- /dev/null +++ b/Tutorial/GacUI_Controls/Win11ToolstripMenu/UI/Source/DemoReflection.h @@ -0,0 +1,56 @@ +/*********************************************************************** +!!!!!! 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 +#pragma GCC diagnostic ignored "-Wparentheses-equality" +#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::MenuToolBarControlTemplate) + DECL_TYPE_INFO(::demo::MenuToolBarControlTemplateConstructor) +#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_Controls/Win11ToolstripMenu/Win11ToolstripMenu.vcxproj b/Tutorial/GacUI_Controls/Win11ToolstripMenu/Win11ToolstripMenu.vcxproj new file mode 100644 index 00000000..70d904f2 --- /dev/null +++ b/Tutorial/GacUI_Controls/Win11ToolstripMenu/Win11ToolstripMenu.vcxproj @@ -0,0 +1,164 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 16.0 + Win32Proj + {1955debe-9913-45d6-b819-9adb52e5a447} + Win11ToolstripMenu + 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_Controls/Win11ToolstripMenu/Win11ToolstripMenu.vcxproj.filters b/Tutorial/GacUI_Controls/Win11ToolstripMenu/Win11ToolstripMenu.vcxproj.filters new file mode 100644 index 00000000..43b2d81f --- /dev/null +++ b/Tutorial/GacUI_Controls/Win11ToolstripMenu/Win11ToolstripMenu.vcxproj.filters @@ -0,0 +1,41 @@ + + + + + {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 + + + {2b8b1d80-1fde-40fe-9485-c3562f4c2581} + + + + + Source Files + + + UI + + + + + Resource Files + + + + + UI + + + UI + + + \ No newline at end of file