From 481d392f72b2e25f8ab5bd1fe043562195d51492 Mon Sep 17 00:00:00 2001 From: vczh Date: Wed, 13 Apr 2016 23:55:25 -0700 Subject: [PATCH] Demo: GacUI_Xml\Instance_Control --- Tutorial/Codegen.bat | 3 + Tutorial/GacUI_Xml/GacUI_Xml.sln | 6 + .../Instance_Control/Instance_Control.vcxproj | 101 +++++++++++++++ .../Instance_Control.vcxproj.filters | 41 ++++++ Tutorial/GacUI_Xml/Instance_Control/Main.cpp | 23 ++++ .../GacUI_Xml/Instance_Control/UI/Codegen.bat | 1 + .../Instance_Control/UI/Resource.xml | 38 ++++++ .../Instance_Control/UI/Source/Demo.h | 16 +++ .../UI/Source/DemoPartialClasses.cpp | 105 +++++++++++++++ .../UI/Source/DemoPartialClasses.h | 120 ++++++++++++++++++ Tutorial/GacUI_Xml/UIRes/Instance_Control.bin | Bin 0 -> 222081 bytes 11 files changed, 454 insertions(+) create mode 100644 Tutorial/GacUI_Xml/Instance_Control/Instance_Control.vcxproj create mode 100644 Tutorial/GacUI_Xml/Instance_Control/Instance_Control.vcxproj.filters create mode 100644 Tutorial/GacUI_Xml/Instance_Control/Main.cpp create mode 100644 Tutorial/GacUI_Xml/Instance_Control/UI/Codegen.bat create mode 100644 Tutorial/GacUI_Xml/Instance_Control/UI/Resource.xml create mode 100644 Tutorial/GacUI_Xml/Instance_Control/UI/Source/Demo.h create mode 100644 Tutorial/GacUI_Xml/Instance_Control/UI/Source/DemoPartialClasses.cpp create mode 100644 Tutorial/GacUI_Xml/Instance_Control/UI/Source/DemoPartialClasses.h create mode 100644 Tutorial/GacUI_Xml/UIRes/Instance_Control.bin diff --git a/Tutorial/Codegen.bat b/Tutorial/Codegen.bat index ea38e776..fd5db3ea 100644 --- a/Tutorial/Codegen.bat +++ b/Tutorial/Codegen.bat @@ -46,4 +46,7 @@ popd pushd Instance_MultipleWindows\UI call Codegen.bat popd +pushd Instance_Control\UI +call Codegen.bat +popd popd \ No newline at end of file diff --git a/Tutorial/GacUI_Xml/GacUI_Xml.sln b/Tutorial/GacUI_Xml/GacUI_Xml.sln index fc09e594..7a24277e 100644 --- a/Tutorial/GacUI_Xml/GacUI_Xml.sln +++ b/Tutorial/GacUI_Xml/GacUI_Xml.sln @@ -13,6 +13,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GacUI", "..\Lib\GacUI\GacUI EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Instance_MultipleWindows", "Instance_MultipleWindows\Instance_MultipleWindows.vcxproj", "{427E2DA5-28E0-48E2-9170-7E6F15B1D14C}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Instance_Control", "Instance_Control\Instance_Control.vcxproj", "{EB3325DD-1619-4FC2-8311-137D1924AEFA}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 @@ -35,6 +37,10 @@ Global {427E2DA5-28E0-48E2-9170-7E6F15B1D14C}.Debug|Win32.Build.0 = Debug|Win32 {427E2DA5-28E0-48E2-9170-7E6F15B1D14C}.Release|Win32.ActiveCfg = Release|Win32 {427E2DA5-28E0-48E2-9170-7E6F15B1D14C}.Release|Win32.Build.0 = Release|Win32 + {EB3325DD-1619-4FC2-8311-137D1924AEFA}.Debug|Win32.ActiveCfg = Debug|Win32 + {EB3325DD-1619-4FC2-8311-137D1924AEFA}.Debug|Win32.Build.0 = Debug|Win32 + {EB3325DD-1619-4FC2-8311-137D1924AEFA}.Release|Win32.ActiveCfg = Release|Win32 + {EB3325DD-1619-4FC2-8311-137D1924AEFA}.Release|Win32.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/Tutorial/GacUI_Xml/Instance_Control/Instance_Control.vcxproj b/Tutorial/GacUI_Xml/Instance_Control/Instance_Control.vcxproj new file mode 100644 index 00000000..744c5f38 --- /dev/null +++ b/Tutorial/GacUI_Xml/Instance_Control/Instance_Control.vcxproj @@ -0,0 +1,101 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {EB3325DD-1619-4FC2-8311-137D1924AEFA} + Win32Proj + Instance_Control + + + + Application + true + v120 + Unicode + + + Application + false + v120 + true + Unicode + + + + + + + + + + + + + true + $(ProjectDir)..\..\..\Import;$(IncludePath) + + + false + $(ProjectDir)..\..\..\Import;$(IncludePath) + + + + + + Level3 + Disabled + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + + + Windows + true + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + + + Windows + true + true + true + + + + + {8018d622-66ba-4e65-9d03-bdac37ea9a54} + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Tutorial/GacUI_Xml/Instance_Control/Instance_Control.vcxproj.filters b/Tutorial/GacUI_Xml/Instance_Control/Instance_Control.vcxproj.filters new file mode 100644 index 00000000..bc690734 --- /dev/null +++ b/Tutorial/GacUI_Xml/Instance_Control/Instance_Control.vcxproj.filters @@ -0,0 +1,41 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;hm;inl;inc;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 + + + {25c16778-28b7-4c9e-b9e1-7432f1480780} + + + + + Source Files + + + UI + + + + + Resource Files + + + + + UI + + + UI + + + \ No newline at end of file diff --git a/Tutorial/GacUI_Xml/Instance_Control/Main.cpp b/Tutorial/GacUI_Xml/Instance_Control/Main.cpp new file mode 100644 index 00000000..9bebc9df --- /dev/null +++ b/Tutorial/GacUI_Xml/Instance_Control/Main.cpp @@ -0,0 +1,23 @@ +#include "UI/Source/Demo.h" +#include + +using namespace vl::collections; +using namespace vl::stream; + +int CALLBACK WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int CmdShow) +{ + return SetupWindowsDirect2DRenderer(); +} + +void GuiMain() +{ + { + List errors; + FileStream fileStream(L"../UIRes/Instance_Control.bin", FileStream::ReadOnly); + auto resource = GuiResource::LoadPrecompiledBinary(fileStream, errors); + GetResourceManager()->SetResource(L"Resource", resource); + } + demo::MainWindow window; + window.MoveToScreenCenter(); + GetApplication()->Run(&window); +} \ No newline at end of file diff --git a/Tutorial/GacUI_Xml/Instance_Control/UI/Codegen.bat b/Tutorial/GacUI_Xml/Instance_Control/UI/Codegen.bat new file mode 100644 index 00000000..27f6654b --- /dev/null +++ b/Tutorial/GacUI_Xml/Instance_Control/UI/Codegen.bat @@ -0,0 +1 @@ +..\..\..\..\Tools\GacGen.exe Resource.xml \ No newline at end of file diff --git a/Tutorial/GacUI_Xml/Instance_Control/UI/Resource.xml b/Tutorial/GacUI_Xml/Instance_Control/UI/Resource.xml new file mode 100644 index 00000000..c918ec0e --- /dev/null +++ b/Tutorial/GacUI_Xml/Instance_Control/UI/Resource.xml @@ -0,0 +1,38 @@ + + + + + Source + GacUIReflection.h + Demo + + + + ..\..\UIRes + Instance_Control.bin + + + + + + + + + fontFamily:{Segoe UI} size:32 antialias:true + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Tutorial/GacUI_Xml/Instance_Control/UI/Source/Demo.h b/Tutorial/GacUI_Xml/Instance_Control/UI/Source/Demo.h new file mode 100644 index 00000000..febeba0f --- /dev/null +++ b/Tutorial/GacUI_Xml/Instance_Control/UI/Source/Demo.h @@ -0,0 +1,16 @@ +/*********************************************************************** +Vczh Library++ 3.0 +Developer: Zihan Chen(vczh) +GacUI::Demo + +This file is generated by: Vczh GacUI Resource Code Generator +************************************************************************ +DO NOT MODIFY +***********************************************************************/ + +#ifndef VCZH_GACUI_RESOURCE_CODE_GENERATOR_Demo +#define VCZH_GACUI_RESOURCE_CODE_GENERATOR_Demo + +#include "DemoPartialClasses.h" + +#endif diff --git a/Tutorial/GacUI_Xml/Instance_Control/UI/Source/DemoPartialClasses.cpp b/Tutorial/GacUI_Xml/Instance_Control/UI/Source/DemoPartialClasses.cpp new file mode 100644 index 00000000..e5cc97c5 --- /dev/null +++ b/Tutorial/GacUI_Xml/Instance_Control/UI/Source/DemoPartialClasses.cpp @@ -0,0 +1,105 @@ +/*********************************************************************** +Vczh Library++ 3.0 +Developer: Zihan Chen(vczh) +GacUI::Partial Classes + +This file is generated by: Vczh GacUI Resource Code Generator +************************************************************************ +DO NOT MODIFY +***********************************************************************/ + +#include "Demo.h" + +namespace demo +{ + // #region CLASS_MEMBER_GUIEVENT_HANDLER (DO NOT PUT OTHER CONTENT IN THIS #region.) + + // #endregion CLASS_MEMBER_GUIEVENT_HANDLER + + MainWindow::MainWindow() + { + InitializeComponents(); + } + + MainWindow::~MainWindow() + { + ClearSubscriptions(); + } +} + + +namespace demo +{ + // #region CLASS_MEMBER_GUIEVENT_HANDLER (DO NOT PUT OTHER CONTENT IN THIS #region.) + + // #endregion CLASS_MEMBER_GUIEVENT_HANDLER + + MyControl::MyControl() + { + InitializeComponents(); + } + + MyControl::~MyControl() + { + ClearSubscriptions(); + } +} + + +namespace vl +{ + namespace reflection + { + namespace description + { + #define _ , + IMPL_CPP_TYPE_INFO(demo::MainWindow) + IMPL_CPP_TYPE_INFO(demo::MyControl) + + BEGIN_CLASS_MEMBER(demo::MainWindow) + CLASS_MEMBER_BASE(vl::presentation::controls::GuiWindow) + CLASS_MEMBER_CONSTRUCTOR(demo::MainWindow*(), NO_PARAMETER) + END_CLASS_MEMBER(demo::MainWindow) + + BEGIN_CLASS_MEMBER(demo::MyControl) + CLASS_MEMBER_BASE(vl::presentation::controls::GuiCustomControl) + CLASS_MEMBER_CONSTRUCTOR(demo::MyControl*(), NO_PARAMETER) + END_CLASS_MEMBER(demo::MyControl) + + #undef _ + + class DemoResourceLoader : public Object, public ITypeLoader + { + public: + void Load(ITypeManager* manager) + { + ADD_TYPE_INFO(demo::MainWindow) + ADD_TYPE_INFO(demo::MyControl) + } + + void Unload(ITypeManager* manager) + { + } + }; + + class DemoResourcePlugin : public Object, public vl::presentation::controls::IGuiPlugin + { + public: + void Load()override + { + GetGlobalTypeManager()->AddTypeLoader(new DemoResourceLoader); + } + + void AfterLoad()override + { + } + + void Unload()override + { + } + }; + GUI_REGISTER_PLUGIN(DemoResourcePlugin) + } + } +} + diff --git a/Tutorial/GacUI_Xml/Instance_Control/UI/Source/DemoPartialClasses.h b/Tutorial/GacUI_Xml/Instance_Control/UI/Source/DemoPartialClasses.h new file mode 100644 index 00000000..01f07709 --- /dev/null +++ b/Tutorial/GacUI_Xml/Instance_Control/UI/Source/DemoPartialClasses.h @@ -0,0 +1,120 @@ +/*********************************************************************** +Vczh Library++ 3.0 +Developer: Zihan Chen(vczh) +GacUI::Partial Classes + +This file is generated by: Vczh GacUI Resource Code Generator +************************************************************************ +DO NOT MODIFY +***********************************************************************/ + +#ifndef VCZH_GACUI_RESOURCE_CODE_GENERATOR_Demo_PARTIAL_CLASSES +#define VCZH_GACUI_RESOURCE_CODE_GENERATOR_Demo_PARTIAL_CLASSES + +#include "GacUIReflection.h" + +namespace demo +{ + class MainWindow; + class MyControl; + + template + class MainWindow_ : public vl::presentation::controls::GuiWindow, public vl::presentation::GuiInstancePartialClass, public vl::reflection::Description + { + friend struct vl::reflection::description::CustomTypeDescriptorSelector; + private: + protected: + + void InitializeComponents() + { + if (InitializeFromResource()) + { + } + else + { + } + } + public: + MainWindow_() + :vl::presentation::GuiInstancePartialClass(L"demo::MainWindow") + ,vl::presentation::controls::GuiWindow(vl::presentation::theme::GetCurrentTheme()->CreateWindowStyle()) + { + } + }; + + template + class MyControl_ : public vl::presentation::controls::GuiCustomControl, public vl::presentation::GuiInstancePartialClass, public vl::reflection::Description + { + friend struct vl::reflection::description::CustomTypeDescriptorSelector; + private: + protected: + vl::presentation::controls::GuiCustomControl* self; + + void InitializeComponents() + { + if (InitializeFromResource()) + { + GUI_INSTANCE_REFERENCE(self); + } + else + { + } + } + public: + MyControl_() + :vl::presentation::GuiInstancePartialClass(L"demo::MyControl") + ,vl::presentation::controls::GuiCustomControl(vl::presentation::theme::GetCurrentTheme()->CreateCustomControlStyle()) + ,self(0) + { + } + }; + +} +namespace vl +{ + namespace reflection + { + namespace description + { + DECL_TYPE_INFO(demo::MainWindow) + DECL_TYPE_INFO(demo::MyControl) + + } + } +} +namespace demo +{ + class MainWindow : public demo::MainWindow_ + { + friend class demo::MainWindow_; + friend struct vl::reflection::description::CustomTypeDescriptorSelector; + protected: + + // #region CLASS_MEMBER_GUIEVENT_HANDLER (DO NOT PUT OTHER CONTENT IN THIS #region.) + // #endregion CLASS_MEMBER_GUIEVENT_HANDLER + public: + MainWindow(); + ~MainWindow(); + }; +} + + +namespace demo +{ + class MyControl : public demo::MyControl_ + { + friend class demo::MyControl_; + friend struct vl::reflection::description::CustomTypeDescriptorSelector; + protected: + + // #region CLASS_MEMBER_GUIEVENT_HANDLER (DO NOT PUT OTHER CONTENT IN THIS #region.) + // #endregion CLASS_MEMBER_GUIEVENT_HANDLER + public: + MyControl(); + ~MyControl(); + }; +} + + + +#endif diff --git a/Tutorial/GacUI_Xml/UIRes/Instance_Control.bin b/Tutorial/GacUI_Xml/UIRes/Instance_Control.bin new file mode 100644 index 0000000000000000000000000000000000000000..b7f3a87ddad5da420b3102fce04c743a0c57789f GIT binary patch literal 222081 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