/***********************************************************************
THIS FILE IS AUTOMATICALLY GENERATED. DO NOT MODIFY
DEVELOPER: Zihan Chen(vczh)
***********************************************************************/
#include "GacUIReflection.h"

/***********************************************************************
.\REFLECTION\GUIINSTANCECOMPILEDWORKFLOW.CPP
***********************************************************************/

namespace vl
{
	namespace presentation
	{
		using namespace stream;
		using namespace workflow::runtime;
		using namespace controls;
		using namespace reflection;
		using namespace reflection::description;

/***********************************************************************
GuiInstanceSharedScript
***********************************************************************/

		GuiInstanceCompiledWorkflow::GuiInstanceCompiledWorkflow()
		{
		}

		GuiInstanceCompiledWorkflow::~GuiInstanceCompiledWorkflow()
		{
			UnloadAssembly();
		}

		bool GuiInstanceCompiledWorkflow::Initialize(bool initializeContext, workflow::runtime::WfAssemblyLoadErrors& loadErrors)
		{
			if (binaryToLoad)
			{
				assembly = WfAssembly::Deserialize(*binaryToLoad.Obj(), loadErrors);
				if (!assembly)
				{
					return false;
				}
				binaryToLoad = nullptr;
#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA
				context = nullptr;
#endif
			}

#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA
			if (initializeContext && !context)
			{
				context = Ptr(new WfRuntimeGlobalContext(assembly));
				LoadFunction<void()>(context, L"<initialize>")();
			}
#endif
			if (initializeContext)
			{
				if (assembly->typeImpl)
				{
					if (auto tm = GetGlobalTypeManager())
					{
						tm->AddTypeLoader(assembly->typeImpl);
					}
				}
			}
			return true;
		}

		void GuiInstanceCompiledWorkflow::UnloadAssembly()
		{
			UnloadTypes();
			assembly = nullptr;
		}

		void GuiInstanceCompiledWorkflow::UnloadTypes()
		{
#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA
			context = nullptr;
#endif
			if (assembly && assembly->typeImpl)
			{
				if (auto tm = GetGlobalTypeManager())
				{
					tm->RemoveTypeLoader(assembly->typeImpl);
				}
			}
		}

/***********************************************************************
Compiled Workflow Type Resolver (Workflow)
***********************************************************************/

		class GuiResourceCompiledWorkflowTypeResolver
			: public Object
			, public IGuiResourceTypeResolver
			, private IGuiResourceTypeResolver_Initialize
			, private IGuiResourceTypeResolver_DirectLoadStream
		{
		public:
			WString GetType()override
			{
				return L"Workflow";
			}

			bool XmlSerializable()override
			{
				return false;
			}

			bool StreamSerializable()override
			{
				return true;
			}

			bool GetInitializePassSupport(vint passIndex)override
			{
				switch (passIndex)
				{
				case Workflow_Initialize:
					return true;
				default:
					return false;
				}
			}

			void Initialize(Ptr<GuiResourceItem> resource, GuiResourceInitializeContext& context, GuiResourceError::List& errors)override
			{
				if (auto compiled = resource->GetContent().Cast<GuiInstanceCompiledWorkflow>())
				{
					switch (context.passIndex)
					{
					case 0:
						if (compiled->type == GuiInstanceCompiledWorkflow::InstanceClass)
						{
							if (context.usage == GuiResourceUsage::InstanceClass)
							{
								WfAssemblyLoadErrors loadErrors;
								if (!compiled->Initialize(true, loadErrors))
								{
									for (auto loadError : loadErrors.duplicatedTypes)
									{
										errors.Add({ {resource},L"Failed to add an existing type: " + loadError });
									}
									for (auto loadError : loadErrors.unresolvedTypes)
									{
										errors.Add({ {resource},L"Unable to resolve type: " + loadError });
									}
									for (auto loadError : loadErrors.unresolvedMembers)
									{
										errors.Add({ {resource},L"Unable to resolve member: " + loadError });
									}
								}
							}
						}
						break;
					}
				}
			}

			IGuiResourceTypeResolver_Initialize* Initialize()override
			{
				return this;
			}

			IGuiResourceTypeResolver_DirectLoadStream* DirectLoadStream()override
			{
				return this;
			}

			void SerializePrecompiled(Ptr<GuiResourceItem> resource, Ptr<DescriptableObject> content, stream::IStream& resourceStream)override
			{
				if (auto obj = content.Cast<GuiInstanceCompiledWorkflow>())
				{
					internal::ContextFreeWriter writer(resourceStream);

					vint type = (vint)obj->type;
					writer << type;

					if (obj->type == GuiInstanceCompiledWorkflow::InstanceClass)
					{
						stream::MemoryStream memoryStream;
						obj->assembly->Serialize(memoryStream);
						writer << (stream::IStream&)memoryStream;
					}
				}
			}

			Ptr<DescriptableObject> ResolveResourcePrecompiled(Ptr<GuiResourceItem> resource, stream::IStream& resourceStream, GuiResourceError::List& errors)override
			{
				internal::ContextFreeReader reader(resourceStream);

				vint type;
				reader << type;

				auto obj = Ptr(new GuiInstanceCompiledWorkflow);
				obj->type = (GuiInstanceCompiledWorkflow::AssemblyType)type;
				if (obj->type == GuiInstanceCompiledWorkflow::InstanceClass)
				{
					auto memoryStream = Ptr(new stream::MemoryStream);
					reader << (stream::IStream&)*memoryStream.Obj();
					obj->binaryToLoad = memoryStream;
				}
				return obj;
			}
		};

/***********************************************************************
Plugin
***********************************************************************/

		class GuiRuntimeTypeResolversPlugin : public Object, public IGuiPlugin
		{
		public:

			GUI_PLUGIN_NAME(GacUI_Compiler_WorkflowTypeResolvers)
			{
				GUI_PLUGIN_DEPEND(GacUI_Res_ResourceResolver);
			}

			void Load(bool controllerUnrelatedPlugins, bool controllerRelatedPlugins)override
			{
				if (controllerUnrelatedPlugins)
				{
					IGuiResourceResolverManager* manager = GetResourceResolverManager();
					manager->SetTypeResolver(Ptr(new GuiResourceCompiledWorkflowTypeResolver));
				}
			}

			void Unload(bool controllerUnrelatedPlugins, bool controllerRelatedPlugins)override
			{
			}
		};
		GUI_REGISTER_PLUGIN(GuiRuntimeTypeResolversPlugin)
	}
}

/***********************************************************************
.\REFLECTION\TYPEDESCRIPTORS\GUIREFLECTIONBASIC.CPP
***********************************************************************/

namespace vl
{
	namespace reflection
	{
		namespace description
		{
			using namespace glr::xml;
			using namespace presentation;
			using namespace helper_types;

#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA

/***********************************************************************
Type Declaration
***********************************************************************/

#define _ ,

#define GUI_TEMPLATE_PROPERTY_REFLECTION(CLASS, TYPE, NAME)\
	CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(NAME)

			BEGIN_STRUCT_MEMBER(SiteValue)
				STRUCT_MEMBER(row)
				STRUCT_MEMBER(column)
				STRUCT_MEMBER(rowSpan)
				STRUCT_MEMBER(columnSpan)
			END_STRUCT_MEMBER(SiteValue)

			BEGIN_CLASS_MEMBER(LocalizedStrings)
				CLASS_MEMBER_STATIC_METHOD(FirstOrEmpty, {L"formats"})
			END_CLASS_MEMBER(LocalizedStrings)

			BEGIN_STRUCT_MEMBER(Color)
				valueType = Ptr(new SerializableValueType<Color>);
				serializableType = Ptr(new SerializableType<Color>);
				STRUCT_MEMBER(r)
				STRUCT_MEMBER(g)
				STRUCT_MEMBER(b)
				STRUCT_MEMBER(a)
				STRUCT_MEMBER(value)
			END_STRUCT_MEMBER(Color)

			BEGIN_ENUM_ITEM(Alignment)
				ENUM_CLASS_ITEM(Left)
				ENUM_CLASS_ITEM(Top)
				ENUM_CLASS_ITEM(Center)
				ENUM_CLASS_ITEM(Right)
				ENUM_CLASS_ITEM(Bottom)
			END_ENUM_ITEM(Alignment)

			BEGIN_ENUM_ITEM(AxisDirection)
				ENUM_CLASS_ITEM(LeftDown)
				ENUM_CLASS_ITEM(RightDown)
				ENUM_CLASS_ITEM(LeftUp)
				ENUM_CLASS_ITEM(RightUp)
				ENUM_CLASS_ITEM(DownLeft)
				ENUM_CLASS_ITEM(DownRight)
				ENUM_CLASS_ITEM(UpLeft)
				ENUM_CLASS_ITEM(UpRight)
			END_ENUM_ITEM(AxisDirection)

			BEGIN_STRUCT_MEMBER(TextPos)
				STRUCT_MEMBER(row)
				STRUCT_MEMBER(column)
			END_STRUCT_MEMBER(TextPos)

			BEGIN_STRUCT_MEMBER(GridPos)
				STRUCT_MEMBER(row)
				STRUCT_MEMBER(column)
			END_STRUCT_MEMBER(GridPos)

			BEGIN_STRUCT_MEMBER(NativeCoordinate)
				STRUCT_MEMBER(value)
			END_STRUCT_MEMBER(NativeCoordinate)

			BEGIN_STRUCT_MEMBER(Point)
				STRUCT_MEMBER(x)
				STRUCT_MEMBER(y)
			END_STRUCT_MEMBER(Point)

			BEGIN_STRUCT_MEMBER(NativePoint)
				STRUCT_MEMBER(x)
				STRUCT_MEMBER(y)
			END_STRUCT_MEMBER(NativePoint)

			BEGIN_STRUCT_MEMBER(Size)
				STRUCT_MEMBER(x)
				STRUCT_MEMBER(y)
			END_STRUCT_MEMBER(Size)

			BEGIN_STRUCT_MEMBER(NativeSize)
				STRUCT_MEMBER(x)
				STRUCT_MEMBER(y)
			END_STRUCT_MEMBER(NativeSize)

			BEGIN_STRUCT_MEMBER(Rect)
				STRUCT_MEMBER(x1)
				STRUCT_MEMBER(y1)
				STRUCT_MEMBER(x2)
				STRUCT_MEMBER(y2)
			END_STRUCT_MEMBER(Rect)

			BEGIN_STRUCT_MEMBER(NativeRect)
				STRUCT_MEMBER(x1)
				STRUCT_MEMBER(y1)
				STRUCT_MEMBER(x2)
				STRUCT_MEMBER(y2)
			END_STRUCT_MEMBER(NativeRect)

			BEGIN_STRUCT_MEMBER(Margin)
				STRUCT_MEMBER(left)
				STRUCT_MEMBER(top)
				STRUCT_MEMBER(right)
				STRUCT_MEMBER(bottom)
			END_STRUCT_MEMBER(Margin)

			BEGIN_STRUCT_MEMBER(NativeMargin)
				STRUCT_MEMBER(left)
				STRUCT_MEMBER(top)
				STRUCT_MEMBER(right)
				STRUCT_MEMBER(bottom)
			END_STRUCT_MEMBER(NativeMargin)

			BEGIN_STRUCT_MEMBER(FontProperties)
				STRUCT_MEMBER(fontFamily)
				STRUCT_MEMBER(size)
				STRUCT_MEMBER(bold)
				STRUCT_MEMBER(italic)
				STRUCT_MEMBER(underline)
				STRUCT_MEMBER(strikeline)
				STRUCT_MEMBER(antialias)
				STRUCT_MEMBER(verticalAntialias)
			END_STRUCT_MEMBER(FontProperties)

#define GUI_DEFINE_KEYBOARD_CODE_ENUM_ITEM(NAME, CODE) ENUM_CLASS_ITEM(KEY_##NAME)
			BEGIN_ENUM_ITEM(VKEY)
				ENUM_CLASS_ITEM(KEY_UNKNOWN)
				GUI_DEFINE_KEYBOARD_CODE(GUI_DEFINE_KEYBOARD_CODE_ENUM_ITEM)
			END_ENUM_ITEM(VKEY)
#undef GUI_DEFINE_KEYBOARD_CODE_ENUM_ITEM

			BEGIN_STRUCT_MEMBER_FLAG(GlobalStringKey, TypeDescriptorFlags::Primitive)
				valueType = Ptr(new SerializableValueType<GlobalStringKey>);
				serializableType = Ptr(new SerializableType<GlobalStringKey>);
			END_STRUCT_MEMBER(GlobalStringKey)

			BEGIN_INTERFACE_MEMBER_NOPROXY(INativeImageFrame)
				CLASS_MEMBER_METHOD(GetImage, NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetSize, NO_PARAMETER)
			END_INTERFACE_MEMBER(INativeImageFrame)

			BEGIN_INTERFACE_MEMBER_NOPROXY(INativeImage)
				CLASS_MEMBER_METHOD(GetFormat, NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetFrameCount, NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetFrame, {L"index"})
				CLASS_MEMBER_EXTERNALCTOR(Ptr<INativeImage>(const WString&), {L"filePath"}, vl::reflection::description::INativeImage_Constructor)
			END_INTERFACE_MEMBER(INativeImage)

			BEGIN_ENUM_ITEM(INativeImage::FormatType)
				ENUM_ITEM_NAMESPACE(INativeImage)
				ENUM_NAMESPACE_ITEM(Bmp)
				ENUM_NAMESPACE_ITEM(Gif)
				ENUM_NAMESPACE_ITEM(Icon)
				ENUM_NAMESPACE_ITEM(Jpeg)
				ENUM_NAMESPACE_ITEM(Png)
				ENUM_NAMESPACE_ITEM(Tiff)
				ENUM_NAMESPACE_ITEM(Wmp)
				ENUM_NAMESPACE_ITEM(Unknown)
			END_ENUM_ITEM(INativeImage::FormatType)

			BEGIN_INTERFACE_MEMBER_NOPROXY(INativeCursor)
				CLASS_MEMBER_METHOD(IsSystemCursor, NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetSystemCursorType, NO_PARAMETER)
				CLASS_MEMBER_EXTERNALCTOR(INativeCursor*(), NO_PARAMETER, vl::reflection::description::INativeCursor_Constructor1)
				CLASS_MEMBER_EXTERNALCTOR(INativeCursor*(INativeCursor::SystemCursorType), NO_PARAMETER, vl::reflection::description::INativeCursor_Constructor2)
			END_INTERFACE_MEMBER(INativeCursor)

			BEGIN_ENUM_ITEM(INativeCursor::SystemCursorType)
				ENUM_ITEM_NAMESPACE(INativeCursor)
				ENUM_NAMESPACE_ITEM(SmallWaiting)
				ENUM_NAMESPACE_ITEM(LargeWaiting)
				ENUM_NAMESPACE_ITEM(Arrow)
				ENUM_NAMESPACE_ITEM(Cross)
				ENUM_NAMESPACE_ITEM(Hand)
				ENUM_NAMESPACE_ITEM(Help)
				ENUM_NAMESPACE_ITEM(IBeam)
				ENUM_NAMESPACE_ITEM(SizeAll)
				ENUM_NAMESPACE_ITEM(SizeNESW)
				ENUM_NAMESPACE_ITEM(SizeNS)
				ENUM_NAMESPACE_ITEM(SizeNWSE)
				ENUM_NAMESPACE_ITEM(SizeWE)
			END_ENUM_ITEM(INativeCursor::SystemCursorType)

			BEGIN_ENUM_ITEM(BoolOption)
				ENUM_CLASS_ITEM(AlwaysTrue)
				ENUM_CLASS_ITEM(AlwaysFalse)
				ENUM_CLASS_ITEM(Customizable)
			END_ENUM_ITEM(BoolOption)

			BEGIN_STRUCT_MEMBER(NativeWindowFrameConfig)
				STRUCT_MEMBER(MaximizedBoxOption)
				STRUCT_MEMBER(MinimizedBoxOption)
				STRUCT_MEMBER(BorderOption)
				STRUCT_MEMBER(SizeBoxOption)
				STRUCT_MEMBER(IconVisibleOption)
				STRUCT_MEMBER(TitleBarOption)
				STRUCT_MEMBER(CustomFrameEnabled)
			END_STRUCT_MEMBER(NativeWindowFrameConfig)

			BEGIN_INTERFACE_MEMBER_NOPROXY(INativeWindow)
				CLASS_MEMBER_PROPERTY_FAST(Bounds)
				CLASS_MEMBER_PROPERTY_FAST(ClientSize)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(ClientBoundsInScreen)
				CLASS_MEMBER_PROPERTY_FAST(Title)
				CLASS_MEMBER_PROPERTY_FAST(WindowCursor)
				CLASS_MEMBER_PROPERTY_FAST(CaretPoint)
				CLASS_MEMBER_PROPERTY_FAST(Parent)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(WindowMode)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(CustomFramePadding)
				CLASS_MEMBER_PROPERTY_FAST(Icon)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(SizeState)
				CLASS_MEMBER_PROPERTY_FAST(MinimizedBox)
				CLASS_MEMBER_PROPERTY_FAST(MaximizedBox)
				CLASS_MEMBER_PROPERTY_FAST(Border)
				CLASS_MEMBER_PROPERTY_FAST(SizeBox)
				CLASS_MEMBER_PROPERTY_FAST(IconVisible)
				CLASS_MEMBER_PROPERTY_FAST(TitleBar)
				CLASS_MEMBER_PROPERTY_FAST(TopMost)

				CLASS_MEMBER_METHOD(SuggestMinClientSize, { L"size" })
				CLASS_MEMBER_METHOD(EnableCustomFrameMode, NO_PARAMETER)
				CLASS_MEMBER_METHOD(DisableCustomFrameMode, NO_PARAMETER)
				CLASS_MEMBER_METHOD(IsCustomFrameModeEnabled, NO_PARAMETER)
				CLASS_MEMBER_METHOD(Show, NO_PARAMETER)
				CLASS_MEMBER_METHOD(ShowDeactivated, NO_PARAMETER)
				CLASS_MEMBER_METHOD(ShowRestored, NO_PARAMETER)
				CLASS_MEMBER_METHOD(ShowMaximized, NO_PARAMETER)
				CLASS_MEMBER_METHOD(ShowMinimized, NO_PARAMETER)
				CLASS_MEMBER_METHOD(Hide, NO_PARAMETER)
				CLASS_MEMBER_METHOD(IsVisible, NO_PARAMETER)
				CLASS_MEMBER_METHOD(Enable, NO_PARAMETER)
				CLASS_MEMBER_METHOD(Disable, NO_PARAMETER)
				CLASS_MEMBER_METHOD(IsEnabled, NO_PARAMETER)
				CLASS_MEMBER_METHOD(SetActivate, NO_PARAMETER)
				CLASS_MEMBER_METHOD(IsActivated, NO_PARAMETER)
				CLASS_MEMBER_METHOD(IsRenderingAsActivated, NO_PARAMETER)
				CLASS_MEMBER_METHOD(ShowInTaskBar, NO_PARAMETER)
				CLASS_MEMBER_METHOD(HideInTaskBar, NO_PARAMETER)
				CLASS_MEMBER_METHOD(IsAppearedInTaskBar, NO_PARAMETER)
				CLASS_MEMBER_METHOD(EnableActivate, NO_PARAMETER)
				CLASS_MEMBER_METHOD(DisableActivate, NO_PARAMETER)
				CLASS_MEMBER_METHOD(IsEnabledActivate, NO_PARAMETER)
				CLASS_MEMBER_METHOD(RequireCapture, NO_PARAMETER)
				CLASS_MEMBER_METHOD(ReleaseCapture, NO_PARAMETER)
				CLASS_MEMBER_METHOD(IsCapturing, NO_PARAMETER)
				CLASS_MEMBER_METHOD(RedrawContent, NO_PARAMETER)
			END_INTERFACE_MEMBER(INativeWindow)

			BEGIN_ENUM_ITEM(INativeWindow::WindowSizeState)
				ENUM_ITEM_NAMESPACE(INativeWindow)
				ENUM_NAMESPACE_ITEM(Minimized)
				ENUM_NAMESPACE_ITEM(Restored)
				ENUM_NAMESPACE_ITEM(Maximized)
			END_ENUM_ITEM(INativeWindow::WindowSizeState)

			BEGIN_ENUM_ITEM(INativeWindow::WindowMode)
				ENUM_ITEM_NAMESPACE(INativeWindow)
				ENUM_NAMESPACE_ITEM(Normal)
				ENUM_NAMESPACE_ITEM(Tooltip)
				ENUM_NAMESPACE_ITEM(Popup)
				ENUM_NAMESPACE_ITEM(Menu)
			END_ENUM_ITEM(INativeWindow::WindowMode)

			BEGIN_INTERFACE_MEMBER_NOPROXY(INativeDelay)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(Status)

				CLASS_MEMBER_METHOD(Delay, {L"milliseconds"})
				CLASS_MEMBER_METHOD(Cancel, NO_PARAMETER)
			END_INTERFACE_MEMBER(INativeDelay)

			BEGIN_ENUM_ITEM(INativeDelay::ExecuteStatus)
				ENUM_ITEM_NAMESPACE(INativeDelay)
				ENUM_NAMESPACE_ITEM(Pending)
				ENUM_NAMESPACE_ITEM(Executing)
				ENUM_NAMESPACE_ITEM(Executed)
				ENUM_NAMESPACE_ITEM(Canceled)
			END_ENUM_ITEM(INativeDelay::ExecuteStatus)

			BEGIN_INTERFACE_MEMBER_NOPROXY(INativeScreen)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(Bounds);
				CLASS_MEMBER_PROPERTY_READONLY_FAST(ClientBounds);
				CLASS_MEMBER_PROPERTY_READONLY_FAST(Name);
				CLASS_MEMBER_PROPERTY_READONLY_FAST(ScalingX);
				CLASS_MEMBER_PROPERTY_READONLY_FAST(ScalingY);

				CLASS_MEMBER_METHOD(IsPrimary, NO_PARAMETER)
			END_INTERFACE_MEMBER(INativeScreen)

			BEGIN_INTERFACE_MEMBER_NOPROXY(INativeImageService)
				CLASS_MEMBER_METHOD(CreateImageFromFile, {L"path"})
			END_INTERFACE_MEMBER(INativeImageService)

			BEGIN_INTERFACE_MEMBER_NOPROXY(INativeResourceService)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(DefaultSystemCursor)
				CLASS_MEMBER_PROPERTY_FAST(DefaultFont)

				CLASS_MEMBER_METHOD(GetSystemCursor, {L"type"})
				CLASS_MEMBER_METHOD(EnumerateFonts, {L"fonts"})
			END_INTERFACE_MEMBER(INativeResourceService)

			BEGIN_INTERFACE_MEMBER_NOPROXY(INativeAsyncService)
				CLASS_MEMBER_METHOD(IsInMainThread, {L"type"})
				CLASS_MEMBER_METHOD(InvokeAsync, {L"proc"})
				CLASS_MEMBER_METHOD(InvokeInMainThread, {L"window" _ L"proc"})
				CLASS_MEMBER_METHOD(InvokeInMainThreadAndWait, {L"window" _ L"proc" _ L"milliseconds"})
				CLASS_MEMBER_METHOD(DelayExecute, {L"proc" _ L"milliseconds"})
				CLASS_MEMBER_METHOD(DelayExecuteInMainThread, {L"proc" _ L"milliseconds"})
			END_INTERFACE_MEMBER(INativeAsyncService)

			BEGIN_INTERFACE_MEMBER_NOPROXY(INativeClipboardReader)
				CLASS_MEMBER_METHOD(ContainsText, NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetText, NO_PARAMETER)
				CLASS_MEMBER_METHOD(ContainsDocument, NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetDocument, NO_PARAMETER)
				CLASS_MEMBER_METHOD(ContainsImage, NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetImage, NO_PARAMETER)
			END_INTERFACE_MEMBER(INativeClipboardReader)

			BEGIN_INTERFACE_MEMBER_NOPROXY(INativeClipboardWriter)
				CLASS_MEMBER_METHOD(SetText, { L"value" })
				CLASS_MEMBER_METHOD(SetDocument, { L"value" })
				CLASS_MEMBER_METHOD(SetImage, { L"value" })
				CLASS_MEMBER_METHOD(Submit, NO_PARAMETER)
			END_INTERFACE_MEMBER(INativeClipboardWriter)

			BEGIN_INTERFACE_MEMBER_NOPROXY(INativeClipboardService)
				CLASS_MEMBER_METHOD(ReadClipboard, NO_PARAMETER)
				CLASS_MEMBER_METHOD(WriteClipboard, NO_PARAMETER)
			END_INTERFACE_MEMBER(INativeClipboardService)

			BEGIN_INTERFACE_MEMBER_NOPROXY(INativeScreenService)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(ScreenCount)

				CLASS_MEMBER_METHOD_OVERLOAD(GetScreen, {L"index"}, INativeScreen*(INativeScreenService::*)(vint))
				CLASS_MEMBER_METHOD_OVERLOAD(GetScreen, {L"window"}, INativeScreen*(INativeScreenService::*)(INativeWindow*))
			END_INTERFACE_MEMBER(INativeScreenService)

			BEGIN_ENUM_ITEM(NativeGlobalShortcutKeyResult)
				ENUM_ITEM_NAMESPACE(NativeGlobalShortcutKeyResult)
				ENUM_NAMESPACE_ITEM(NotSupported)
				ENUM_NAMESPACE_ITEM(Occupied)
				ENUM_NAMESPACE_ITEM(ValidIdBegins)
			END_ENUM_ITEM(NativeGlobalShortcutKeyResult)

			BEGIN_INTERFACE_MEMBER_NOPROXY(INativeInputService)
				CLASS_MEMBER_METHOD(IsKeyPressing, { L"code" })
				CLASS_MEMBER_METHOD(IsKeyToggled, { L"code" })
				CLASS_MEMBER_METHOD(GetKeyName, { L"code" })
				CLASS_MEMBER_METHOD(GetKey, { L"name" })
				CLASS_MEMBER_METHOD(RegisterGlobalShortcutKey, { L"ctrl" _ L"shift" _ L"alt" _ L"key" })
				CLASS_MEMBER_METHOD(UnregisterGlobalShortcutKey, { L"id" })
			END_INTERFACE_MEMBER(INativeInputService)

			BEGIN_ENUM_ITEM(INativeDialogService::MessageBoxButtonsInput)
				ENUM_ITEM_NAMESPACE(INativeDialogService)
				ENUM_NAMESPACE_ITEM(DisplayOK)
				ENUM_NAMESPACE_ITEM(DisplayOKCancel)
				ENUM_NAMESPACE_ITEM(DisplayYesNo)
				ENUM_NAMESPACE_ITEM(DisplayYesNoCancel)
				ENUM_NAMESPACE_ITEM(DisplayRetryCancel)
				ENUM_NAMESPACE_ITEM(DisplayAbortRetryIgnore)
				ENUM_NAMESPACE_ITEM(DisplayCancelTryAgainContinue)
			END_ENUM_ITEM(INativeDialogService::MessageBoxButtonsInput)

			BEGIN_ENUM_ITEM(INativeDialogService::MessageBoxButtonsOutput)
				ENUM_ITEM_NAMESPACE(INativeDialogService)
				ENUM_NAMESPACE_ITEM(SelectOK)
				ENUM_NAMESPACE_ITEM(SelectCancel)
				ENUM_NAMESPACE_ITEM(SelectYes)
				ENUM_NAMESPACE_ITEM(SelectNo)
				ENUM_NAMESPACE_ITEM(SelectRetry)
				ENUM_NAMESPACE_ITEM(SelectAbort)
				ENUM_NAMESPACE_ITEM(SelectIgnore)
				ENUM_NAMESPACE_ITEM(SelectTryAgain)
				ENUM_NAMESPACE_ITEM(SelectContinue)
			END_ENUM_ITEM(INativeDialogService::MessageBoxButtonsOutput)

			BEGIN_ENUM_ITEM(INativeDialogService::MessageBoxDefaultButton)
				ENUM_ITEM_NAMESPACE(INativeDialogService)
				ENUM_NAMESPACE_ITEM(DefaultFirst)
				ENUM_NAMESPACE_ITEM(DefaultSecond)
				ENUM_NAMESPACE_ITEM(DefaultThird)
			END_ENUM_ITEM(INativeDialogService::MessageBoxDefaultButton)

			BEGIN_ENUM_ITEM(INativeDialogService::MessageBoxIcons)
				ENUM_ITEM_NAMESPACE(INativeDialogService)
				ENUM_NAMESPACE_ITEM(IconNone)
				ENUM_NAMESPACE_ITEM(IconError)
				ENUM_NAMESPACE_ITEM(IconQuestion)
				ENUM_NAMESPACE_ITEM(IconWarning)
				ENUM_NAMESPACE_ITEM(IconInformation)
			END_ENUM_ITEM(INativeDialogService::MessageBoxIcons)

			BEGIN_ENUM_ITEM(INativeDialogService::MessageBoxModalOptions)
				ENUM_ITEM_NAMESPACE(INativeDialogService)
				ENUM_NAMESPACE_ITEM(ModalWindow)
				ENUM_NAMESPACE_ITEM(ModalTask)
				ENUM_NAMESPACE_ITEM(ModalSystem)
			END_ENUM_ITEM(INativeDialogService::MessageBoxModalOptions)

			BEGIN_ENUM_ITEM(INativeDialogService::ColorDialogCustomColorOptions)
				ENUM_ITEM_NAMESPACE(INativeDialogService)
				ENUM_NAMESPACE_ITEM(CustomColorDisabled)
				ENUM_NAMESPACE_ITEM(CustomColorEnabled)
				ENUM_NAMESPACE_ITEM(CustomColorOpened)
			END_ENUM_ITEM(INativeDialogService::ColorDialogCustomColorOptions)

			BEGIN_ENUM_ITEM(INativeDialogService::FileDialogTypes)
				ENUM_ITEM_NAMESPACE(INativeDialogService)
				ENUM_NAMESPACE_ITEM(FileDialogOpen)
				ENUM_NAMESPACE_ITEM(FileDialogOpenPreview)
				ENUM_NAMESPACE_ITEM(FileDialogSave)
				ENUM_NAMESPACE_ITEM(FileDialogSavePreview)
			END_ENUM_ITEM(INativeDialogService::FileDialogTypes)

			BEGIN_ENUM_ITEM_MERGABLE(INativeDialogService::FileDialogOptions)
				ENUM_ITEM_NAMESPACE(INativeDialogService)
				ENUM_NAMESPACE_ITEM(None)
				ENUM_NAMESPACE_ITEM(FileDialogAllowMultipleSelection)
				ENUM_NAMESPACE_ITEM(FileDialogFileMustExist)
				ENUM_NAMESPACE_ITEM(FileDialogShowReadOnlyCheckBox)
				ENUM_NAMESPACE_ITEM(FileDialogDereferenceLinks)
				ENUM_NAMESPACE_ITEM(FileDialogShowNetworkButton)
				ENUM_NAMESPACE_ITEM(FileDialogPromptCreateFile)
				ENUM_NAMESPACE_ITEM(FileDialogPromptOverwriteFile)
				ENUM_NAMESPACE_ITEM(FileDialogDirectoryMustExist)
				ENUM_NAMESPACE_ITEM(FileDialogAddToRecent)
			END_ENUM_ITEM(INativeDialogService::FileDialogOptions)

			BEGIN_ENUM_ITEM(INativeWindowListener::HitTestResult)
				ENUM_ITEM_NAMESPACE(INativeWindowListener)
				ENUM_NAMESPACE_ITEM(BorderNoSizing)
				ENUM_NAMESPACE_ITEM(BorderLeft)
				ENUM_NAMESPACE_ITEM(BorderRight)
				ENUM_NAMESPACE_ITEM(BorderTop)
				ENUM_NAMESPACE_ITEM(BorderBottom)
				ENUM_NAMESPACE_ITEM(BorderLeftTop)
				ENUM_NAMESPACE_ITEM(BorderRightTop)
				ENUM_NAMESPACE_ITEM(BorderLeftBottom)
				ENUM_NAMESPACE_ITEM(BorderRightBottom)
				ENUM_NAMESPACE_ITEM(Title)
				ENUM_NAMESPACE_ITEM(ButtonMinimum)
				ENUM_NAMESPACE_ITEM(ButtonMaximum)
				ENUM_NAMESPACE_ITEM(ButtonClose)
				ENUM_NAMESPACE_ITEM(Client)
				ENUM_NAMESPACE_ITEM(Icon)
				ENUM_NAMESPACE_ITEM(NoDecision)
			END_ENUM_ITEM(INativeWindowListener::HitTestResult)

			// no CallbackService, WindowService, DialogService
			BEGIN_INTERFACE_MEMBER_NOPROXY(INativeController)
				CLASS_MEMBER_STATIC_EXTERNALMETHOD(GetCurrentController, NO_PARAMETER, INativeController*(*)(), vl::presentation::GetCurrentController)

				CLASS_MEMBER_PROPERTY_READONLY_FAST(ExecutablePath)

				CLASS_MEMBER_METHOD(ResourceService, NO_PARAMETER)
				CLASS_MEMBER_METHOD(AsyncService, NO_PARAMETER)
				CLASS_MEMBER_METHOD(ClipboardService, NO_PARAMETER)
				CLASS_MEMBER_METHOD(ImageService, NO_PARAMETER)
				CLASS_MEMBER_METHOD(ScreenService, NO_PARAMETER)
				CLASS_MEMBER_METHOD(InputService, NO_PARAMETER)
			END_INTERFACE_MEMBER(INativeController)

			BEGIN_CLASS_MEMBER(GuiImageData)
				CLASS_MEMBER_CONSTRUCTOR(Ptr<GuiImageData>(), NO_PARAMETER)
				CLASS_MEMBER_CONSTRUCTOR(Ptr<GuiImageData>(Ptr<INativeImage>, vint), {L"image" _ L"frameIndex"})

				CLASS_MEMBER_METHOD(GetImage, NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetFrameIndex, NO_PARAMETER)

				CLASS_MEMBER_PROPERTY_READONLY(Image, GetImage)
				CLASS_MEMBER_PROPERTY_READONLY(FrameIndex, GetFrameIndex)
			END_CLASS_MEMBER(GuiImageData)

			BEGIN_CLASS_MEMBER(GuiTextData)
				CLASS_MEMBER_CONSTRUCTOR(Ptr<GuiTextData>(), NO_PARAMETER)
				CLASS_MEMBER_CONSTRUCTOR(Ptr<GuiTextData>(const WString&), {L"text"})

				CLASS_MEMBER_PROPERTY_READONLY_FAST(Text)
			END_CLASS_MEMBER(GuiTextData)
				
			BEGIN_STRUCT_MEMBER(DocumentFontSize)
				valueType = Ptr(new SerializableValueType<DocumentFontSize>);
				serializableType = Ptr(new SerializableType<DocumentFontSize>);
				STRUCT_MEMBER(size)
				STRUCT_MEMBER(relative)
			END_STRUCT_MEMBER(DocumentFontSize)

			BEGIN_CLASS_MEMBER(DocumentStyleProperties)
				CLASS_MEMBER_CONSTRUCTOR(Ptr<DocumentStyleProperties>(), NO_PARAMETER)

				CLASS_MEMBER_FIELD(face)
				CLASS_MEMBER_FIELD(size)
				CLASS_MEMBER_FIELD(color)
				CLASS_MEMBER_FIELD(backgroundColor)
				CLASS_MEMBER_FIELD(bold)
				CLASS_MEMBER_FIELD(italic)
				CLASS_MEMBER_FIELD(underline)
				CLASS_MEMBER_FIELD(strikeline)
				CLASS_MEMBER_FIELD(antialias)
				CLASS_MEMBER_FIELD(verticalAntialias)
			END_CLASS_MEMBER(DocumentStyleProperties)

			BEGIN_CLASS_MEMBER(DocumentRun)
			END_CLASS_MEMBER(DocumentRun)

			BEGIN_CLASS_MEMBER(DocumentContainerRun)
				CLASS_MEMBER_BASE(DocumentRun)

				CLASS_MEMBER_FIELD(runs)
			END_CLASS_MEMBER(DocumentContainerRun)

			BEGIN_CLASS_MEMBER(DocumentContentRun)
				CLASS_MEMBER_BASE(DocumentRun)

				CLASS_MEMBER_PROPERTY_READONLY_FAST(RepresentationText)
			END_CLASS_MEMBER(DocumentContentRun)

			BEGIN_CLASS_MEMBER(DocumentTextRun)
				CLASS_MEMBER_BASE(DocumentContentRun)
				CLASS_MEMBER_CONSTRUCTOR(Ptr<DocumentTextRun>(), NO_PARAMETER)
				
				CLASS_MEMBER_FIELD(text)
			END_CLASS_MEMBER(DocumentTextRun)

			BEGIN_CLASS_MEMBER(DocumentInlineObjectRun)
				CLASS_MEMBER_BASE(DocumentContentRun)
				
				CLASS_MEMBER_FIELD(sizeOverride)
				CLASS_MEMBER_FIELD(baseline)
			END_CLASS_MEMBER(DocumentInlineObjectRun)

			BEGIN_CLASS_MEMBER(DocumentImageRun)
				CLASS_MEMBER_BASE(DocumentInlineObjectRun)
				CLASS_MEMBER_CONSTRUCTOR(Ptr<DocumentImageRun>(), NO_PARAMETER)
				
				CLASS_MEMBER_FIELD(image)
				CLASS_MEMBER_FIELD(frameIndex)
				CLASS_MEMBER_FIELD(source)
			END_CLASS_MEMBER(DocumentImageRun)

			BEGIN_CLASS_MEMBER(DocumentEmbeddedObjectRun)
				CLASS_MEMBER_BASE(DocumentInlineObjectRun)
				CLASS_MEMBER_CONSTRUCTOR(Ptr<DocumentEmbeddedObjectRun>(), NO_PARAMETER)
				
				CLASS_MEMBER_FIELD(name)
			END_CLASS_MEMBER(DocumentEmbeddedObjectRun)

			BEGIN_CLASS_MEMBER(DocumentStylePropertiesRun)
				CLASS_MEMBER_BASE(DocumentContainerRun)
				CLASS_MEMBER_CONSTRUCTOR(Ptr<DocumentStylePropertiesRun>(), NO_PARAMETER)
				
				CLASS_MEMBER_FIELD(style)
			END_CLASS_MEMBER(DocumentStylePropertiesRun)

			BEGIN_CLASS_MEMBER(DocumentStyleApplicationRun)
				CLASS_MEMBER_BASE(DocumentContainerRun)
				CLASS_MEMBER_CONSTRUCTOR(Ptr<DocumentStyleApplicationRun>(), NO_PARAMETER)
				
				CLASS_MEMBER_FIELD(styleName)
			END_CLASS_MEMBER(DocumentStyleApplicationRun)

			BEGIN_CLASS_MEMBER(DocumentHyperlinkRun::Package)
				CLASS_MEMBER_FIELD(hyperlinks)
				CLASS_MEMBER_FIELD(row)
				CLASS_MEMBER_FIELD(start)
				CLASS_MEMBER_FIELD(end)
			END_CLASS_MEMBER(DocumentHyperlinkRun::Package)

			BEGIN_CLASS_MEMBER(DocumentHyperlinkRun)
				CLASS_MEMBER_BASE(DocumentStyleApplicationRun)
				CLASS_MEMBER_CONSTRUCTOR(Ptr<DocumentHyperlinkRun>(), NO_PARAMETER)
				
				CLASS_MEMBER_FIELD(normalStyleName)
				CLASS_MEMBER_FIELD(activeStyleName)
				CLASS_MEMBER_FIELD(reference)
			END_CLASS_MEMBER(DocumentHyperlinkRun)

			BEGIN_CLASS_MEMBER(DocumentParagraphRun)
				CLASS_MEMBER_BASE(DocumentContainerRun)
				CLASS_MEMBER_CONSTRUCTOR(Ptr<DocumentParagraphRun>(), NO_PARAMETER)

				CLASS_MEMBER_FIELD(alignment)

				CLASS_MEMBER_METHOD(GetTextForCaret, NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetTextForReading, NO_PARAMETER)
				CLASS_MEMBER_METHOD_OVERLOAD(ConvertToText, {L"forCaret"}, WString(DocumentParagraphRun::*)(bool))
			END_CLASS_MEMBER(DocumentParagraphRun)

			BEGIN_CLASS_MEMBER(DocumentStyle)
				CLASS_MEMBER_CONSTRUCTOR(Ptr<DocumentStyle>(), NO_PARAMETER)
				
				CLASS_MEMBER_FIELD(parentStyleName)
				CLASS_MEMBER_FIELD(styles)
				CLASS_MEMBER_FIELD(resolvedStyles)
			END_CLASS_MEMBER(DocumentStyle)

			BEGIN_CLASS_MEMBER(DocumentModel)
				CLASS_MEMBER_CONSTRUCTOR(Ptr<DocumentModel>(), NO_PARAMETER)
				
				CLASS_MEMBER_FIELD(paragraphs)
				CLASS_MEMBER_FIELD(styles)

				CLASS_MEMBER_METHOD(GetTextForCaret, NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetTextForReading, { L"paragraphDelimiter" })
				CLASS_MEMBER_METHOD_OVERLOAD(ConvertToText, { L"forCaret" _ L"paragraphDelimiter"}, WString(DocumentModel::*)(bool, const WString&))
				CLASS_MEMBER_STATIC_METHOD(LoadFromXml, {L"resource" _ L"xml" _ L"workingDirectory" _ L"errors"})
				CLASS_MEMBER_METHOD_OVERLOAD(SaveToXml, NO_PARAMETER, Ptr<XmlDocument>(DocumentModel::*)())
			END_CLASS_MEMBER(DocumentModel)

			BEGIN_CLASS_MEMBER(GuiResourceNodeBase)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(Parent)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(Name)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(ResourcePath)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(FileContentPath)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(FileAbsolutePath)
				CLASS_MEMBER_METHOD(SetFileContentPath, { L"content" _ L"absolute" })
			END_CLASS_MEMBER(GuiResourceNodeBase)

			BEGIN_STRUCT_MEMBER(GuiResourceLocation)
				STRUCT_MEMBER(resourcePath)
				STRUCT_MEMBER(filePath)
			END_STRUCT_MEMBER(GuiResourceLocation)

			BEGIN_STRUCT_MEMBER(GuiResourceTextPos)
				STRUCT_MEMBER(originalLocation)
				STRUCT_MEMBER(row)
				STRUCT_MEMBER(column)
			END_STRUCT_MEMBER(GuiResourceTextPos)

			BEGIN_STRUCT_MEMBER(GuiResourceError)
				STRUCT_MEMBER(location)
				STRUCT_MEMBER(position)
				STRUCT_MEMBER(message)
			END_STRUCT_MEMBER(GuiResourceError)

			BEGIN_CLASS_MEMBER(GuiResourceItem)
				CLASS_MEMBER_BASE(GuiResourceNodeBase)
				
				CLASS_MEMBER_METHOD(GetContent, NO_PARAMETER)
				CLASS_MEMBER_METHOD(SetContent, {L"typeName" _ L"value"})

				CLASS_MEMBER_METHOD(AsImage, NO_PARAMETER)
				CLASS_MEMBER_METHOD(AsXml, NO_PARAMETER)
				CLASS_MEMBER_METHOD(AsString, NO_PARAMETER)
				CLASS_MEMBER_METHOD(AsDocument, NO_PARAMETER)
			END_CLASS_MEMBER(GuiResourceItem)

			BEGIN_CLASS_MEMBER(GuiResourceFolder)
				CLASS_MEMBER_BASE(GuiResourceNodeBase)

				CLASS_MEMBER_PROPERTY_READONLY_FAST(Items)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(Folders)

				CLASS_MEMBER_METHOD(GetItem, { L"name" })
				CLASS_MEMBER_METHOD(AddItem, { L"name" _ L"item" })
				CLASS_MEMBER_METHOD(RemoveItem, { L"name" })
				CLASS_MEMBER_METHOD(ClearItems, NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetFolder, { L"name" })
				CLASS_MEMBER_METHOD(AddFolder, { L"name" _ L"folder" })
				CLASS_MEMBER_METHOD(RemoveFolder, { L"name" })
				CLASS_MEMBER_METHOD(ClearFolders, NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetValueByPath, { L"path" })
				CLASS_MEMBER_METHOD(GetFolderByPath, { L"path" })
				CLASS_MEMBER_METHOD(CreateValueByPath, { L"path" _ L"typeName" _ L"value" })
			END_CLASS_MEMBER(GuiResourceFolder)

			BEGIN_CLASS_MEMBER(GuiResource)
				CLASS_MEMBER_CONSTRUCTOR(Ptr<GuiResource>(), NO_PARAMETER)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(WorkingDirectory)

				CLASS_MEMBER_METHOD(GetDocumentByPath, {L"path"})
				CLASS_MEMBER_METHOD(GetImageByPath, {L"path"})
				CLASS_MEMBER_METHOD(GetXmlByPath, {L"path"})
				CLASS_MEMBER_METHOD(GetStringByPath, {L"path"})
			END_CLASS_MEMBER(GuiResource)

			BEGIN_CLASS_MEMBER(GuiResourcePathResolver)
				CLASS_MEMBER_CONSTRUCTOR(Ptr<GuiResourcePathResolver>(Ptr<GuiResource>, WString), {L"resource" _ L"workingDirectory"})

				CLASS_MEMBER_METHOD(ResolveResource, {L"protocol" _ L"path"})
			END_CLASS_MEMBER(GuiResourcePathResolver)

			BEGIN_ENUM_ITEM(GuiResourceUsage)
				ENUM_CLASS_ITEM(DataOnly)
				ENUM_CLASS_ITEM(InstanceClass)
			END_ENUM_ITEM(GuiResourceUsage)

			BEGIN_INTERFACE_MEMBER_NOPROXY(IGuiResourceManager)
				CLASS_MEMBER_STATIC_EXTERNALMETHOD(GetResourceManager, NO_PARAMETER, IGuiResourceManager*(*)(), vl::presentation::GetResourceManager)
				CLASS_MEMBER_METHOD(SetResource, { L"name" _ L"resource" _ L"usage" })
				CLASS_MEMBER_METHOD(GetResource, { L"name" })
				CLASS_MEMBER_METHOD(GetResourceFromClassName, { L"name" })
			END_INTERFACE_MEMBER(IGuiResourceManager)

			BEGIN_INTERFACE_MEMBER_NOPROXY(IMessageBoxDialogAction)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(Button)
				CLASS_MEMBER_METHOD(PerformAction, NO_PARAMETER)
			END_INTERFACE_MEMBER(IMessageBoxDialogViewModel)

			BEGIN_INTERFACE_MEMBER_NOPROXY(IMessageBoxDialogViewModel)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(Text)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(Title)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(Icon)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(Buttons)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(DefaultButton)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(Result)
			END_INTERFACE_MEMBER(IMessageBoxDialogViewModel)

			BEGIN_INTERFACE_MEMBER_NOPROXY(IDialogConfirmation)
				CLASS_MEMBER_PROPERTY_FAST(Confirmed)
			END_INTERFACE_MEMBER(IDialogConfirmation)

			BEGIN_INTERFACE_MEMBER_NOPROXY(IColorDialogViewModel)
				CLASS_MEMBER_BASE(IDialogConfirmation)
				CLASS_MEMBER_PROPERTY_FAST(Color)
			END_INTERFACE_MEMBER(IColorDialogViewModel)

			BEGIN_INTERFACE_MEMBER_NOPROXY(ICommonFontDialogViewModel)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(FontMustExist)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(FontList)
			END_INTERFACE_MEMBER(ICommonFontDialogViewModel)

			BEGIN_INTERFACE_MEMBER_NOPROXY(ISimpleFontDialogViewModel)
				CLASS_MEMBER_BASE(ICommonFontDialogViewModel)
				CLASS_MEMBER_BASE(IDialogConfirmation)
				CLASS_MEMBER_PROPERTY_FAST(FontFamily)
				CLASS_MEMBER_PROPERTY_FAST(FontSize)
			END_INTERFACE_MEMBER(ISimpleFontDialogViewModel)

			BEGIN_INTERFACE_MEMBER_NOPROXY(IFullFontDialogViewModel)
				CLASS_MEMBER_BASE(ICommonFontDialogViewModel)
				CLASS_MEMBER_BASE(IColorDialogViewModel)
				CLASS_MEMBER_PROPERTY_FAST(Font)
				CLASS_MEMBER_METHOD(SelectColor, {L"owner"})
			END_INTERFACE_MEMBER(IFullFontDialogViewModel)

			BEGIN_ENUM_ITEM(FileDialogFolderType)
				ENUM_CLASS_ITEM(Root)
				ENUM_CLASS_ITEM(Placeholder)
				ENUM_CLASS_ITEM(Folder)
			END_ENUM_ITEM(FileDialogFolderType)

			BEGIN_INTERFACE_MEMBER_NOPROXY(IFileDialogFolder)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(Parent)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(Type)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(FullPath)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(Name)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(Index)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(Folders)
				CLASS_MEMBER_METHOD(TryGetFolder, {L"name"})
			END_INTERFACE_MEMBER(IFileDialogFolder)

			BEGIN_ENUM_ITEM(FileDialogFileType)
				ENUM_CLASS_ITEM(Placeholder)
				ENUM_CLASS_ITEM(Folder)
				ENUM_CLASS_ITEM(File)
			END_ENUM_ITEM(FileDialogFileType)

			BEGIN_INTERFACE_MEMBER_NOPROXY(IFileDialogFile)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(Type)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(AssociatedFolder)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(Name)
			END_INTERFACE_MEMBER(IFileDialogFile)

			BEGIN_INTERFACE_MEMBER_NOPROXY(IFileDialogFilter)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(Name)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(Filter)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(DefaultExtension)
				CLASS_MEMBER_METHOD(FilterFile, {L"file"})
			END_INTERFACE_MEMBER(IFileDialogFilter)

			BEGIN_INTERFACE_MEMBER_NOPROXY(IFileDialogViewModel)
				CLASS_MEMBER_EVENT(SelectedFilterChanged)
				CLASS_MEMBER_EVENT(SelectedFolderChanged)
				CLASS_MEMBER_EVENT(IsLoadingFilesChanged)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(Title)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(EnabledMultipleSelection)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(DefaultExtension)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(Filters)
				CLASS_MEMBER_PROPERTY_EVENT_FAST(SelectedFilter, SelectedFilterChanged)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(RootFolder)
				CLASS_MEMBER_PROPERTY_EVENT_FAST(SelectedFolder, SelectedFolderChanged)
				CLASS_MEMBER_PROPERTY_EVENT_READONLY_FAST(IsLoadingFiles, IsLoadingFilesChanged)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(Files)
				CLASS_MEMBER_METHOD(RefreshFiles, NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetDisplayString, { L"files" })
				CLASS_MEMBER_METHOD(ParseDisplayString, { L"displayString" })
				CLASS_MEMBER_METHOD(TryConfirm, { L"owner" _ L"selection"})
				CLASS_MEMBER_METHOD(InitLocalizedText,
					{	L"textLoadingFolders"
					_	L"textLoadingFiles"
					_	L"dialogErrorEmptySelection"
					_	L"dialogErrorFileNotExist"
					_	L"dialogErrorFileExpected"
					_	L"dialogErrorFolderNotExist"
					_	L"dialogErrorMultipleSelectionNotEnabled"
					_	L"dialogAskCreateFile"
					_	L"dialogAskOverrideFile"
					})
			END_INTERFACE_MEMBER(IFileDialogViewModel)

#undef GUI_TEMPLATE_PROPERTY_REFLECTION
#undef _

/***********************************************************************
Type Loader
***********************************************************************/

			class GuiBasicTypeLoader : public Object, public ITypeLoader
			{
			public:
				void Load(ITypeManager* manager)
				{
					GUIREFLECTIONBASIC_TYPELIST(ADD_TYPE_INFO)
				}

				void Unload(ITypeManager* manager)
				{
				}
			};

#endif

			bool LoadGuiBasicTypes()
			{
#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA
				ITypeManager* manager=GetGlobalTypeManager();
				if(manager)
				{
					auto loader=Ptr(new GuiBasicTypeLoader);
					return manager->AddTypeLoader(loader);
				}
#endif
				return false;
			}
		}
	}
}

/***********************************************************************
.\REFLECTION\TYPEDESCRIPTORS\GUIREFLECTIONCOMPOSITIONS.CPP
***********************************************************************/

namespace vl
{
	namespace reflection
	{
		namespace description
		{
			using namespace collections;
			using namespace presentation;
			using namespace presentation::compositions;
			using namespace presentation::controls;

#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA

#define _ ,

#define INTERFACE_IDENTIFIER(INTERFACE)\
	CLASS_MEMBER_STATIC_EXTERNALMETHOD(GetIdentifier, NO_PARAMETER, WString(*)(), vl::presentation::controls::QueryServiceHelper<::INTERFACE>::GetIdentifier)

/***********************************************************************
Type Declaration (Extra)
***********************************************************************/

			BEGIN_ENUM_ITEM(KeyDirection)
				ENUM_CLASS_ITEM(Up)
				ENUM_CLASS_ITEM(Down)
				ENUM_CLASS_ITEM(Left)
				ENUM_CLASS_ITEM(Right)
				ENUM_CLASS_ITEM(Home)
				ENUM_CLASS_ITEM(End)
				ENUM_CLASS_ITEM(PageUp)
				ENUM_CLASS_ITEM(PageDown)
				ENUM_CLASS_ITEM(PageLeft)
				ENUM_CLASS_ITEM(PageRight)
			END_ENUM_ITEM(KeyDirection)

			BEGIN_INTERFACE_MEMBER(IGuiAxis)
				CLASS_MEMBER_METHOD(RealSizeToVirtualSize, {L"size"})
				CLASS_MEMBER_METHOD(VirtualSizeToRealSize, {L"size"})
				CLASS_MEMBER_METHOD(RealPointToVirtualPoint, {L"realFullSize" _ L"point"})
				CLASS_MEMBER_METHOD(VirtualPointToRealPoint, {L"realFullSize" _ L"point"})
				CLASS_MEMBER_METHOD(RealRectToVirtualRect, {L"realFullSize" _ L"rect"})
				CLASS_MEMBER_METHOD(VirtualRectToRealRect, {L"realFullSize" _ L"rect"})
				CLASS_MEMBER_METHOD(RealMarginToVirtualMargin, {L"margin"})
				CLASS_MEMBER_METHOD(VirtualMarginToRealMargin, {L"margin"})
				CLASS_MEMBER_METHOD(RealKeyDirectionToVirtualKeyDirection, {L"key"})
			END_INTERFACE_MEMBER(IGuiAxis)

			BEGIN_CLASS_MEMBER(GuiDefaultAxis)
				CLASS_MEMBER_BASE(IGuiAxis)
				CLASS_MEMBER_CONSTRUCTOR(Ptr<GuiDefaultAxis>(), NO_PARAMETER)
			END_CLASS_MEMBER(GuiDefaultAxis)

			BEGIN_CLASS_MEMBER(GuiAxis)
				CLASS_MEMBER_BASE(IGuiAxis)
				CLASS_MEMBER_CONSTRUCTOR(Ptr<GuiAxis>(AxisDirection), {L"axisDirection"})

				CLASS_MEMBER_PROPERTY_READONLY_FAST(Direction)
			END_CLASS_MEMBER(GuiAxis)

			BEGIN_ENUM_ITEM(GuiGraphicsComposition::MinSizeLimitation)
				ENUM_ITEM_NAMESPACE(GuiGraphicsComposition)
				ENUM_NAMESPACE_ITEM(NoLimit)
				ENUM_NAMESPACE_ITEM(LimitToElement)
				ENUM_NAMESPACE_ITEM(LimitToElementAndChildren)
			END_ENUM_ITEM(GuiGraphicsComposition::MinSizeLimitation)

			BEGIN_ENUM_ITEM(GuiStackComposition::Direction)
				ENUM_ITEM_NAMESPACE(GuiStackComposition)
				ENUM_NAMESPACE_ITEM(Horizontal)
				ENUM_NAMESPACE_ITEM(Vertical)
				ENUM_NAMESPACE_ITEM(ReversedHorizontal)
				ENUM_NAMESPACE_ITEM(ReversedVertical)
			END_ENUM_ITEM(GuiStackComposition::Direction)

			BEGIN_STRUCT_MEMBER(GuiCellOption)
				STRUCT_MEMBER(composeType)
				STRUCT_MEMBER(absolute)
				STRUCT_MEMBER(percentage)
			END_STRUCT_MEMBER(GuiCellOption)

			BEGIN_ENUM_ITEM(GuiCellOption::ComposeType)
				ENUM_ITEM_NAMESPACE(GuiCellOption)
				ENUM_NAMESPACE_ITEM(Absolute)
				ENUM_NAMESPACE_ITEM(Percentage)
				ENUM_NAMESPACE_ITEM(MinSize)
			END_ENUM_ITEM(GuiCellOption::ComposeType)

			BEGIN_STRUCT_MEMBER(GuiFlowOption)
				STRUCT_MEMBER(baseline)
				STRUCT_MEMBER(percentage)
				STRUCT_MEMBER(distance)
			END_STRUCT_MEMBER(GuiFlowOption)

			BEGIN_ENUM_ITEM(GuiFlowOption::BaselineType)
				ENUM_ITEM_NAMESPACE(GuiFlowOption)
				ENUM_NAMESPACE_ITEM(Percentage)
				ENUM_NAMESPACE_ITEM(FromTop)
				ENUM_NAMESPACE_ITEM(FromBottom)
			END_ENUM_ITEM(GuiFlowOption::BaselineType)

			BEGIN_ENUM_ITEM(FlowAlignment)
				ENUM_CLASS_ITEM(Left)
				ENUM_CLASS_ITEM(Center)
				ENUM_CLASS_ITEM(Right)
				ENUM_CLASS_ITEM(Extend)
			END_ENUM_ITEM(FlowAlignment)

			BEGIN_ENUM_ITEM(GuiSideAlignedComposition::Direction)
				ENUM_ITEM_NAMESPACE(GuiSideAlignedComposition)
				ENUM_NAMESPACE_ITEM(Left)
				ENUM_NAMESPACE_ITEM(Top)
				ENUM_NAMESPACE_ITEM(Right)
				ENUM_NAMESPACE_ITEM(Bottom)
			END_ENUM_ITEM(GuiSideAlignedComposition::Direction)

			BEGIN_ENUM_ITEM(ResponsiveDirection)
				ENUM_CLASS_ITEM(Horizontal)
				ENUM_CLASS_ITEM(Vertical)
				ENUM_CLASS_ITEM(Both)
			END_ENUM_ITEM(ResponsiveDirection)

			BEGIN_ENUM_ITEM(VirtualRepeatEnsureItemVisibleResult)
				ENUM_CLASS_ITEM(ItemNotExists)
				ENUM_CLASS_ITEM(Moved)
				ENUM_CLASS_ITEM(NotMoved)
			END_ENUM_ITEM(VirtualRepeatEnsureItemVisibleResult)

			BEGIN_INTERFACE_MEMBER_NOPROXY(IGuiShortcutKeyItem)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(Manager)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(Name)
			END_INTERFACE_MEMBER(IGuiShortcutKeyItem)

			BEGIN_INTERFACE_MEMBER_NOPROXY(IGuiShortcutKeyManager)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(ItemCount)

				CLASS_MEMBER_METHOD(GetItem, {L"index"})
				CLASS_MEMBER_METHOD(TryGetShortcut, { L"ctrl" _ L"shift" _ L"alt" _ L"ket" })
				CLASS_MEMBER_METHOD(CreateNewShortcut, { L"ctrl" _ L"shift" _ L"alt" _ L"ket" })
				CLASS_MEMBER_METHOD(CreateShortcutIfNotExist, { L"ctrl" _ L"shift" _ L"alt" _ L"ket" })
				CLASS_MEMBER_METHOD(DestroyShortcut, { L"ctrl" _ L"shift" _ L"alt" _ L"ket" })
			END_INTERFACE_MEMBER(IGuiShortcutKeyManager)

			BEGIN_CLASS_MEMBER(GuiShortcutKeyManager)
				CLASS_MEMBER_BASE(IGuiShortcutKeyManager)
				CLASS_MEMBER_CONSTRUCTOR(GuiShortcutKeyManager*(), NO_PARAMETER)
			END_CLASS_MEMBER(GuiShortcutKeyManager)

			BEGIN_INTERFACE_MEMBER_NOPROXY(IGuiAltAction)
				INTERFACE_IDENTIFIER(vl::presentation::compositions::IGuiAltAction)

				CLASS_MEMBER_PROPERTY_READONLY_FAST(Alt)

				CLASS_MEMBER_METHOD(IsAltEnabled, NO_PARAMETER)
				CLASS_MEMBER_METHOD(IsAltAvailable, NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetAltComposition, NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetActivatingAltHost, NO_PARAMETER)
				CLASS_MEMBER_METHOD(OnActiveAlt, NO_PARAMETER)
			END_INTERFACE_MEMBER(IGuiAltAction)

			BEGIN_INTERFACE_MEMBER_NOPROXY(IGuiAltActionContainer)
				INTERFACE_IDENTIFIER(vl::presentation::compositions::IGuiAltActionContainer)

				CLASS_MEMBER_PROPERTY_READONLY_FAST(AltActionCount)
				
				CLASS_MEMBER_METHOD(GetAltAction, { L"index" })
			END_INTERFACE_MEMBER(IGuiAltActionContainer)

			BEGIN_INTERFACE_MEMBER_NOPROXY(IGuiAltActionHost)
				INTERFACE_IDENTIFIER(vl::presentation::compositions::IGuiAltActionHost)

				CLASS_MEMBER_PROPERTY_READONLY_FAST(AltComposition)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(PreviousAltHost)

				CLASS_MEMBER_METHOD(OnActivatedAltHost, { L"previousHost" })
				CLASS_MEMBER_METHOD(OnDeactivatedAltHost, NO_PARAMETER)
				CLASS_MEMBER_EXTERNALMETHOD(CollectAltActions, {L"actions"}, void(IGuiAltActionHost::*)(List<IGuiAltAction*>&), vl::reflection::description::IGuiAltActionHost_CollectAltActions)
			END_INTERFACE_MEMBER(IGuiAltActionHost)

			BEGIN_INTERFACE_MEMBER_NOPROXY(IGuiTabAction)
				INTERFACE_IDENTIFIER(vl::presentation::compositions::IGuiTabAction)

				CLASS_MEMBER_PROPERTY_READONLY_FAST(AcceptTabInput)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(TabPriority)
				CLASS_MEMBER_METHOD(IsTabEnabled, NO_PARAMETER)
				CLASS_MEMBER_METHOD(IsTabAvailable, NO_PARAMETER)
			END_INTERFACE_MEMBER(IGuiTabAction)

/***********************************************************************
Type Declaration (Class)
***********************************************************************/

			BEGIN_CLASS_MEMBER(GuiGraphicsComposition)
				CLASS_MEMBER_EXTERNALMETHOD(SafeDelete, NO_PARAMETER, void(GuiGraphicsComposition::*)(), vl::presentation::compositions::SafeDeleteComposition)

				CLASS_MEMBER_GUIEVENT_COMPOSITION(leftButtonDown)
				CLASS_MEMBER_GUIEVENT_COMPOSITION(leftButtonUp)
				CLASS_MEMBER_GUIEVENT_COMPOSITION(leftButtonDoubleClick)
				CLASS_MEMBER_GUIEVENT_COMPOSITION(middleButtonDown)
				CLASS_MEMBER_GUIEVENT_COMPOSITION(middleButtonUp)
				CLASS_MEMBER_GUIEVENT_COMPOSITION(middleButtonDoubleClick)
				CLASS_MEMBER_GUIEVENT_COMPOSITION(rightButtonDown)
				CLASS_MEMBER_GUIEVENT_COMPOSITION(rightButtonUp)
				CLASS_MEMBER_GUIEVENT_COMPOSITION(rightButtonDoubleClick)
				CLASS_MEMBER_GUIEVENT_COMPOSITION(horizontalWheel)
				CLASS_MEMBER_GUIEVENT_COMPOSITION(verticalWheel)
				CLASS_MEMBER_GUIEVENT_COMPOSITION(mouseMove)
				CLASS_MEMBER_GUIEVENT_COMPOSITION(mouseEnter)
				CLASS_MEMBER_GUIEVENT_COMPOSITION(mouseLeave)
				
				CLASS_MEMBER_GUIEVENT_COMPOSITION(previewKey)
				CLASS_MEMBER_GUIEVENT_COMPOSITION(keyDown)
				CLASS_MEMBER_GUIEVENT_COMPOSITION(keyUp)
				CLASS_MEMBER_GUIEVENT_COMPOSITION(previewCharInput)
				CLASS_MEMBER_GUIEVENT_COMPOSITION(charInput)
				CLASS_MEMBER_GUIEVENT_COMPOSITION(gotFocus)
				CLASS_MEMBER_GUIEVENT_COMPOSITION(lostFocus)
				CLASS_MEMBER_GUIEVENT_COMPOSITION(caretNotify)
				CLASS_MEMBER_GUIEVENT_COMPOSITION(clipboardNotify)
				CLASS_MEMBER_GUIEVENT_COMPOSITION(renderTargetChanged)

				CLASS_MEMBER_PROPERTY_READONLY_FAST(Parent)
				CLASS_MEMBER_PROPERTY_FAST(OwnedElement)
				CLASS_MEMBER_PROPERTY_FAST(Visible)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(EventuallyVisible)
				CLASS_MEMBER_PROPERTY_FAST(MinSizeLimitation)
				CLASS_MEMBER_PROPERTY_FAST(TransparentToMouse)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(AssociatedControl)
				CLASS_MEMBER_PROPERTY_FAST(AssociatedCursor)
				CLASS_MEMBER_PROPERTY_FAST(AssociatedHitTestResult)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(RelatedControl)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(RelatedControlHost)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(RelatedCursor)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(RelatedHitTestResult)
				CLASS_MEMBER_PROPERTY_FAST(InternalMargin)
				CLASS_MEMBER_PROPERTY_FAST(PreferredMinSize)

				CLASS_MEMBER_METHOD_RENAME(GetChildren, Children, NO_PARAMETER)
				CLASS_MEMBER_PROPERTY_READONLY(Children, GetChildren)

				CLASS_MEMBER_METHOD(AddChild, {L"child"})
				CLASS_MEMBER_METHOD(InsertChild, {L"index" _ L"child"})
				CLASS_MEMBER_METHOD(RemoveChild, {L"child"})
				CLASS_MEMBER_METHOD(MoveChild, {L"child" _ L"newIndex"})
				CLASS_MEMBER_METHOD(Render, {L"size"})
				CLASS_MEMBER_METHOD(FindVisibleComposition, {L"location" _ L"forMouseEvent"})

				CLASS_MEMBER_GUIEVENT(CachedMinSizeChanged)
				CLASS_MEMBER_GUIEVENT(CachedBoundsChanged)
				CLASS_MEMBER_PROPERTY_EVENT_READONLY_FAST(CachedMinSize, CachedMinSizeChanged)
				CLASS_MEMBER_PROPERTY_EVENT_READONLY_FAST(CachedMinClientSize, CachedMinSizeChanged)
				CLASS_MEMBER_PROPERTY_EVENT_READONLY_FAST(CachedBounds, CachedBoundsChanged)
				CLASS_MEMBER_PROPERTY_EVENT_READONLY_FAST(CachedClientArea, CachedBoundsChanged)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(GlobalBounds)
			END_CLASS_MEMBER(GuiGraphicsComposition)

			BEGIN_CLASS_MEMBER(GuiWindowComposition)
				CLASS_MEMBER_BASE(GuiGraphicsComposition)
				CLASS_MEMBER_CONSTRUCTOR(GuiWindowComposition*(), NO_PARAMETER)
			END_CLASS_MEMBER(GuiWindowComposition)

			BEGIN_CLASS_MEMBER(GuiBoundsComposition)
				CLASS_MEMBER_BASE(GuiGraphicsComposition)
				CLASS_MEMBER_CONSTRUCTOR(GuiBoundsComposition*(), NO_PARAMETER)

				CLASS_MEMBER_PROPERTY_FAST(ExpectedBounds)
				CLASS_MEMBER_PROPERTY_FAST(AlignmentToParent)
				
				CLASS_MEMBER_METHOD(IsAlignedToParent, NO_PARAMETER)
			END_CLASS_MEMBER(GuiBoundsComposition)

			BEGIN_CLASS_MEMBER(GuiStackComposition)
				CLASS_MEMBER_BASE(GuiBoundsComposition)
				CLASS_MEMBER_CONSTRUCTOR(GuiStackComposition*(), NO_PARAMETER)

				CLASS_MEMBER_PROPERTY_READONLY_FAST(StackItems)

				CLASS_MEMBER_PROPERTY_FAST(Direction)
				CLASS_MEMBER_PROPERTY_FAST(Padding)
				CLASS_MEMBER_PROPERTY_FAST(ExtraMargin)

				CLASS_MEMBER_METHOD(InsertStackItem, {L"index" _ L"item"})
				CLASS_MEMBER_METHOD(IsStackItemClipped, NO_PARAMETER)
				CLASS_MEMBER_METHOD(EnsureVisible, {L"index"})
			END_CLASS_MEMBER(GuiStackComposition)

			BEGIN_CLASS_MEMBER(GuiStackItemComposition)
				CLASS_MEMBER_BASE(GuiGraphicsComposition)
				CLASS_MEMBER_CONSTRUCTOR(GuiStackItemComposition*(), NO_PARAMETER)

				CLASS_MEMBER_PROPERTY_FAST(ExtraMargin)
			END_CLASS_MEMBER(GuiStackItemComposition)

			BEGIN_CLASS_MEMBER(GuiTableComposition)
				CLASS_MEMBER_BASE(GuiBoundsComposition)
				CLASS_MEMBER_CONSTRUCTOR(GuiTableComposition*(), NO_PARAMETER)

				CLASS_MEMBER_GUIEVENT(ConfigChanged)

				CLASS_MEMBER_PROPERTY_FAST(CellPadding)
				CLASS_MEMBER_PROPERTY_FAST(BorderVisible)

				CLASS_MEMBER_METHOD(GetRows, NO_PARAMETER)
				CLASS_MEMBER_EXTERNALMETHOD(SetRows, {L"value"}, void(GuiTableComposition::*)(vint), vl::reflection::description::GuiTableComposition_SetRows)
				CLASS_MEMBER_PROPERTY(Rows, GetRows, SetRows)
				CLASS_MEMBER_METHOD(GetColumns, NO_PARAMETER)
				CLASS_MEMBER_EXTERNALMETHOD(SetColumns, {L"value"}, void(GuiTableComposition::*)(vint), vl::reflection::description::GuiTableComposition_SetColumns)
				CLASS_MEMBER_PROPERTY(Columns, GetColumns, SetColumns)
				CLASS_MEMBER_METHOD(SetRowsAndColumns, {L"rows" _ L"columns"})

				CLASS_MEMBER_METHOD(GetSitedCell, {L"rows" _ L"columns"})
				CLASS_MEMBER_METHOD(GetRowOption, {L"row"})
				CLASS_MEMBER_METHOD(SetRowOption, {L"row" _ L"option"})
				CLASS_MEMBER_METHOD(GetColumnOption, {L"column"})
				CLASS_MEMBER_METHOD(SetColumnOption, {L"column" _ L"option"})
			END_CLASS_MEMBER(GuiTableComposition)

			BEGIN_CLASS_MEMBER(GuiCellComposition)
				CLASS_MEMBER_BASE(GuiGraphicsComposition)
				CLASS_MEMBER_CONSTRUCTOR(GuiCellComposition*(), NO_PARAMETER)

				CLASS_MEMBER_PROPERTY_READONLY_FAST(TableParent)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(Row)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(RowSpan)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(Column)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(ColumnSpan)

				CLASS_MEMBER_METHOD(SetSite, {L"row" _ L"column" _ L"rowSpan" _ L"columnSpan"})
			END_CLASS_MEMBER(GuiCellComposition)

			BEGIN_CLASS_MEMBER(GuiTableSplitterCompositionBase)
				CLASS_MEMBER_BASE(GuiGraphicsComposition)

				CLASS_MEMBER_PROPERTY_READONLY_FAST(TableParent)
			END_CLASS_MEMBER(GuiRowSplitterComposition)

			BEGIN_CLASS_MEMBER(GuiRowSplitterComposition)
				CLASS_MEMBER_BASE(GuiTableSplitterCompositionBase)
				CLASS_MEMBER_CONSTRUCTOR(GuiRowSplitterComposition*(), NO_PARAMETER)

				CLASS_MEMBER_PROPERTY_FAST(RowsToTheTop)
			END_CLASS_MEMBER(GuiRowSplitterComposition)

			BEGIN_CLASS_MEMBER(GuiColumnSplitterComposition)
				CLASS_MEMBER_BASE(GuiTableSplitterCompositionBase)
				CLASS_MEMBER_CONSTRUCTOR(GuiColumnSplitterComposition*(), NO_PARAMETER)

				CLASS_MEMBER_PROPERTY_FAST(ColumnsToTheLeft)
			END_CLASS_MEMBER(GuiColumnSplitterComposition)

			BEGIN_CLASS_MEMBER(GuiFlowComposition)
				CLASS_MEMBER_BASE(GuiBoundsComposition)
				CLASS_MEMBER_CONSTRUCTOR(GuiFlowComposition*(), NO_PARAMETER)

				CLASS_MEMBER_PROPERTY_READONLY_FAST(FlowItems)
				CLASS_MEMBER_PROPERTY_FAST(ExtraMargin)
				CLASS_MEMBER_PROPERTY_FAST(RowPadding)
				CLASS_MEMBER_PROPERTY_FAST(ColumnPadding)
				CLASS_MEMBER_PROPERTY_FAST(Axis)
				CLASS_MEMBER_PROPERTY_FAST(Alignment)

				CLASS_MEMBER_METHOD(InsertFlowItem, { L"index" _ L"item" })
			END_CLASS_MEMBER(GuiFlowComposition)

			BEGIN_CLASS_MEMBER(GuiFlowItemComposition)
				CLASS_MEMBER_BASE(GuiGraphicsComposition)
				CLASS_MEMBER_CONSTRUCTOR(GuiFlowItemComposition*(), NO_PARAMETER)

				CLASS_MEMBER_PROPERTY_FAST(ExtraMargin)
				CLASS_MEMBER_PROPERTY_FAST(FlowOption)
			END_CLASS_MEMBER(GuiFlowItemComposition)

			BEGIN_CLASS_MEMBER(GuiSideAlignedComposition)
				CLASS_MEMBER_BASE(GuiGraphicsComposition)
				CLASS_MEMBER_CONSTRUCTOR(GuiSideAlignedComposition*(), NO_PARAMETER)
				
				CLASS_MEMBER_PROPERTY_FAST(Direction)
				CLASS_MEMBER_PROPERTY_FAST(MaxLength)
				CLASS_MEMBER_PROPERTY_FAST(MaxRatio)
			END_CLASS_MEMBER(GuiSideAlignedComposition)

			BEGIN_CLASS_MEMBER(GuiPartialViewComposition)
				CLASS_MEMBER_BASE(GuiGraphicsComposition)
				CLASS_MEMBER_CONSTRUCTOR(GuiPartialViewComposition*(), NO_PARAMETER)
				
				CLASS_MEMBER_PROPERTY_FAST(WidthRatio)
				CLASS_MEMBER_PROPERTY_FAST(WidthPageSize)
				CLASS_MEMBER_PROPERTY_FAST(HeightRatio)
				CLASS_MEMBER_PROPERTY_FAST(HeightPageSize)
			END_CLASS_MEMBER(GuiPartialViewComposition)

			BEGIN_CLASS_MEMBER(GuiSharedSizeItemComposition)
				CLASS_MEMBER_BASE(GuiBoundsComposition)
				CLASS_MEMBER_CONSTRUCTOR(GuiSharedSizeItemComposition*(), NO_PARAMETER)

				CLASS_MEMBER_PROPERTY_FAST(Group)
				CLASS_MEMBER_PROPERTY_FAST(SharedWidth)
				CLASS_MEMBER_PROPERTY_FAST(SharedHeight)
			END_CLASS_MEMBER(GuiSharedSizeItemComposition)

			BEGIN_CLASS_MEMBER(GuiSharedSizeRootComposition)
				CLASS_MEMBER_BASE(GuiBoundsComposition)
				CLASS_MEMBER_CONSTRUCTOR(GuiSharedSizeRootComposition*(), NO_PARAMETER)
			END_CLASS_MEMBER(GuiSharedSizeRootComposition)

			BEGIN_CLASS_MEMBER(GuiRepeatCompositionBase)
				CLASS_MEMBER_PROPERTY_FAST(ItemTemplate)
				CLASS_MEMBER_PROPERTY_FAST(ItemSource)
				CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(Context)
			END_CLASS_MEMBER(GuiRepeatCompositionBase)

			BEGIN_CLASS_MEMBER(GuiNonVirtialRepeatCompositionBase)
				CLASS_MEMBER_BASE(GuiBoundsComposition)
				CLASS_MEMBER_BASE(GuiRepeatCompositionBase)
				CLASS_MEMBER_GUIEVENT(ItemInserted)
				CLASS_MEMBER_GUIEVENT(ItemRemoved)
			END_CLASS_MEMBER(GuiNonVirtialRepeatCompositionBase)

			BEGIN_CLASS_MEMBER(GuiRepeatStackComposition)
				CLASS_MEMBER_BASE(GuiStackComposition)
				CLASS_MEMBER_BASE(GuiNonVirtialRepeatCompositionBase)
				CLASS_MEMBER_CONSTRUCTOR(GuiRepeatStackComposition*(), NO_PARAMETER)
			END_CLASS_MEMBER(GuiRepeatStackComposition)

			BEGIN_CLASS_MEMBER(GuiRepeatFlowComposition)
				CLASS_MEMBER_BASE(GuiFlowComposition)
				CLASS_MEMBER_BASE(GuiNonVirtialRepeatCompositionBase)
				CLASS_MEMBER_CONSTRUCTOR(GuiRepeatFlowComposition*(), NO_PARAMETER)
			END_CLASS_MEMBER(GuiRepeatFlowComposition)

			BEGIN_CLASS_MEMBER(GuiVirtualRepeatCompositionBase)
				CLASS_MEMBER_BASE(GuiBoundsComposition)
				CLASS_MEMBER_BASE(GuiRepeatCompositionBase)
				CLASS_MEMBER_GUIEVENT(AdoptedSizeInvalidated)
				CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(Axis)
				CLASS_MEMBER_PROPERTY_FAST(UseMinimumTotalSize)
				CLASS_MEMBER_PROPERTY_GUIEVENT_READONLY_FAST(TotalSize)
				CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(ViewLocation)
				CLASS_MEMBER_PROPERTY_EVENT_READONLY_FAST(AdoptedSize, AdoptedSizeInvalidated)
				CLASS_MEMBER_METHOD(GetVisibleStyle, { L"itemIndex" })
				CLASS_MEMBER_METHOD(GetVisibleIndex, { L"style" })
				CLASS_MEMBER_METHOD(ResetLayout, { L"recreateVisibleStyles" })
				CLASS_MEMBER_METHOD(InvalidateLayout, NO_PARAMETER)
				CLASS_MEMBER_METHOD(FindItemByRealKeyDirection, { L"itemIndex" _ L"key" })
				CLASS_MEMBER_METHOD(FindItemByVirtualKeyDirection, { L"itemIndex" _ L"key" })
				CLASS_MEMBER_METHOD(EnsureItemVisible, { L"itemIndex" })
				CLASS_MEMBER_METHOD(GetAdoptedSize, { L"expectedSize" })
			END_CLASS_MEMBER(GuiNonVirtialRepeatCompositionBase)

			BEGIN_CLASS_MEMBER(GuiRepeatFreeHeightItemComposition)
				CLASS_MEMBER_BASE(GuiVirtualRepeatCompositionBase)
				CLASS_MEMBER_CONSTRUCTOR(GuiRepeatFreeHeightItemComposition*(), NO_PARAMETER)
			END_CLASS_MEMBER(GuiRepeatFreeHeightItemComposition)

			BEGIN_CLASS_MEMBER(GuiRepeatFixedHeightItemComposition)
				CLASS_MEMBER_BASE(GuiVirtualRepeatCompositionBase)
				CLASS_MEMBER_CONSTRUCTOR(GuiRepeatFixedHeightItemComposition*(), NO_PARAMETER)
			END_CLASS_MEMBER(GuiRepeatFixedHeightItemComposition)

			BEGIN_CLASS_MEMBER(GuiRepeatFixedSizeMultiColumnItemComposition)
				CLASS_MEMBER_BASE(GuiVirtualRepeatCompositionBase)
				CLASS_MEMBER_CONSTRUCTOR(GuiRepeatFixedSizeMultiColumnItemComposition*(), NO_PARAMETER)
			END_CLASS_MEMBER(GuiRepeatFixedSizeMultiColumnItemComposition)

			BEGIN_CLASS_MEMBER(GuiRepeatFixedHeightMultiColumnItemComposition)
				CLASS_MEMBER_BASE(GuiVirtualRepeatCompositionBase)
				CLASS_MEMBER_CONSTRUCTOR(GuiRepeatFixedHeightMultiColumnItemComposition*(), NO_PARAMETER)
			END_CLASS_MEMBER(GuiRepeatFixedHeightMultiColumnItemComposition)

			BEGIN_CLASS_MEMBER(GuiResponsiveCompositionBase)
				CLASS_MEMBER_BASE(GuiBoundsComposition)

				CLASS_MEMBER_PROPERTY_GUIEVENT_READONLY_FAST(LevelCount)
				CLASS_MEMBER_PROPERTY_GUIEVENT_READONLY_FAST(CurrentLevel)
				CLASS_MEMBER_PROPERTY_FAST(Direction)
				CLASS_MEMBER_METHOD(LevelDown, NO_PARAMETER)
				CLASS_MEMBER_METHOD(LevelUp, NO_PARAMETER)
			END_CLASS_MEMBER(GuiResponsiveCompositionBase)

			BEGIN_CLASS_MEMBER(GuiResponsiveSharedComposition)
				CLASS_MEMBER_BASE(GuiBoundsComposition)
				CLASS_MEMBER_CONSTRUCTOR(GuiResponsiveSharedComposition*(), NO_PARAMETER)
				CLASS_MEMBER_PROPERTY_FAST(Shared)
			END_CLASS_MEMBER(GuiResponsiveSharedComposition)

			BEGIN_CLASS_MEMBER(GuiResponsiveViewComposition)
				CLASS_MEMBER_BASE(GuiResponsiveCompositionBase)
				CLASS_MEMBER_CONSTRUCTOR(GuiResponsiveViewComposition*(), NO_PARAMETER)

				CLASS_MEMBER_GUIEVENT(BeforeSwitchingView)
					
				CLASS_MEMBER_PROPERTY_READONLY_FAST(CurrentView)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(SharedControls)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(Views)
			END_CLASS_MEMBER(GuiResponsiveViewComposition)

			BEGIN_CLASS_MEMBER(GuiResponsiveFixedComposition)
				CLASS_MEMBER_BASE(GuiResponsiveCompositionBase)
				CLASS_MEMBER_CONSTRUCTOR(GuiResponsiveFixedComposition*(), NO_PARAMETER)
			END_CLASS_MEMBER(GuiResponsiveFixedComposition)

			BEGIN_CLASS_MEMBER(GuiResponsiveStackComposition)
				CLASS_MEMBER_BASE(GuiResponsiveCompositionBase)
				CLASS_MEMBER_CONSTRUCTOR(GuiResponsiveStackComposition*(), NO_PARAMETER)
			END_CLASS_MEMBER(GuiResponsiveStackComposition)

			BEGIN_CLASS_MEMBER(GuiResponsiveGroupComposition)
				CLASS_MEMBER_BASE(GuiResponsiveCompositionBase)
				CLASS_MEMBER_CONSTRUCTOR(GuiResponsiveGroupComposition*(), NO_PARAMETER)
			END_CLASS_MEMBER(GuiResponsiveGroupComposition)

			BEGIN_CLASS_MEMBER(GuiResponsiveContainerComposition)
				CLASS_MEMBER_BASE(GuiBoundsComposition)
				CLASS_MEMBER_CONSTRUCTOR(GuiResponsiveContainerComposition*(), NO_PARAMETER)

				CLASS_MEMBER_PROPERTY_FAST(ResponsiveTarget)
			END_CLASS_MEMBER(GuiResponsiveContainerComposition)

#undef INTERFACE_IDENTIFIER
#undef _

/***********************************************************************
Type Loader
***********************************************************************/

			class GuiCompositionTypeLoader : public Object, public ITypeLoader
			{
			public:
				void Load(ITypeManager* manager)
				{
					GUIREFLECTIONCOMPOSITION_TYPELIST(ADD_TYPE_INFO)
				}

				void Unload(ITypeManager* manager)
				{
				}
			};

#endif

			bool LoadGuiCompositionTypes()
			{
#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA
				ITypeManager* manager=GetGlobalTypeManager();
				if(manager)
				{
					auto loader=Ptr(new GuiCompositionTypeLoader);
					return manager->AddTypeLoader(loader);
				}
#endif
				return false;
			}
		}
	}
}

/***********************************************************************
.\REFLECTION\TYPEDESCRIPTORS\GUIREFLECTIONCONTROLS.CPP
***********************************************************************/

namespace vl
{
	namespace reflection
	{
		namespace description
		{
			using namespace presentation;
			using namespace presentation::templates;
			using namespace presentation::controls;
			using namespace presentation::controls::list;
			using namespace presentation::controls::tree;
			using namespace presentation::theme;

#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA

#define _ ,

#define CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE_INHERITANCE(CONTROL)\
	CLASS_MEMBER_CONSTRUCTOR(CONTROL*(ThemeName), {L"themeName"})\

#define CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE(CONTROL)\
	CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE_INHERITANCE(CONTROL)\
	CLASS_MEMBER_METHOD(TypedControlTemplateObject, {L"ensureExists"})\

#define CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE_INHERITANCE_2(CONTROL, TYPE2, PARAM2)\
	CLASS_MEMBER_CONSTRUCTOR(CONTROL*(ThemeName, TYPE2), {L"themeName" _ L ## #PARAM2 })\

#define CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE_2(CONTROL, TYPE2, PARAM2)\
	CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE_INHERITANCE_2(CONTROL, TYPE2, PARAM2)\
	CLASS_MEMBER_METHOD(TypedControlTemplateObject, {L"ensureExists"})\

#define CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE_INHERITANCE_3(CONTROL, TYPE2, PARAM2, TYPE3, PARAM3)\
	CLASS_MEMBER_CONSTRUCTOR(CONTROL*(ThemeName, TYPE2, TYPE3), {L"themeName" _ L ## #PARAM2 _ L ## #PARAM3})\

#define CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE_3(CONTROL, TYPE2, PARAM2, TYPE3, PARAM3)\
	CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE_INHERITANCE_3(CONTROL, TYPE2, PARAM2, TYPE3, PARAM3)\
	CLASS_MEMBER_METHOD(TypedControlTemplateObject, {L"ensureExists"})\

#define INTERFACE_IDENTIFIER(INTERFACE)\
	CLASS_MEMBER_STATIC_EXTERNALMETHOD(GetIdentifier, NO_PARAMETER, WString(*)(), vl::presentation::controls::QueryServiceHelper<::INTERFACE>::GetIdentifier)

/***********************************************************************
Type Declaration (Extra)
***********************************************************************/

			BEGIN_CLASS_MEMBER(GuiApplication)
				CLASS_MEMBER_STATIC_EXTERNALMETHOD(GetApplication, NO_PARAMETER, GuiApplication*(*)(), vl::presentation::controls::GetApplication)

				CLASS_MEMBER_EVENT(LocaleChanged)
				CLASS_MEMBER_PROPERTY_EVENT_FAST(Locale, LocaleChanged)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(MainWindow)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(TooltipOwner)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(ExecutablePath)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(ExecutableFolder)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(Windows)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(GlobalShortcutKeyManager)
				
				CLASS_MEMBER_METHOD(Run, {L"mainWindow"})
				CLASS_MEMBER_METHOD(RunOneCycle, NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetWindowFromNative, {L"nativeWindow"});
				CLASS_MEMBER_METHOD(ShowTooltip, {L"owner" _ L"tooltip" _ L"preferredContentWidth" _ L"location"})
				CLASS_MEMBER_METHOD(CloseTooltip, NO_PARAMETER)
				CLASS_MEMBER_METHOD(IsInMainThread, NO_PARAMETER)
				CLASS_MEMBER_METHOD(InvokeAsync, {L"proc"})
				CLASS_MEMBER_METHOD(InvokeInMainThread, {L"controlHost" _ L"proc"})
				CLASS_MEMBER_METHOD(InvokeInMainThreadAndWait, {L"controlHost" _ L"proc" _ L"milliseconds"})
				CLASS_MEMBER_METHOD(DelayExecute, {L"proc" _ L"milliseconds"})
				CLASS_MEMBER_METHOD(DelayExecuteInMainThread, {L"proc" _ L"milliseconds"})
				CLASS_MEMBER_METHOD(RunGuiTask, { L"controlHost" _ L"proc" })
			END_CLASS_MEMBER(GuiApplication)

			BEGIN_ENUM_ITEM(ThemeName)
				ENUM_ITEM_NAMESPACE(ThemeName)
				ENUM_CLASS_ITEM(Unknown)
				ENUM_CLASS_ITEM(Window)
#define GUI_DEFINE_THEME_NAME(TEMPLATE, CONTROL) ENUM_CLASS_ITEM(CONTROL)
				GUI_CONTROL_TEMPLATE_TYPES(GUI_DEFINE_THEME_NAME)
#undef GUI_DEFINE_THEME_NAME
			END_ENUM_ITEM(ThemeName)

			BEGIN_INTERFACE_MEMBER_NOPROXY(ITheme)
				CLASS_MEMBER_STATIC_EXTERNALMETHOD(GetCurrentTheme, NO_PARAMETER, ITheme*(*)(), vl::presentation::theme::GetCurrentTheme)
				CLASS_MEMBER_STATIC_EXTERNALMETHOD(RegisterTheme, {L"name" _ L"theme"}, bool(*)(const WString&, Ptr<ThemeTemplates>), vl::presentation::theme::RegisterTheme)
				CLASS_MEMBER_STATIC_EXTERNALMETHOD(UnrgisterTheme, {L"name"}, Ptr<ThemeTemplates>(*)(const WString&), vl::presentation::theme::UnregisterTheme)

				CLASS_MEMBER_METHOD(CreateStyle, {L"themeName"})
			END_INTERFACE_MEMBER(ITheme)

			BEGIN_CLASS_MEMBER(ThemeTemplates)
				CLASS_MEMBER_BASE(GuiInstanceRootObject)
				CLASS_MEMBER_CONSTRUCTOR(Ptr<ThemeTemplates>(), NO_PARAMETER)

				CLASS_MEMBER_FIELD(Name)
				CLASS_MEMBER_FIELD(PreferCustomFrameWindow)
#define GUI_DEFINE_ITEM_PROPERTY(TEMPLATE, CONTROL) CLASS_MEMBER_FIELD(CONTROL)
				GUI_CONTROL_TEMPLATE_TYPES(GUI_DEFINE_ITEM_PROPERTY)
#undef GUI_DEFINE_ITEM_PROPERTY
			END_CLASS_MEMBER(ThemeTemplates)

			BEGIN_CLASS_MEMBER(GuiDialogBase)
				CLASS_MEMBER_BASE(GuiComponent)
			END_CLASS_MEMBER(GuiDialogBase)

			BEGIN_CLASS_MEMBER(GuiMessageDialog)
				CLASS_MEMBER_BASE(GuiDialogBase)
				CLASS_MEMBER_CONSTRUCTOR(GuiMessageDialog*(), NO_PARAMETER)

				CLASS_MEMBER_PROPERTY_FAST(Input)
				CLASS_MEMBER_PROPERTY_FAST(DefaultButton)
				CLASS_MEMBER_PROPERTY_FAST(Icon)
				CLASS_MEMBER_PROPERTY_FAST(ModalOption)
				CLASS_MEMBER_PROPERTY_FAST(Text)
				CLASS_MEMBER_PROPERTY_FAST(Title)

				CLASS_MEMBER_METHOD(ShowDialog, NO_PARAMETER)
			END_CLASS_MEMBER(GuiMessageDialog)

			BEGIN_CLASS_MEMBER(GuiColorDialog)
				CLASS_MEMBER_BASE(GuiDialogBase)
				CLASS_MEMBER_CONSTRUCTOR(GuiColorDialog*(), NO_PARAMETER)

				CLASS_MEMBER_PROPERTY_FAST(EnabledCustomColor)
				CLASS_MEMBER_PROPERTY_FAST(OpenedCustomColor)
				CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(SelectedColor)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(CustomColors)

				CLASS_MEMBER_METHOD(ShowDialog, NO_PARAMETER)
			END_CLASS_MEMBER(GuiColorDialog)

			BEGIN_CLASS_MEMBER(GuiFontDialog)
				CLASS_MEMBER_BASE(GuiDialogBase)
				CLASS_MEMBER_CONSTRUCTOR(GuiFontDialog*(), NO_PARAMETER)

				CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(SelectedFont)
				CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(SelectedColor)
				CLASS_MEMBER_PROPERTY_FAST(ShowSelection)
				CLASS_MEMBER_PROPERTY_FAST(ShowEffect)
				CLASS_MEMBER_PROPERTY_FAST(ForceFontExist)

				CLASS_MEMBER_METHOD(ShowDialog, NO_PARAMETER)
			END_CLASS_MEMBER(GuiFontDialog)

			BEGIN_CLASS_MEMBER(GuiFileDialogBase)
				CLASS_MEMBER_BASE(GuiDialogBase)

				CLASS_MEMBER_PROPERTY_FAST(Filter)
				CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(FilterIndex)
				CLASS_MEMBER_PROPERTY_FAST(EnabledPreview)
				CLASS_MEMBER_PROPERTY_FAST(Title)
				CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(FileName)
				CLASS_MEMBER_PROPERTY_FAST(Directory)
				CLASS_MEMBER_PROPERTY_FAST(DefaultExtension)
				CLASS_MEMBER_PROPERTY_FAST(Options)
			END_CLASS_MEMBER(GuiFileDialogBase)

			BEGIN_CLASS_MEMBER(GuiOpenFileDialog)
				CLASS_MEMBER_BASE(GuiFileDialogBase)
				CLASS_MEMBER_CONSTRUCTOR(GuiOpenFileDialog*(), NO_PARAMETER)

				CLASS_MEMBER_PROPERTY_READONLY_FAST(FileNames)
				CLASS_MEMBER_METHOD(ShowDialog, NO_PARAMETER)
			END_CLASS_MEMBER(GuiOpenFileDialog)

			BEGIN_CLASS_MEMBER(GuiSaveFileDialog)
				CLASS_MEMBER_BASE(GuiFileDialogBase)
				CLASS_MEMBER_CONSTRUCTOR(GuiSaveFileDialog*(), NO_PARAMETER)
				
				CLASS_MEMBER_METHOD(ShowDialog, NO_PARAMETER)
			END_CLASS_MEMBER(GuiSaveFileDialog)

			BEGIN_CLASS_MEMBER(GuiSelectableButton::GroupController)
				CLASS_MEMBER_BASE(GuiComponent)

				CLASS_MEMBER_METHOD(Attach, {L"button"})
				CLASS_MEMBER_METHOD(Detach, {L"button"})
				CLASS_MEMBER_METHOD(OnSelectedChanged, {L"button"})
			END_CLASS_MEMBER(GuiSelectableButton::GroupController)

			BEGIN_CLASS_MEMBER(GuiSelectableButton::MutexGroupController)
				CLASS_MEMBER_BASE(GuiSelectableButton::GroupController)
				CLASS_MEMBER_CONSTRUCTOR(GuiSelectableButton::MutexGroupController*(), NO_PARAMETER)
			END_CLASS_MEMBER(GuiSelectableButton::MutexGroupController)

			BEGIN_INTERFACE_MEMBER(list::IItemProviderCallback)
				CLASS_MEMBER_BASE(IDescriptable)

				CLASS_MEMBER_METHOD(OnAttached, {L"provider"})
				CLASS_MEMBER_METHOD(OnItemModified, {L"start" _ L"count" _ L"newCount" _ L"itemReferenceUpdated"})
			END_INTERFACE_MEMBER(list::IItemProviderCallback)

			BEGIN_INTERFACE_MEMBER(list::IItemProvider)
				CLASS_MEMBER_BASE(IDescriptable)

				CLASS_MEMBER_METHOD(AttachCallback, {L"value"})
				CLASS_MEMBER_METHOD(DetachCallback, {L"value"})
				CLASS_MEMBER_METHOD(PushEditing, NO_PARAMETER)
				CLASS_MEMBER_METHOD(PopEditing, NO_PARAMETER)
				CLASS_MEMBER_METHOD(IsEditing, NO_PARAMETER)
				CLASS_MEMBER_METHOD(Count, NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetTextValue, { L"itemIndex" })
				CLASS_MEMBER_METHOD(GetBindingValue, { L"itemIndex" })
				CLASS_MEMBER_METHOD(RequestView, {L"identifier"})
			END_INTERFACE_MEMBER(list::IItemProvider)

			BEGIN_INTERFACE_MEMBER_NOPROXY(GuiListControl::IItemArrangerCallback)
				CLASS_MEMBER_BASE(IDescriptable)
				CLASS_MEMBER_METHOD(CreateItem, {L"itemIndex"})
				CLASS_MEMBER_METHOD(GetItemBounds, { L"style" })
				CLASS_MEMBER_METHOD(GetItem, { L"bounds" })
				CLASS_MEMBER_METHOD(ReleaseItem, {L"style"})
				CLASS_MEMBER_METHOD(SetViewLocation, {L"value"})
				CLASS_MEMBER_METHOD(GetContainerComposition, NO_PARAMETER)
				CLASS_MEMBER_METHOD(OnTotalSizeChanged, NO_PARAMETER)
				CLASS_MEMBER_METHOD(OnAdoptedSizeChanged, NO_PARAMETER)
			END_INTERFACE_MEMBER(GuiListControl::IItemArrangerCallback)

			BEGIN_ENUM_ITEM(GuiListControl::EnsureItemVisibleResult)
				ENUM_CLASS_ITEM(ItemNotExists)
				ENUM_CLASS_ITEM(Moved)
				ENUM_CLASS_ITEM(NotMoved)
			END_ENUM_ITEM(GuiListControl::EnsureItemVisibleResult)

			BEGIN_INTERFACE_MEMBER(GuiListControl::IItemArranger)
				CLASS_MEMBER_BASE(list::IItemProviderCallback)

				CLASS_MEMBER_PROPERTY_FAST(Callback)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(TotalSize)
				
				CLASS_MEMBER_METHOD(AttachListControl, {L"value"})
				CLASS_MEMBER_METHOD(DetachListControl, NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetVisibleStyle, {L"itemIndex"})
				CLASS_MEMBER_METHOD(GetVisibleIndex, {L"style"})
				CLASS_MEMBER_METHOD(ReloadVisibleStyles, NO_PARAMETER)
				CLASS_MEMBER_METHOD(OnViewChanged, {L"bounds"})
				CLASS_MEMBER_METHOD(FindItemByVirtualKeyDirection, {L"itemIndex" _ L"key"})
				CLASS_MEMBER_METHOD(EnsureItemVisible, {L"itemIndex"})
				CLASS_MEMBER_METHOD(GetAdoptedSize, {L"expectedSize"})
			END_INTERFACE_MEMBER(GuiListControl::IItemArranger)

			BEGIN_CLASS_MEMBER(ItemProviderBase)
				CLASS_MEMBER_BASE(list::IItemProvider)
			END_CLASS_MEMBER(ItemProviderBase)

			BEGIN_CLASS_MEMBER(RangedItemArrangerBase)
				CLASS_MEMBER_BASE(GuiListControl::IItemArranger)
			END_CLASS_MEMBER(RangedItemArrangerBase)

			BEGIN_CLASS_MEMBER(FreeHeightItemArranger)
				CLASS_MEMBER_BASE(RangedItemArrangerBase)
				CLASS_MEMBER_CONSTRUCTOR(Ptr<FreeHeightItemArranger>(), NO_PARAMETER)
			END_CLASS_MEMBER(FreeHeightItemArranger)

			BEGIN_CLASS_MEMBER(FixedHeightItemArranger)
				CLASS_MEMBER_BASE(RangedItemArrangerBase)
				CLASS_MEMBER_CONSTRUCTOR(Ptr<FixedHeightItemArranger>(), NO_PARAMETER)
			END_CLASS_MEMBER(FixedHeightItemArranger)

			BEGIN_CLASS_MEMBER(FixedSizeMultiColumnItemArranger)
				CLASS_MEMBER_BASE(RangedItemArrangerBase)
				CLASS_MEMBER_CONSTRUCTOR(Ptr<FixedSizeMultiColumnItemArranger>(), NO_PARAMETER)
			END_CLASS_MEMBER(FixedSizeMultiColumnItemArranger)

			BEGIN_CLASS_MEMBER(FixedHeightMultiColumnItemArranger)
				CLASS_MEMBER_BASE(RangedItemArrangerBase)
				CLASS_MEMBER_CONSTRUCTOR(Ptr<FixedHeightMultiColumnItemArranger>(), NO_PARAMETER)
			END_CLASS_MEMBER(FixedHeightMultiColumnItemArranger)

			BEGIN_INTERFACE_MEMBER(ITextItemView)
				INTERFACE_IDENTIFIER(vl::presentation::controls::list::ITextItemView)

				CLASS_MEMBER_METHOD(GetChecked, {L"itemIndex"})
				CLASS_MEMBER_METHOD(SetChecked, {L"itemIndex" _ L"value"})
			END_INTERFACE_MEMBER(ITextItemView)

			BEGIN_CLASS_MEMBER(TextItem)
				CLASS_MEMBER_CONSTRUCTOR(Ptr<TextItem>(), NO_PARAMETER)
				CLASS_MEMBER_CONSTRUCTOR(Ptr<TextItem>(const WString&), {L"text"})
				CLASS_MEMBER_CONSTRUCTOR(Ptr<TextItem>(const WString&, bool), {L"text" _ L"checked"})

				CLASS_MEMBER_PROPERTY_FAST(Text)
				CLASS_MEMBER_PROPERTY_FAST(Checked)
			END_CLASS_MEMBER(TextItem)

			BEGIN_CLASS_MEMBER(TextItemProvider)
				CLASS_MEMBER_BASE(list::IItemProvider)
				CLASS_MEMBER_BASE(ITextItemView)
			END_CLASS_MEMBER(TextItemProvider)

			BEGIN_ENUM_ITEM(TextListView)
				ENUM_CLASS_ITEM(Text)
				ENUM_CLASS_ITEM(Check)
				ENUM_CLASS_ITEM(Radio)
				ENUM_CLASS_ITEM(Unknown)
			END_ENUM_ITEM(TextListView)

			BEGIN_INTERFACE_MEMBER(IListViewItemView)
				INTERFACE_IDENTIFIER(vl::presentation::controls::list::IListViewItemView)

				CLASS_MEMBER_METHOD(GetSmallImage, {L"itemIndex"})
				CLASS_MEMBER_METHOD(GetLargeImage, {L"itemIndex"})
				CLASS_MEMBER_METHOD(GetText, {L"itemIndex"})
				CLASS_MEMBER_METHOD(GetSubItem, {L"itemIndex" _ L"index"})
				CLASS_MEMBER_METHOD(GetDataColumnCount, NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetDataColumn, {L"index"})
				CLASS_MEMBER_METHOD(GetColumnCount, NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetColumnText, {L"index"})
			END_INTERFACE_MEMBER(ListViewItemStyleProvider::IListViewItemView)

			BEGIN_CLASS_MEMBER(ListViewColumnItemArranger)
				CLASS_MEMBER_BASE(FixedHeightItemArranger)
				CLASS_MEMBER_CONSTRUCTOR(Ptr<ListViewColumnItemArranger>(), NO_PARAMETER)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(ColumnButtons)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(ColumnSplitters)
			END_CLASS_MEMBER(ListViewColumnItemArranger)

			BEGIN_CLASS_MEMBER(IColumnItemViewCallback)
				CLASS_MEMBER_METHOD(OnColumnRebuilt, NO_PARAMETER)
				CLASS_MEMBER_METHOD(OnColumnChanged, {L"needToRefreshItems"})
			END_CLASS_MEMBER(IColumnItemViewCallback)

			BEGIN_INTERFACE_MEMBER(IColumnItemView)
				CLASS_MEMBER_BASE(IDescriptable)
				INTERFACE_IDENTIFIER(vl::presentation::controls::list::IColumnItemView)

				CLASS_MEMBER_METHOD(AttachCallback, {L"value"})
				CLASS_MEMBER_METHOD(DetachCallback, {L"value"})
				CLASS_MEMBER_METHOD(GetColumnSize, {L"index"})
				CLASS_MEMBER_METHOD(SetColumnSize, {L"index" _ L"value"})
				CLASS_MEMBER_METHOD(GetDropdownPopup, {L"index"})
				CLASS_MEMBER_METHOD(GetSortingState, {L"index"})
			END_INTERFACE_MEMBER(IColumnItemView)

			BEGIN_CLASS_MEMBER(ListViewItem)
				CLASS_MEMBER_CONSTRUCTOR(Ptr<ListViewItem>(), NO_PARAMETER)

				CLASS_MEMBER_PROPERTY_FAST(SmallImage)
				CLASS_MEMBER_PROPERTY_FAST(LargeImage)
				CLASS_MEMBER_PROPERTY_FAST(Text)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(SubItems)
				CLASS_MEMBER_PROPERTY_FAST(Tag)
			END_CLASS_MEMBER(ListViewItem)

			BEGIN_CLASS_MEMBER(ListViewColumn)
				CLASS_MEMBER_CONSTRUCTOR(Ptr<ListViewColumn>(), NO_PARAMETER)
				CLASS_MEMBER_CONSTRUCTOR(Ptr<ListViewColumn>(const WString&), {L"text"})
				CLASS_MEMBER_CONSTRUCTOR(Ptr<ListViewColumn>(const WString&, vint), {L"text" _ L"size"})

				CLASS_MEMBER_PROPERTY_FAST(Text)
				CLASS_MEMBER_PROPERTY_FAST(TextProperty)
				CLASS_MEMBER_PROPERTY_FAST(Size)
				CLASS_MEMBER_PROPERTY_FAST(OwnPopup)
				CLASS_MEMBER_PROPERTY_FAST(DropdownPopup)
				CLASS_MEMBER_PROPERTY_FAST(SortingState)
			END_CLASS_MEMBER(ListViewColumn)

			BEGIN_CLASS_MEMBER(ListViewItemProvider)
				CLASS_MEMBER_BASE(list::IItemProvider)
				CLASS_MEMBER_BASE(IListViewItemView)
				CLASS_MEMBER_BASE(IColumnItemView)
			END_CLASS_MEMBER(ListViewItemProvider)

			BEGIN_ENUM_ITEM(ListViewView)
				ENUM_CLASS_ITEM(BigIcon)
				ENUM_CLASS_ITEM(SmallIcon)
				ENUM_CLASS_ITEM(List)
				ENUM_CLASS_ITEM(Tile)
				ENUM_CLASS_ITEM(Information)
				ENUM_CLASS_ITEM(Detail)
				ENUM_CLASS_ITEM(Unknown)
			END_ENUM_ITEM(ListViewView)

			BEGIN_INTERFACE_MEMBER_NOPROXY(IGuiMenuService)
				INTERFACE_IDENTIFIER(vl::presentation::controls::IGuiMenuService)

				CLASS_MEMBER_METHOD(GetParentMenuService, NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetPreferredDirection, NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetHostThemeName, NO_PARAMETER)
				CLASS_MEMBER_METHOD(IsActiveState, NO_PARAMETER)
				CLASS_MEMBER_METHOD(IsSubMenuActivatedByMouseDown, NO_PARAMETER)
				CLASS_MEMBER_METHOD(MenuItemExecuted, NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetOpeningMenu, NO_PARAMETER)
				CLASS_MEMBER_METHOD(MenuOpened, {L"menu"})
				CLASS_MEMBER_METHOD(MenuClosed, {L"menu"})
			END_INTERFACE_MEMBER(IGuiMenuService)

			BEGIN_INTERFACE_MEMBER_NOPROXY(IGuiMenuDropdownProvider)
				INTERFACE_IDENTIFIER(vl::presentation::controls::IGuiMenuDropdownProvider)

				CLASS_MEMBER_METHOD(ProvideDropdownMenu, NO_PARAMETER)
			END_INTERFACE_MEMBER(IGuiMenuDropdownProvider)

			BEGIN_ENUM_ITEM(IGuiMenuService::Direction)
				ENUM_ITEM_NAMESPACE(IGuiMenuService)
				ENUM_NAMESPACE_ITEM(Horizontal)
				ENUM_NAMESPACE_ITEM(Vertical)
			END_ENUM_ITEM(IGuiMenuService::Direction)

			BEGIN_INTERFACE_MEMBER_NOPROXY(INodeProviderCallback)
				CLASS_MEMBER_BASE(IDescriptable)

				CLASS_MEMBER_METHOD(OnAttached, {L"provider"})
				CLASS_MEMBER_METHOD(OnBeforeItemModified, {L"parentNode" _ L"start" _ L"count" _ L"newCount" _ L"itemReferenceUpdated"})
				CLASS_MEMBER_METHOD(OnAfterItemModified, {L"parentNode" _ L"start" _ L"count" _ L"newCount" _ L"itemReferenceUpdated"})
				CLASS_MEMBER_METHOD(OnItemExpanded, {L"node"})
				CLASS_MEMBER_METHOD(OnItemCollapsed, {L"node"})
			END_INTERFACE_MEMBER(INodeProviderCallback)

			BEGIN_INTERFACE_MEMBER(INodeProvider)
				CLASS_MEMBER_BASE(IDescriptable)

				CLASS_MEMBER_PROPERTY_FAST(Expanding)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(ChildCount)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(Parent)

				CLASS_MEMBER_METHOD(CalculateTotalVisibleNodes, NO_PARAMETER)
				CLASS_MEMBER_METHOD(NotifyDataModified, NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetChild, {L"index"})
			END_INTERFACE_MEMBER(INodeProvider)

			BEGIN_INTERFACE_MEMBER(INodeRootProvider)
				CLASS_MEMBER_BASE(IDescriptable)

				CLASS_MEMBER_PROPERTY_READONLY_FAST(RootNode)

				CLASS_MEMBER_METHOD(CanGetNodeByVisibleIndex, NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetNodeByVisibleIndex, {L"index"})
				CLASS_MEMBER_METHOD(AttachCallback, {L"value"})
				CLASS_MEMBER_METHOD(DetachCallback, {L"value"})
				CLASS_MEMBER_METHOD(GetTextValue, { L"node" })
				CLASS_MEMBER_METHOD(GetBindingValue, { L"node" })
				CLASS_MEMBER_METHOD(RequestView, {L"identifier"})
			END_INTERFACE_MEMBER(INodeRootProvider)

			BEGIN_INTERFACE_MEMBER(INodeItemView)
				INTERFACE_IDENTIFIER(vl::presentation::controls::tree::INodeItemView)

				CLASS_MEMBER_METHOD(RequestNode, {L"index"})
				CLASS_MEMBER_METHOD(CalculateNodeVisibilityIndex, {L"node"})
			END_INTERFACE_MEMBER(INodeItemView)

			BEGIN_CLASS_MEMBER(NodeItemProvider)
				CLASS_MEMBER_BASE(ItemProviderBase)
				CLASS_MEMBER_BASE(INodeItemView)
			END_CLASS_MEMBER(NodeItemProvider)

			BEGIN_CLASS_MEMBER(MemoryNodeProvider)
				CLASS_MEMBER_BASE(INodeProvider)
				CLASS_MEMBER_CONSTRUCTOR(Ptr<MemoryNodeProvider>(), NO_PARAMETER)
				CLASS_MEMBER_CONSTRUCTOR(Ptr<MemoryNodeProvider>(Ptr<DescriptableObject>), {L"data"})

				CLASS_MEMBER_PROPERTY_FAST(Data)

				CLASS_MEMBER_METHOD_RENAME(GetChildren, Children, NO_PARAMETER)
				CLASS_MEMBER_PROPERTY_READONLY(Children, GetChildren)
			END_CLASS_MEMBER(MemoryNodeProvider)

			BEGIN_CLASS_MEMBER(NodeRootProviderBase)
				CLASS_MEMBER_BASE(INodeRootProvider)
			END_CLASS_MEMBER(NodeRootProviderBase)

			BEGIN_CLASS_MEMBER(MemoryNodeRootProvider)
				CLASS_MEMBER_BASE(MemoryNodeProvider)
				CLASS_MEMBER_BASE(NodeRootProviderBase)

				CLASS_MEMBER_PROPERTY_READONLY_FAST(RootNode)

				CLASS_MEMBER_METHOD(GetMemoryNode, {L"node"})
			END_CLASS_MEMBER(MemoryNodeRootProvider)

			BEGIN_INTERFACE_MEMBER(ITreeViewItemView)
				INTERFACE_IDENTIFIER(vl::presentation::controls::tree::ITreeViewItemView)

				CLASS_MEMBER_METHOD(GetNodeImage, {L"node"})
			END_INTERFACE_MEMBER(ITreeViewItemView)

			BEGIN_CLASS_MEMBER(TreeViewItem)
				CLASS_MEMBER_CONSTRUCTOR(Ptr<TreeViewItem>(), NO_PARAMETER)
				CLASS_MEMBER_CONSTRUCTOR(Ptr<TreeViewItem>(const Ptr<GuiImageData>&, const WString&), {L"image" _ L"text"})

				CLASS_MEMBER_FIELD(image)
				CLASS_MEMBER_FIELD(text)
				CLASS_MEMBER_FIELD(tag)
			END_CLASS_MEMBER(TreeViewItem)

			BEGIN_CLASS_MEMBER(TreeViewItemRootProvider)
				CLASS_MEMBER_BASE(MemoryNodeRootProvider)
				CLASS_MEMBER_BASE(ITreeViewItemView)
				CLASS_MEMBER_CONSTRUCTOR(Ptr<TreeViewItemRootProvider>(), NO_PARAMETER)

				CLASS_MEMBER_METHOD(GetTreeViewData, {L"node"})
				CLASS_MEMBER_METHOD(SetTreeViewData, {L"node" _ L"value"})
				CLASS_MEMBER_METHOD(UpdateTreeViewData, {L"node"})
			END_CLASS_MEMBER(TreeViewItemRootProvider)

			BEGIN_CLASS_MEMBER(GuiToolstripCommand)
				CLASS_MEMBER_BASE(GuiComponent)
				CLASS_MEMBER_CONSTRUCTOR(GuiToolstripCommand*(), NO_PARAMETER)

				CLASS_MEMBER_GUIEVENT(Executed)
				CLASS_MEMBER_GUIEVENT(DescriptionChanged)

				CLASS_MEMBER_PROPERTY_EVENT_FAST(LargeImage, DescriptionChanged)
				CLASS_MEMBER_PROPERTY_EVENT_FAST(Image, DescriptionChanged)
				CLASS_MEMBER_PROPERTY_EVENT_FAST(Text, DescriptionChanged)
				CLASS_MEMBER_PROPERTY_EVENT_READONLY_FAST(Shortcut, DescriptionChanged)
				CLASS_MEMBER_PROPERTY_EVENT_FAST(ShortcutBuilder, DescriptionChanged)
				CLASS_MEMBER_PROPERTY_EVENT_FAST(Enabled, DescriptionChanged)
				CLASS_MEMBER_PROPERTY_EVENT_FAST(Selected, DescriptionChanged)
			END_CLASS_MEMBER(GuiToolstripCommand)

			BEGIN_ENUM_ITEM(RibbonButtonSize)
				ENUM_CLASS_ITEM(Large)
				ENUM_CLASS_ITEM(Small)
				ENUM_CLASS_ITEM(Icon)
			END_ENUM_ITEM(RibbonButtonSize)

			BEGIN_STRUCT_MEMBER(GalleryPos)
				STRUCT_MEMBER(group)
				STRUCT_MEMBER(item)
			END_STRUCT_MEMBER(GalleryPos)

			BEGIN_CLASS_MEMBER(GalleryGroup)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(Name)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(ItemValues)
			END_CLASS_MEMBER(GalleryGroup)

			BEGIN_CLASS_MEMBER(GroupedDataSource)
				CLASS_MEMBER_PROPERTY_FAST(ItemSource)
				CLASS_MEMBER_PROPERTY_GUIEVENT_READONLY_FAST(GroupEnabled)
				CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(GroupTitleProperty)
				CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(GroupChildrenProperty)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(Groups)
			END_CLASS_MEMBER(GroupedDataSource)

			BEGIN_ENUM_ITEM(GuiDocumentEditMode)
				ENUM_CLASS_ITEM(ViewOnly)
				ENUM_CLASS_ITEM(Selectable)
				ENUM_CLASS_ITEM(Editable)
			END_ENUM_ITEM(GuiDocumentEditMode)

			BEGIN_ENUM_ITEM(GuiDocumentParagraphMode)
				ENUM_CLASS_ITEM(Singleline)
				ENUM_CLASS_ITEM(Multiline)
				ENUM_CLASS_ITEM(Paragraph)
			END_ENUM_ITEM(GuiDocumentParagraphMode)

			BEGIN_STRUCT_MEMBER(GuiDocumentConfig)
				STRUCT_MEMBER(autoExpand)
				STRUCT_MEMBER(pasteAsPlainText)
				STRUCT_MEMBER(wrapLine)
				STRUCT_MEMBER(paragraphMode)
				STRUCT_MEMBER(paragraphPadding)
				STRUCT_MEMBER(doubleLineBreaksBetweenParagraph)
				STRUCT_MEMBER(spaceForFlattenedLineBreak)
			END_STRUCT_MEMBER(GuiDocumentConfig)

			BEGIN_CLASS_MEMBER(GuiDocumentItem)
				CLASS_MEMBER_CONSTRUCTOR(Ptr<GuiDocumentItem>(const WString&), { L"name" })

				CLASS_MEMBER_PROPERTY_READONLY_FAST(Container)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(Name)
			END_CLASS_MEMBER(GuiDocumentItem)

			BEGIN_INTERFACE_MEMBER(IDataGridContext)
				CLASS_MEMBER_BASE(IDescriptable)

				CLASS_MEMBER_PROPERTY_READONLY_FAST(ItemProvider)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(ListViewControlTemplate)
				CLASS_MEMBER_METHOD(RequestSaveData, NO_PARAMETER)
			END_INTERFACE_MEMBER(IDataGridContext)

			BEGIN_INTERFACE_MEMBER_NOPROXY(IDataVisualizerFactory)
				CLASS_MEMBER_BASE(IDescriptable)

				CLASS_MEMBER_METHOD(CreateVisualizer, {L"dataGridContext"})
			END_INTERFACE_MEMBER(IDataVisualizerFactory)

			BEGIN_INTERFACE_MEMBER_NOPROXY(IDataVisualizer)
				CLASS_MEMBER_BASE(IDescriptable)

				CLASS_MEMBER_PROPERTY_READONLY_FAST(Factory)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(Template)

				CLASS_MEMBER_METHOD(BeforeVisualizeCell, {L"itemProvider" _ L"row" _ L"column"})
				CLASS_MEMBER_METHOD(SetSelected, {L"value"})
			END_INTERFACE_MEMBER(IDataVisualizer)

			BEGIN_INTERFACE_MEMBER_NOPROXY(IDataEditorFactory)
				CLASS_MEMBER_BASE(IDescriptable)

				CLASS_MEMBER_METHOD(CreateEditor, {L"dataGridContext"})
			END_INTERFACE_MEMBER(IDataEditorFactory)

			BEGIN_INTERFACE_MEMBER_NOPROXY(IDataEditor)
				CLASS_MEMBER_BASE(IDescriptable)

				CLASS_MEMBER_PROPERTY_READONLY_FAST(Factory)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(Template)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(CellValueSaved)

				CLASS_MEMBER_METHOD(BeforeEditCell, {L"itemProvider" _ L"row" _ L"column"})
			END_INTERFACE_MEMBER(IDataEditor)

			BEGIN_INTERFACE_MEMBER(IDataGridView)
				CLASS_MEMBER_BASE(IDescriptable)
				INTERFACE_IDENTIFIER(vl::presentation::controls::list::IDataGridView)

				CLASS_MEMBER_PROPERTY_READONLY_FAST(SortedColumn)
				CLASS_MEMBER_METHOD(IsColumnSortable, {L"column"})
				CLASS_MEMBER_METHOD(SortByColumn, {L"column" _ L"ascending"})
				CLASS_MEMBER_METHOD(IsSortOrderAscending, NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetCellSpan, {L"row" _ L"column"})
				CLASS_MEMBER_METHOD(GetCellDataVisualizerFactory, {L"row" _ L"column"})
				CLASS_MEMBER_METHOD(GetCellDataEditorFactory, {L"row" _ L"column"})
				CLASS_MEMBER_METHOD(GetBindingCellValue, {L"row" _ L"column"})
				CLASS_MEMBER_METHOD(SetBindingCellValue, {L"row" _ L"column" _ L"value"})
			END_INTERFACE_MEMBER(IDataGridView)

			BEGIN_CLASS_MEMBER(DataVisualizerBase)
				CLASS_MEMBER_BASE(IDataVisualizer)
			END_CLASS_MEMBER(DataVisualizerBase)

			BEGIN_CLASS_MEMBER(DataVisualizerFactory)
				CLASS_MEMBER_BASE(IDataVisualizerFactory)
				CLASS_MEMBER_CONSTRUCTOR(Ptr<DataVisualizerFactory>(TemplateProperty<templates::GuiGridVisualizerTemplate>, Ptr<DataVisualizerFactory>), { L"templateFactory" _ L"decoratedFactory"})
			END_CLASS_MEMBER(DataVisualizerFactory)

			BEGIN_CLASS_MEMBER(DataEditorBase)
				CLASS_MEMBER_BASE(IDataEditor)
			END_CLASS_MEMBER(DataEditorBase)

			BEGIN_CLASS_MEMBER(DataEditorFactory)
				CLASS_MEMBER_BASE(IDataEditorFactory)
				CLASS_MEMBER_CONSTRUCTOR(Ptr<DataEditorFactory>(TemplateProperty<templates::GuiGridEditorTemplate>), { L"templateFactory" })
			END_CLASS_MEMBER(DataEditorFactory)

			BEGIN_INTERFACE_MEMBER(IDataProcessorCallback)
				CLASS_MEMBER_BASE(IDescriptable)

				CLASS_MEMBER_PROPERTY_READONLY_FAST(ItemProvider)
				CLASS_MEMBER_METHOD(OnProcessorChanged, NO_PARAMETER)
			END_INTERFACE_MEMBER(IDataProcessorCallback)

			BEGIN_INTERFACE_MEMBER(IDataFilter)
				CLASS_MEMBER_BASE(IDescriptable)

				CLASS_MEMBER_METHOD(SetCallback, { L"value" })
				CLASS_MEMBER_METHOD(Filter, { L"row" })
			END_INTERFACE_MEMBER(IDataFilter)

			BEGIN_INTERFACE_MEMBER(IDataSorter)
				CLASS_MEMBER_BASE(IDescriptable)

				CLASS_MEMBER_METHOD(SetCallback, { L"value" })
				CLASS_MEMBER_METHOD(Compare, { L"row1" _ L"row2" })
			END_INTERFACE_MEMBER(IDataSorter)

			BEGIN_CLASS_MEMBER(DataFilterBase)
				CLASS_MEMBER_BASE(IDataFilter)
			END_CLASS_MEMBER(DataFilterBase)

			BEGIN_CLASS_MEMBER(DataMultipleFilter)
				CLASS_MEMBER_BASE(DataFilterBase)

				CLASS_MEMBER_METHOD(AddSubFilter, {L"value"})
				CLASS_MEMBER_METHOD(RemoveSubFilter, {L"value"})
			END_CLASS_MEMBER(DataMultipleFilter)

			BEGIN_CLASS_MEMBER(DataAndFilter)
				CLASS_MEMBER_BASE(DataMultipleFilter)
				CLASS_MEMBER_CONSTRUCTOR(Ptr<DataAndFilter>(), NO_PARAMETER)
			END_CLASS_MEMBER(DataAndFilter)

			BEGIN_CLASS_MEMBER(DataOrFilter)
				CLASS_MEMBER_BASE(DataMultipleFilter)
				CLASS_MEMBER_CONSTRUCTOR(Ptr<DataOrFilter>(), NO_PARAMETER)
			END_CLASS_MEMBER(DataOrFilter)

			BEGIN_CLASS_MEMBER(DataNotFilter)
				CLASS_MEMBER_BASE(DataFilterBase)
				CLASS_MEMBER_CONSTRUCTOR(Ptr<DataNotFilter>(), NO_PARAMETER)

				CLASS_MEMBER_METHOD(SetSubFilter, {L"value"})
			END_CLASS_MEMBER(DataNotFilter)

			BEGIN_CLASS_MEMBER(DataSorterBase)
				CLASS_MEMBER_BASE(IDataSorter)
			END_CLASS_MEMBER(DataSorterBase)

			BEGIN_CLASS_MEMBER(DataMultipleSorter)
				CLASS_MEMBER_BASE(DataSorterBase)
				CLASS_MEMBER_CONSTRUCTOR(Ptr<DataMultipleSorter>(), NO_PARAMETER)

				CLASS_MEMBER_METHOD(SetLeftSorter, {L"value"})
				CLASS_MEMBER_METHOD(SetRightSorter, {L"value"})
			END_CLASS_MEMBER(DataMultipleSorter)

			BEGIN_CLASS_MEMBER(DataReverseSorter)
				CLASS_MEMBER_BASE(DataSorterBase)
				CLASS_MEMBER_CONSTRUCTOR(Ptr<DataReverseSorter>(), NO_PARAMETER)
				
				CLASS_MEMBER_METHOD(SetSubSorter, {L"value"})
			END_CLASS_MEMBER(DataReverseSorter)

			BEGIN_CLASS_MEMBER(DataColumn)
				CLASS_MEMBER_CONSTRUCTOR(Ptr<DataColumn>(), NO_PARAMETER)

				CLASS_MEMBER_PROPERTY_FAST(Text)
				CLASS_MEMBER_PROPERTY_FAST(Size)
				CLASS_MEMBER_PROPERTY_FAST(OwnPopup)
				CLASS_MEMBER_PROPERTY_FAST(Popup)
				CLASS_MEMBER_PROPERTY_FAST(Filter)
				CLASS_MEMBER_PROPERTY_FAST(Sorter)
				CLASS_MEMBER_PROPERTY_FAST(VisualizerFactory)
				CLASS_MEMBER_PROPERTY_FAST(EditorFactory)

				CLASS_MEMBER_METHOD(GetCellText, { L"row" })
				CLASS_MEMBER_METHOD(GetCellValue, { L"row" })
				CLASS_MEMBER_METHOD(SetCellValue, { L"row" _ L"value" })
				CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(TextProperty)
				CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(ValueProperty)
			END_CLASS_MEMBER(DataColumn)

			BEGIN_CLASS_MEMBER(DataProvider)
				CLASS_MEMBER_BASE(ItemProviderBase)
				CLASS_MEMBER_BASE(IListViewItemView)
				CLASS_MEMBER_BASE(IColumnItemView)
				CLASS_MEMBER_BASE(IDataGridView)
				CLASS_MEMBER_BASE(IDataProcessorCallback)
			END_CLASS_MEMBER(DataProvider)

			BEGIN_CLASS_MEMBER(TextItemBindableProvider)
				CLASS_MEMBER_BASE(ItemProviderBase)
				CLASS_MEMBER_BASE(ITextItemView)
			END_CLASS_MEMBER(TextItemBindableProvider)

			BEGIN_CLASS_MEMBER(ListViewItemBindableProvider)
				CLASS_MEMBER_BASE(ItemProviderBase)
				CLASS_MEMBER_BASE(IListViewItemView)
				CLASS_MEMBER_BASE(IColumnItemView)
			END_CLASS_MEMBER(ListViewItemBindableProvider)

			BEGIN_CLASS_MEMBER(TreeViewItemBindableNode)
				CLASS_MEMBER_BASE(INodeProvider)
			END_CLASS_MEMBER(TreeViewItemBindableNode)

			BEGIN_CLASS_MEMBER(TreeViewItemBindableRootProvider)
				CLASS_MEMBER_BASE(NodeRootProviderBase)
				CLASS_MEMBER_BASE(ITreeViewItemView)
			END_CLASS_MEMBER(TreeViewItemBindableRootProvider)

/***********************************************************************
Type Declaration (Class)
***********************************************************************/

			BEGIN_CLASS_MEMBER(GuiDisposedFlag)
				CLASS_MEMBER_METHOD(IsDisposed, NO_PARAMETER)
			END_CLASS_MEMBER(GuiDisposedFlag)

			BEGIN_CLASS_MEMBER(GuiControl)
				CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE(GuiControl)

				CLASS_MEMBER_EXTERNALMETHOD(SafeDelete, NO_PARAMETER, void(GuiControl::*)(), vl::presentation::compositions::SafeDeleteControl)

				CLASS_MEMBER_PROPERTY_READONLY_FAST(DisposedFlag)
				CLASS_MEMBER_GUIEVENT(ControlSignalTrigerred)
				CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(ControlThemeName)
				CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(ControlTemplate)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(ControlTemplateObject)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(BoundsComposition)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(ContainerComposition)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(FocusableComposition)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(Parent)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(ChildrenCount)
				CLASS_MEMBER_PROPERTY_EVENT_READONLY_FAST(RelatedControlHost, RenderTargetChanged)
				CLASS_MEMBER_PROPERTY_GUIEVENT_READONLY_FAST(VisuallyEnabled)
				CLASS_MEMBER_PROPERTY_GUIEVENT_READONLY_FAST(Focused)
				CLASS_MEMBER_PROPERTY_FAST(AcceptTabInput)
				CLASS_MEMBER_PROPERTY_FAST(TabPriority)
				CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(Enabled)
				CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(Visible)
				CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(Alt)
				CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(Text)
				CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(Font)
				CLASS_MEMBER_PROPERTY_GUIEVENT_READONLY_FAST(DisplayFont)
				CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(Context)
				CLASS_MEMBER_PROPERTY_FAST(Tag)
				CLASS_MEMBER_PROPERTY_FAST(TooltipControl)
				CLASS_MEMBER_PROPERTY_FAST(TooltipWidth)

				CLASS_MEMBER_METHOD(SetControlThemeNameAndTemplate, { L"themeNameValue" _ L"controlTemplateValue" })
				CLASS_MEMBER_METHOD(SetActivatingAltHost, { L"host" })
				CLASS_MEMBER_METHOD(GetChild, {L"index"})
				CLASS_MEMBER_METHOD(AddChild, {L"control"})
				CLASS_MEMBER_METHOD(HasChild, {L"control"})
				CLASS_MEMBER_METHOD(SetFocused, NO_PARAMETER)
				CLASS_MEMBER_METHOD(DisplayTooltip, {L"location"})
				CLASS_MEMBER_METHOD(CloseTooltip, NO_PARAMETER)
				CLASS_MEMBER_METHOD(QueryService, {L"identifier"})
				CLASS_MEMBER_METHOD(AddService, { L"identifier" _ L"value" })
			END_CLASS_MEMBER(GuiControl)

			BEGIN_CLASS_MEMBER(GuiCustomControl)
				CLASS_MEMBER_BASE(GuiControl)
				CLASS_MEMBER_BASE(GuiInstanceRootObject)
				CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE_INHERITANCE(GuiCustomControl)

				CLASS_MEMBER_METHOD(SetFocusableComposition, { L"value" })
				CLASS_MEMBER_PROPERTY(FocusableComposition, GetFocusableComposition, SetFocusableComposition)
			END_CLASS_MEMBER(GuiCustomControl)

			BEGIN_CLASS_MEMBER(GuiLabel)
				CLASS_MEMBER_BASE(GuiControl)
				CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE(GuiLabel)

				CLASS_MEMBER_PROPERTY_FAST(TextColor)
			END_CLASS_MEMBER(GuiLabel)

			BEGIN_CLASS_MEMBER(GuiButton)
				CLASS_MEMBER_BASE(GuiControl)
				CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE(GuiButton)

				CLASS_MEMBER_GUIEVENT(BeforeClicked)
				CLASS_MEMBER_GUIEVENT(Clicked)
				CLASS_MEMBER_GUIEVENT(AfterClicked)

				CLASS_MEMBER_PROPERTY_FAST(ClickOnMouseUp)
				CLASS_MEMBER_PROPERTY_FAST(AutoFocus)
				CLASS_MEMBER_PROPERTY_FAST(IgnoreChildControlMouseEvents)
			END_CLASS_MEMBER(GuiButton)

			BEGIN_CLASS_MEMBER(GuiSelectableButton)
				CLASS_MEMBER_BASE(GuiButton)
				CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE(GuiSelectableButton)

				CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(GroupController)
				CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(AutoSelection)
				CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(Selected)
			END_CLASS_MEMBER(GuiSelectableButton)

			BEGIN_CLASS_MEMBER(GuiScroll)
				CLASS_MEMBER_BASE(GuiControl)
				CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE(GuiScroll)

				CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(TotalSize)
				CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(PageSize)
				CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(Position)
				CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(SmallMove)
				CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(BigMove)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(MinPosition)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(MaxPosition)
				CLASS_MEMBER_PROPERTY_FAST(AutoFocus)
			END_CLASS_MEMBER(GuiScroll)

			BEGIN_CLASS_MEMBER(GuiTabPage)
				CLASS_MEMBER_BASE(GuiCustomControl)
				CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE_INHERITANCE(GuiTabPage)

				CLASS_MEMBER_PROPERTY_READONLY_FAST(OwnerTab)
			END_CLASS_MEMBER(GuiTabPage)

			BEGIN_CLASS_MEMBER(GuiTab)
				CLASS_MEMBER_BASE(GuiControl)
				CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE(GuiTab)

				CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(SelectedPage)

				CLASS_MEMBER_PROPERTY_READONLY_FAST(Pages)
			END_CLASS_MEMBER(GuiTab)

			BEGIN_CLASS_MEMBER(GuiScrollView)
				CLASS_MEMBER_BASE(GuiControl)

				CLASS_MEMBER_PROPERTY_READONLY_FAST(ViewSize)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(ViewBounds)
				CLASS_MEMBER_PROPERTY_FAST(ViewPosition)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(HorizontalScroll)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(VerticalScroll)
				CLASS_MEMBER_PROPERTY_FAST(HorizontalAlwaysVisible)
				CLASS_MEMBER_PROPERTY_FAST(VerticalAlwaysVisible)

				CLASS_MEMBER_METHOD(CalculateView, NO_PARAMETER)
			END_CLASS_MEMBER(GuiScrollView)

			BEGIN_CLASS_MEMBER(GuiScrollContainer)
				CLASS_MEMBER_BASE(GuiScrollView)
				CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE(GuiScrollContainer)

				CLASS_MEMBER_PROPERTY_FAST(ExtendToFullWidth)
				CLASS_MEMBER_PROPERTY_FAST(ExtendToFullHeight)
			END_CLASS_MEMBER(GuiScrollContainer)

			BEGIN_CLASS_MEMBER(GuiControlHost)
				CLASS_MEMBER_BASE(GuiControl)
				CLASS_MEMBER_BASE(GuiInstanceRootObject)
				CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE_INHERITANCE_2(GuiControlHost, INativeWindow::WindowMode, mode)

				CLASS_MEMBER_GUIEVENT(WindowGotFocus)
				CLASS_MEMBER_GUIEVENT(WindowLostFocus)
				CLASS_MEMBER_GUIEVENT(WindowActivated)
				CLASS_MEMBER_GUIEVENT(WindowDeactivated)
				CLASS_MEMBER_GUIEVENT(WindowOpened)
				CLASS_MEMBER_GUIEVENT(WindowClosing)
				CLASS_MEMBER_GUIEVENT(WindowReadyToClose)
				CLASS_MEMBER_GUIEVENT(WindowClosed)
				CLASS_MEMBER_GUIEVENT(WindowDestroying)

				CLASS_MEMBER_PROPERTY_READONLY_FAST(MainComposition)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(RenderingAsActivated)
				CLASS_MEMBER_PROPERTY_FAST(ShowInTaskBar)
				CLASS_MEMBER_PROPERTY_FAST(EnabledActivate)
				CLASS_MEMBER_PROPERTY_FAST(TopMost)
				CLASS_MEMBER_PROPERTY_FAST(ClientSize)
				CLASS_MEMBER_PROPERTY_FAST(Location)
				CLASS_MEMBER_PROPERTY_FAST(ShortcutKeyManager)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(RelatedScreen)

				CLASS_MEMBER_METHOD(DeleteAfterProcessingAllEvents, {L"callback"})
				CLASS_MEMBER_METHOD(ForceCalculateSizeImmediately, NO_PARAMETER)
				CLASS_MEMBER_METHOD(SetBounds, {L"location" _ L"size"})
				CLASS_MEMBER_METHOD(Show, NO_PARAMETER)
				CLASS_MEMBER_METHOD(ShowDeactivated, NO_PARAMETER)
				CLASS_MEMBER_METHOD(ShowRestored, NO_PARAMETER)
				CLASS_MEMBER_METHOD(ShowMaximized, NO_PARAMETER)
				CLASS_MEMBER_METHOD(ShowMinimized, NO_PARAMETER)
				CLASS_MEMBER_METHOD(Hide, NO_PARAMETER)
				CLASS_MEMBER_METHOD(Close, NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetOpening, NO_PARAMETER)

				CLASS_MEMBER_METHOD(NotifyUpdateDisplayFont, NO_PARAMETER)
			END_CLASS_MEMBER(GuiControlHost)

			BEGIN_CLASS_MEMBER(GuiWindow)
				CLASS_MEMBER_BASE(GuiControlHost)
				CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE(GuiWindow)

				CLASS_MEMBER_GUIEVENT(ClipboardUpdated)
				CLASS_MEMBER_GUIEVENT(FrameConfigChanged)

				CLASS_MEMBER_PROPERTY_EVENT_READONLY_FAST(FrameConfig, FrameConfigChanged)
				CLASS_MEMBER_PROPERTY_FAST(MaximizedBox)
				CLASS_MEMBER_PROPERTY_FAST(MinimizedBox)
				CLASS_MEMBER_PROPERTY_FAST(Border)
				CLASS_MEMBER_PROPERTY_FAST(SizeBox)
				CLASS_MEMBER_PROPERTY_FAST(IconVisible)
				CLASS_MEMBER_PROPERTY_FAST(TitleBar)
				CLASS_MEMBER_PROPERTY_FAST(Icon)

				CLASS_MEMBER_METHOD_OVERLOAD(MoveToScreenCenter, NO_PARAMETER, void(GuiWindow::*)())
				CLASS_MEMBER_METHOD_OVERLOAD(MoveToScreenCenter, { L"screen" }, void(GuiWindow::*)(INativeScreen*))
				CLASS_MEMBER_METHOD(ShowWithOwner, { L"owner" })
				CLASS_MEMBER_METHOD(ShowModal, { L"owner" _ L"callback" })
				CLASS_MEMBER_METHOD_OVERLOAD(ShowModalAndDelete, { L"owner" _ L"callback" }, void(GuiWindow::*)(GuiWindow*, const Func<void()>&))
				CLASS_MEMBER_METHOD_OVERLOAD(ShowModalAndDelete, { L"owner" _ L"callbackClosed" _ L"callbackDeleted"}, void(GuiWindow::*)(GuiWindow*, const Func<void()>&, const Func<void()>&))
				CLASS_MEMBER_METHOD(ShowModalAsync, { L"owner" })
			END_CLASS_MEMBER(GuiWindow)

			BEGIN_CLASS_MEMBER(GuiPopup)
				CLASS_MEMBER_BASE(GuiWindow)
				CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE(GuiPopup)

				CLASS_MEMBER_METHOD_OVERLOAD(ShowPopup, {L"location" _ L"screen"}, void(GuiPopup::*)(NativePoint _ INativeScreen*))
				CLASS_MEMBER_METHOD_OVERLOAD(ShowPopup, {L"control" _ L"bounds" _ L"preferredTopBottomSide"}, void(GuiPopup::*)(GuiControl* _ Rect _ bool))
				CLASS_MEMBER_METHOD_OVERLOAD(ShowPopup, {L"control" _ L"location"}, void(GuiPopup::*)(GuiControl* _ Point))
				CLASS_MEMBER_METHOD_OVERLOAD(ShowPopup, {L"control" _ L"preferredTopBottomSide"}, void(GuiPopup::*)(GuiControl* _ bool))
			END_CLASS_MEMBER(GuiPopup)

			BEGIN_CLASS_MEMBER(GuiTooltip)
				CLASS_MEMBER_BASE(GuiPopup)
				CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE(GuiTooltip)
				
				CLASS_MEMBER_PROPERTY_FAST(PreferredContentWidth)
				CLASS_MEMBER_PROPERTY_FAST(TemporaryContentControl)
			END_CLASS_MEMBER(GuiTooltip)

			BEGIN_CLASS_MEMBER(GuiListControl)
				CLASS_MEMBER_BASE(GuiScrollView)
				CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE_3(GuiListControl, list::IItemProvider*, itemProvider, bool, acceptFocus)

				CLASS_MEMBER_GUIEVENT(AdoptedSizeInvalidated)
				CLASS_MEMBER_GUIEVENT(ItemLeftButtonDown)
				CLASS_MEMBER_GUIEVENT(ItemLeftButtonUp)
				CLASS_MEMBER_GUIEVENT(ItemLeftButtonDoubleClick)
				CLASS_MEMBER_GUIEVENT(ItemMiddleButtonDown)
				CLASS_MEMBER_GUIEVENT(ItemMiddleButtonUp)
				CLASS_MEMBER_GUIEVENT(ItemMiddleButtonDoubleClick)
				CLASS_MEMBER_GUIEVENT(ItemRightButtonDown)
				CLASS_MEMBER_GUIEVENT(ItemRightButtonUp)
				CLASS_MEMBER_GUIEVENT(ItemRightButtonDoubleClick)
				CLASS_MEMBER_GUIEVENT(ItemMouseMove)
				CLASS_MEMBER_GUIEVENT(ItemMouseEnter)
				CLASS_MEMBER_GUIEVENT(ItemMouseLeave)

				CLASS_MEMBER_PROPERTY_READONLY_FAST(ItemProvider)
				CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(ItemTemplate)
				CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(Arranger)
				CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(Axis)
				CLASS_MEMBER_PROPERTY_FAST(DisplayItemBackground)

				CLASS_MEMBER_METHOD(EnsureItemVisible, {L"itemIndex"})
				CLASS_MEMBER_METHOD(GetAdoptedSize, {L"expectedSize"})
			END_CLASS_MEMBER(GuiListControl)

			BEGIN_CLASS_MEMBER(GuiSelectableListControl)
				CLASS_MEMBER_BASE(GuiListControl)
				CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE_INHERITANCE_2(GuiSelectableListControl, list::IItemProvider*, itemProvider)

				CLASS_MEMBER_GUIEVENT(SelectionChanged)

				CLASS_MEMBER_PROPERTY_FAST(MultiSelect)
				CLASS_MEMBER_PROPERTY_EVENT_READONLY_FAST(SelectedItems, SelectionChanged)
				CLASS_MEMBER_PROPERTY_EVENT_READONLY_FAST(SelectedItemIndex, SelectionChanged)
				CLASS_MEMBER_PROPERTY_EVENT_READONLY_FAST(SelectedItemText, SelectionChanged)

				CLASS_MEMBER_METHOD(GetSelected, {L"itemIndex"})
				CLASS_MEMBER_METHOD(SetSelected, {L"itemIndex" _ L"value"})
				CLASS_MEMBER_METHOD(SelectItemsByClick, {L"itemIndex" _ L"ctrl" _ L"shift" _ L"leftButton"})
				CLASS_MEMBER_METHOD(SelectItemsByKey, {L"code" _ L"ctrl" _ L"shift"})
				CLASS_MEMBER_METHOD(ClearSelection, NO_PARAMETER)
			END_CLASS_MEMBER(GuiSelectableListControl)

			BEGIN_CLASS_MEMBER(GuiVirtualTextList)
				CLASS_MEMBER_BASE(GuiSelectableListControl)
				CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE_2(GuiVirtualTextList, list::IItemProvider*, L"itemProvider")

				CLASS_MEMBER_GUIEVENT(ItemChecked)
				CLASS_MEMBER_PROPERTY_FAST(View)
			END_CLASS_MEMBER(GuiVirtualTextList)

			BEGIN_CLASS_MEMBER(GuiTextList)
				CLASS_MEMBER_BASE(GuiVirtualTextList)
				CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE_INHERITANCE(GuiTextList)

				CLASS_MEMBER_PROPERTY_READONLY_FAST(Items)
				CLASS_MEMBER_PROPERTY_EVENT_READONLY_FAST(SelectedItem, SelectionChanged)
			END_CLASS_MEMBER(GuiTextList)

			BEGIN_CLASS_MEMBER(GuiListViewColumnHeader)
				CLASS_MEMBER_BASE(GuiMenuButton)
				CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE(GuiListViewColumnHeader)

				CLASS_MEMBER_PROPERTY_FAST(ColumnSortingState)
			END_CLASS_MEMBER(GuiListViewColumnHeader)

			BEGIN_CLASS_MEMBER(GuiListViewBase)
				CLASS_MEMBER_BASE(GuiSelectableListControl)
				CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE_2(GuiListViewBase, list::IItemProvider*, itemProvider)

				CLASS_MEMBER_GUIEVENT(ColumnClicked)
			END_CLASS_MEMBER(GuiListViewBase)

			BEGIN_CLASS_MEMBER(GuiVirtualListView)
				CLASS_MEMBER_BASE(GuiListViewBase)
				CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE_INHERITANCE_2(GuiVirtualListView, list::IItemProvider*, itemProvider)

				CLASS_MEMBER_PROPERTY_FAST(View)
			END_CLASS_MEMBER(GuiVirtualListView)

			BEGIN_CLASS_MEMBER(GuiListView)
				CLASS_MEMBER_BASE(GuiVirtualListView)
				CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE(GuiListView)

				CLASS_MEMBER_PROPERTY_READONLY_FAST(DataColumns)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(Columns)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(Items)
				CLASS_MEMBER_PROPERTY_EVENT_READONLY_FAST(SelectedItem, SelectionChanged)
			END_CLASS_MEMBER(GuiListView)

			BEGIN_CLASS_MEMBER(GuiMenu)
				CLASS_MEMBER_BASE(GuiPopup)
				CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE_2(GuiMenu, GuiControl*, owner)

				CLASS_MEMBER_PROPERTY_FAST(HideOnDeactivateAltHost)
				CLASS_MEMBER_METHOD(UpdateMenuService, NO_PARAMETER)
			END_CLASS_MEMBER(GuiMenu)

			BEGIN_CLASS_MEMBER(GuiMenuBar)
				CLASS_MEMBER_BASE(GuiControl)
				CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE_INHERITANCE(GuiMenuBar)
			END_CLASS_MEMBER(GuiMenuBar)

			BEGIN_CLASS_MEMBER(GuiMenuButton)
				CLASS_MEMBER_BASE(GuiSelectableButton)
				CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE(GuiMenuButton)

				CLASS_MEMBER_GUIEVENT(BeforeSubMenuOpening)
				CLASS_MEMBER_GUIEVENT(AfterSubMenuOpening)
					
				CLASS_MEMBER_PROPERTY_READONLY_FAST(SubMenuHost)
				CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(LargeImage)
				CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(Image)
				CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(ShortcutText)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(SubMenu)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(OwnedSubMenu)
				CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(SubMenuOpening)
				CLASS_MEMBER_PROPERTY_FAST(PreferredMenuClientSize)
				CLASS_MEMBER_PROPERTY_FAST(CascadeAction)

				CLASS_MEMBER_METHOD(IsSubMenuExists, NO_PARAMETER)
				CLASS_MEMBER_METHOD(CreateSubMenu, {L"subMenuStyleController"})
				CLASS_MEMBER_METHOD(SetSubMenu, {L"value" _ L"owned"})
			END_CLASS_MEMBER(GuiMenuButton)

			BEGIN_CLASS_MEMBER(GuiVirtualTreeListControl)
				CLASS_MEMBER_BASE(GuiSelectableListControl)
				CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE_2(GuiVirtualTreeListControl, Ptr<INodeRootProvider>, rootNodeProvider)

				CLASS_MEMBER_GUIEVENT(NodeLeftButtonDown)
				CLASS_MEMBER_GUIEVENT(NodeLeftButtonUp)
				CLASS_MEMBER_GUIEVENT(NodeLeftButtonDoubleClick)
				CLASS_MEMBER_GUIEVENT(NodeMiddleButtonDown)
				CLASS_MEMBER_GUIEVENT(NodeMiddleButtonUp)
				CLASS_MEMBER_GUIEVENT(NodeMiddleButtonDoubleClick)
				CLASS_MEMBER_GUIEVENT(NodeRightButtonDown)
				CLASS_MEMBER_GUIEVENT(NodeRightButtonUp)
				CLASS_MEMBER_GUIEVENT(NodeRightButtonDoubleClick)
				CLASS_MEMBER_GUIEVENT(NodeMouseMove)
				CLASS_MEMBER_GUIEVENT(NodeMouseEnter)
				CLASS_MEMBER_GUIEVENT(NodeMouseLeave)
				CLASS_MEMBER_GUIEVENT(NodeExpanded)
				CLASS_MEMBER_GUIEVENT(NodeCollapsed)

				CLASS_MEMBER_PROPERTY_READONLY_FAST(NodeItemView)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(NodeRootProvider)
			END_CLASS_MEMBER(GuiVirtualTreeListControl)

			BEGIN_CLASS_MEMBER(GuiVirtualTreeView)
				CLASS_MEMBER_BASE(GuiVirtualTreeListControl)
				CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE_INHERITANCE_2(GuiVirtualTreeView, Ptr<INodeRootProvider>, rootNodeProvider)

			END_CLASS_MEMBER(GuiVirtualTreeView)

			BEGIN_CLASS_MEMBER(GuiTreeView)
				CLASS_MEMBER_BASE(GuiVirtualTreeView)
				CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE_INHERITANCE(GuiTreeView)

				CLASS_MEMBER_METHOD_RENAME(GetNodes, Nodes, NO_PARAMETER)
				CLASS_MEMBER_PROPERTY_READONLY(Nodes, GetNodes)
				CLASS_MEMBER_PROPERTY_EVENT_READONLY_FAST(SelectedItem, SelectionChanged)
			END_CLASS_MEMBER(GuiTreeView)

			BEGIN_CLASS_MEMBER(GuiComboBoxBase)
				CLASS_MEMBER_BASE(GuiMenuButton)
				CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE_2(GuiComboBoxBase, bool, _autoFocusDropdown)
			END_CLASS_MEMBER(GuiComboBoxBase)

			BEGIN_CLASS_MEMBER(GuiComboButton)
				CLASS_MEMBER_BASE(GuiComboBoxBase)
				CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE_INHERITANCE_2(GuiComboButton, GuiControl*, dropdownControl)
			END_CLASS_MEMBER(GuiComboButton)

			BEGIN_CLASS_MEMBER(GuiComboBoxListControl)
				CLASS_MEMBER_BASE(GuiComboBoxBase)
				CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE_INHERITANCE_2(GuiComboBoxListControl, GuiSelectableListControl*, containedListControl)

				CLASS_MEMBER_PROPERTY_READONLY_FAST(ContainedListControl)
				CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(ItemTemplate)
				CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(SelectedIndex)
				CLASS_MEMBER_PROPERTY_EVENT_READONLY_FAST(SelectedItem, SelectedIndexChanged)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(ItemProvider)
			END_CLASS_MEMBER(GuiComboBoxListControl)

			BEGIN_CLASS_MEMBER(GuiToolstripMenu)
				CLASS_MEMBER_BASE(GuiMenu)
				CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE_INHERITANCE_2(GuiToolstripMenu, GuiControl*, owner)

				CLASS_MEMBER_PROPERTY_READONLY_FAST(ToolstripItems)
			END_CLASS_MEMBER(GuiToolstripMenu)

			BEGIN_CLASS_MEMBER(GuiToolstripMenuBar)
				CLASS_MEMBER_BASE(GuiMenuBar)
				CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE_INHERITANCE(GuiToolstripMenuBar)
				
				CLASS_MEMBER_PROPERTY_READONLY_FAST(ToolstripItems)
			END_CLASS_MEMBER(GuiToolstripMenuBar)

			BEGIN_CLASS_MEMBER(GuiToolstripToolBar)
				CLASS_MEMBER_BASE(GuiControl)
				CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE_INHERITANCE(GuiToolstripToolBar)
				
				CLASS_MEMBER_PROPERTY_READONLY_FAST(ToolstripItems)
			END_CLASS_MEMBER(GuiToolstripToolBar)

			BEGIN_CLASS_MEMBER(GuiToolstripButton)
				CLASS_MEMBER_BASE(GuiMenuButton)
				CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE_INHERITANCE(GuiToolstripButton)

				CLASS_MEMBER_PROPERTY_FAST(Command)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(ToolstripSubMenu)

				CLASS_MEMBER_METHOD(EnsureToolstripSubMenu, NO_PARAMETER)
				CLASS_MEMBER_METHOD(CreateToolstripSubMenu, {L"subMenuStyleController"})
			END_CLASS_MEMBER(GuiToolstripButton)

			BEGIN_CLASS_MEMBER(GuiToolstripNestedContainer)
				CLASS_MEMBER_BASE(GuiControl)
			END_CLASS_MEMBER(GuiToolstripGroupContainer)

			BEGIN_CLASS_MEMBER(GuiToolstripGroupContainer)
				CLASS_MEMBER_BASE(GuiToolstripNestedContainer)
				CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE_INHERITANCE(GuiToolstripGroupContainer)

				CLASS_MEMBER_PROPERTY_FAST(SplitterTemplate)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(ToolstripItems)
			END_CLASS_MEMBER(GuiToolstripGroupContainer)

			BEGIN_CLASS_MEMBER(GuiToolstripGroup)
				CLASS_MEMBER_BASE(GuiToolstripNestedContainer)
				CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE_INHERITANCE(GuiToolstripGroup)

				CLASS_MEMBER_PROPERTY_READONLY_FAST(ToolstripItems)
			END_CLASS_MEMBER(GuiToolstripGroup)

			BEGIN_CLASS_MEMBER(GuiRibbonTab)
				CLASS_MEMBER_BASE(GuiTab)
				CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE(GuiRibbonTab)

				CLASS_MEMBER_PROPERTY_READONLY_FAST(BeforeHeaders)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(AfterHeaders)
			END_CLASS_MEMBER(GuiRibbonTab)

			BEGIN_CLASS_MEMBER(GuiRibbonTabPage)
				CLASS_MEMBER_BASE(GuiTabPage)
				CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE_INHERITANCE(GuiRibbonTabPage)

				CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(Highlighted)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(Groups)
			END_CLASS_MEMBER(GuiRibbonTabPage)

			BEGIN_CLASS_MEMBER(GuiRibbonGroup)
				CLASS_MEMBER_BASE(GuiControl)
				CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE(GuiRibbonGroup)

				CLASS_MEMBER_GUIEVENT(ExpandButtonClicked)
				CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(Expandable)
				CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(LargeImage)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(Items)
			END_CLASS_MEMBER(GuiRibbonGroup)

			BEGIN_CLASS_MEMBER(GuiRibbonIconLabel)
				CLASS_MEMBER_BASE(GuiControl)
				CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE(GuiRibbonIconLabel)

				CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(Image)
			END_CLASS_MEMBER(GuiRibbonIconLabel)

			BEGIN_CLASS_MEMBER(GuiRibbonButtons)
				CLASS_MEMBER_BASE(GuiControl)
				CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE_3(GuiRibbonButtons, RibbonButtonSize, maxSize, RibbonButtonSize, minSize)

				CLASS_MEMBER_PROPERTY_READONLY_FAST(Buttons)
			END_CLASS_MEMBER(GuiRibbonButtons)

			BEGIN_CLASS_MEMBER(GuiRibbonToolstrips)
				CLASS_MEMBER_BASE(GuiControl)
				CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE(GuiRibbonToolstrips)

				CLASS_MEMBER_PROPERTY_READONLY_FAST(Groups)
			END_CLASS_MEMBER(GuiRibbonToolstrips)

			BEGIN_CLASS_MEMBER(GuiRibbonGallery)
				CLASS_MEMBER_BASE(GuiControl)
				CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE(GuiRibbonGallery)

				CLASS_MEMBER_GUIEVENT(RequestedScrollUp)
				CLASS_MEMBER_GUIEVENT(RequestedScrollDown)
				CLASS_MEMBER_GUIEVENT(RequestedDropdown)

				CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(ScrollUpEnabled)
				CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(ScrollDownEnabled)
			END_CLASS_MEMBER(GuiRibbonGallery)

			BEGIN_CLASS_MEMBER(GuiRibbonToolstripMenu)
				CLASS_MEMBER_BASE(GuiToolstripMenu)
				CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE_INHERITANCE_2(GuiRibbonToolstripMenu, GuiControl*, owner)

				CLASS_MEMBER_PROPERTY_READONLY_FAST(ContentComposition)
			END_CLASS_MEMBER(GuiRibbonToolstripMenu)

			BEGIN_CLASS_MEMBER(GuiBindableRibbonGalleryList)
				CLASS_MEMBER_BASE(GuiRibbonGallery)
				CLASS_MEMBER_BASE(GroupedDataSource)
				CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE(GuiBindableRibbonGalleryList)
					
				CLASS_MEMBER_GUIEVENT(SelectionChanged)
				CLASS_MEMBER_GUIEVENT(PreviewStarted)
				CLASS_MEMBER_GUIEVENT(PreviewStopped)
				CLASS_MEMBER_GUIEVENT(ItemApplied)

				CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(ItemTemplate)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(SubMenu)
				CLASS_MEMBER_PROPERTY_FAST(MinCount)
				CLASS_MEMBER_PROPERTY_FAST(MaxCount)
				CLASS_MEMBER_PROPERTY_EVENT_READONLY_FAST(SelectedIndex, SelectionChanged)
				CLASS_MEMBER_PROPERTY_EVENT_READONLY_FAST(SelectedItem, SelectionChanged)
				CLASS_MEMBER_PROPERTY_FAST(VisibleItemCount)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(ListControlInDropdown)

				CLASS_MEMBER_METHOD(IndexToGalleryPos, { L"index" })
				CLASS_MEMBER_METHOD(GalleryPosToIndex, { L"pos" })
				CLASS_MEMBER_METHOD(ApplyItem, { L"index" })
				CLASS_MEMBER_METHOD(SelectItem, { L"index" })
			END_CLASS_MEMBER(GuiBindableRibbonGalleryList)

			BEGIN_CLASS_MEMBER(GuiDocumentCommonInterface)
				CLASS_MEMBER_PROPERTY_FAST(Document)
				CLASS_MEMBER_PROPERTY_FAST(EditMode)

				CLASS_MEMBER_GUIEVENT(ActiveHyperlinkChanged)
				CLASS_MEMBER_GUIEVENT(ActiveHyperlinkExecuted)
				CLASS_MEMBER_GUIEVENT(SelectionChanged)
				CLASS_MEMBER_GUIEVENT(UndoRedoChanged)

				CLASS_MEMBER_METHOD(AddDocumentItem, { L"value" })
				CLASS_MEMBER_METHOD(RemoveDocumentItem, { L"value" })
				CLASS_MEMBER_PROPERTY_READONLY_FAST(DocumentItems)

				CLASS_MEMBER_PROPERTY_READONLY_FAST(CaretBegin)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(CaretEnd)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(ActiveHyperlinkReference)
				CLASS_MEMBER_PROPERTY_EVENT_FAST(SelectionText, SelectionChanged)
				CLASS_MEMBER_PROPERTY_EVENT_FAST(SelectionModel, SelectionChanged)
				CLASS_MEMBER_PROPERTY_GUIEVENT_READONLY_FAST(Modified)

				CLASS_MEMBER_METHOD(SetCaret, {L"begin" _ L"end" _ L"frontSide"})
				CLASS_MEMBER_METHOD(EnsureCaretVisible, NO_PARAMETER)
				CLASS_MEMBER_METHOD(CalculateCaretFromPoint, {L"point"})
				CLASS_MEMBER_METHOD(GetCaretBounds, {L"caret" _ L"frontSide"})
				CLASS_MEMBER_METHOD(NotifyParagraphUpdated, {L"index" _ L"oldCount" _ L"newCount" _ L"updatedText" _ L"skipFormatting"})
				CLASS_MEMBER_METHOD(EditRun, {L"begin" _ L"end" _ L"model" _ L"copy" _ L"skipFormatting" })
				CLASS_MEMBER_METHOD(EditText, {L"begin" _ L"end" _ L"frontSide" _ L"text" _ L"skipFormatting" })
				CLASS_MEMBER_METHOD(EditStyle, {L"begin" _ L"end" _ L"style"})
				CLASS_MEMBER_METHOD(EditImage, {L"begin" _ L"end" _ L"image"})
				CLASS_MEMBER_METHOD(EditHyperlink, {L"paragraphIndex" _ L"begin" _ L"end" _ L"reference" _ L"normalStyleName" _ L"activeStyleName"})
				CLASS_MEMBER_METHOD(RemoveHyperlink, {L"paragraphIndex" _ L"begin" _ L"end"})
				CLASS_MEMBER_METHOD(EditStyleName, {L"begin" _ L"end" _ L"styleName"})
				CLASS_MEMBER_METHOD(RemoveStyleName, {L"begin" _ L"end" _ L"image"})
				CLASS_MEMBER_METHOD(RenameStyle, {L"oldStyleName" _ L"newStyleName"})
				CLASS_MEMBER_METHOD(ClearStyle, {L"begin" _ L"end"})
				CLASS_MEMBER_METHOD(ConvertToPlainText, { L"begin" _ L"end" })
				CLASS_MEMBER_METHOD(SummarizeStyle, {L"begin" _ L"end"})
				CLASS_MEMBER_METHOD(SummarizeStyleName, { L"begin" _ L"end" })
				CLASS_MEMBER_METHOD(SetParagraphAlignments, { L"begin" _ L"end" _ L"alignments" })
				CLASS_MEMBER_METHOD(SetParagraphAlignment, { L"begin" _ L"end" _ L"alignment" })
				CLASS_MEMBER_METHOD(SummarizeParagraphAlignment, { L"begin" _ L"end" })
				CLASS_MEMBER_METHOD(LoadTextAndClearUndoRedo, { L"text" })
				CLASS_MEMBER_METHOD(LoadDocumentAndClearUndoRedo, { L"document" _ L"copy"})
				CLASS_MEMBER_METHOD(SelectAll, NO_PARAMETER)
				CLASS_MEMBER_METHOD(CanCut, NO_PARAMETER)
				CLASS_MEMBER_METHOD(CanCopy, NO_PARAMETER)
				CLASS_MEMBER_METHOD(CanPaste, NO_PARAMETER)
				CLASS_MEMBER_METHOD(Cut, NO_PARAMETER)
				CLASS_MEMBER_METHOD(Copy, NO_PARAMETER)
				CLASS_MEMBER_METHOD(Paste, NO_PARAMETER)
				CLASS_MEMBER_METHOD(CanUndo, NO_PARAMETER)
				CLASS_MEMBER_METHOD(CanRedo, NO_PARAMETER)
				CLASS_MEMBER_METHOD(ClearUndoRedo, NO_PARAMETER)
				CLASS_MEMBER_METHOD(NotifyModificationSaved, NO_PARAMETER)
				CLASS_MEMBER_METHOD(Undo, NO_PARAMETER)
				CLASS_MEMBER_METHOD(Redo, NO_PARAMETER)
			END_CLASS_MEMBER(GuiDocumentCommonInterface)

			BEGIN_CLASS_MEMBER(GuiDocumentViewer)
				CLASS_MEMBER_BASE(GuiScrollContainer)
				CLASS_MEMBER_BASE(GuiDocumentCommonInterface)
				CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE(GuiDocumentViewer)
				CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE_2(GuiDocumentViewer, const GuiDocumentConfig&, config)
			END_CLASS_MEMBER(GuiDocumentViewer)

			BEGIN_CLASS_MEMBER(GuiDocumentLabel)
				CLASS_MEMBER_BASE(GuiControl)
				CLASS_MEMBER_BASE(GuiDocumentCommonInterface)
				CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE(GuiDocumentLabel)
				CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE_2(GuiDocumentLabel, const GuiDocumentConfig&, config)
			END_CLASS_MEMBER(GuiDocumentLabel)

			BEGIN_CLASS_MEMBER(GuiMultilineTextBox)
				CLASS_MEMBER_BASE(GuiDocumentViewer)
				CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE(GuiMultilineTextBox)
				CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE_2(GuiMultilineTextBox, const GuiDocumentConfig&, config)
			END_CLASS_MEMBER(GuiMultilineTextBox)

			BEGIN_CLASS_MEMBER(GuiSinglelineTextBox)
				CLASS_MEMBER_BASE(GuiDocumentLabel)
				CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE(GuiSinglelineTextBox)
				CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE_2(GuiSinglelineTextBox, const GuiDocumentConfig&, config)

				CLASS_MEMBER_PROPERTY_FAST(PasswordChar)
			END_CLASS_MEMBER(GuiSinglelineTextBox)

			BEGIN_CLASS_MEMBER(GuiVirtualDataGrid)
				CLASS_MEMBER_BASE(GuiVirtualListView)
				CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE_INHERITANCE_2(GuiVirtualDataGrid, list::IItemProvider*, itemProvider)

				CLASS_MEMBER_PROPERTY_READONLY_FAST(ItemProvider)
				CLASS_MEMBER_PROPERTY_GUIEVENT_READONLY_FAST(SelectedCell)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(OpenedEditor)

				CLASS_MEMBER_METHOD(SetViewToDefault, NO_PARAMETER)
				CLASS_MEMBER_METHOD(SelectCell, { L"value" _ L"openEditor" })
			END_CLASS_MEMBER(GuiVirtualDataGrid)

			BEGIN_CLASS_MEMBER(GuiDatePicker)
				CLASS_MEMBER_BASE(GuiControl)
				CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE(GuiDatePicker)

				CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(Date)
				CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(DateFormat)
				CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(DateLocale)

				CLASS_MEMBER_GUIEVENT(DateSelected);
				CLASS_MEMBER_GUIEVENT(DateNavigated);
			END_CLASS_MEMBER(GuiDatePicker)

			BEGIN_CLASS_MEMBER(GuiDateComboBox)
				CLASS_MEMBER_BASE(GuiComboBoxBase)
				CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE_INHERITANCE(GuiDateComboBox)

				CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(SelectedDate)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(DatePicker)
			END_CLASS_MEMBER(GuiDateComboBox)

			BEGIN_CLASS_MEMBER(GuiBindableTextList)
				CLASS_MEMBER_BASE(GuiVirtualTextList)
				CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE_INHERITANCE(GuiBindableTextList)

				CLASS_MEMBER_PROPERTY_FAST(ItemSource)
				CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(TextProperty)
				CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(CheckedProperty)
				CLASS_MEMBER_PROPERTY_EVENT_READONLY_FAST(SelectedItem, SelectionChanged)
				CLASS_MEMBER_METHOD(NotifyItemDataModified, {L"start" _ L"count"})
			END_CLASS_MEMBER(GuiBindableTextList)

			BEGIN_CLASS_MEMBER(GuiBindableListView)
				CLASS_MEMBER_BASE(GuiVirtualListView)
				CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE_INHERITANCE(GuiBindableListView)

				CLASS_MEMBER_PROPERTY_READONLY_FAST(DataColumns)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(Columns)
				CLASS_MEMBER_PROPERTY_FAST(ItemSource)
				CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(LargeImageProperty)
				CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(SmallImageProperty)
				CLASS_MEMBER_PROPERTY_EVENT_READONLY_FAST(SelectedItem, SelectionChanged)
				CLASS_MEMBER_METHOD(NotifyItemDataModified, { L"start" _ L"count" })
			END_CLASS_MEMBER(GuiBindableListView)

			BEGIN_CLASS_MEMBER(GuiBindableTreeView)
				CLASS_MEMBER_BASE(GuiVirtualTreeView)
				CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE_INHERITANCE(GuiBindableTreeView)
				CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE_INHERITANCE_2(GuiBindableTreeView, WritableItemProperty<description::Value>, reverseMappingProperty)
				
				CLASS_MEMBER_PROPERTY_FAST(ItemSource)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(ReverseMappingProperty)
				CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(TextProperty)
				CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(ImageProperty)
				CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(ChildrenProperty)
				CLASS_MEMBER_PROPERTY_EVENT_READONLY_FAST(SelectedItem, SelectionChanged)
				CLASS_MEMBER_METHOD(NotifyNodeDataModified, {L"value"})
			END_CLASS_MEMBER(GuiBindableTreeView)

			BEGIN_CLASS_MEMBER(GuiBindableDataGrid)
				CLASS_MEMBER_BASE(GuiVirtualDataGrid)
				CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE_INHERITANCE(GuiBindableDataGrid)

				CLASS_MEMBER_PROPERTY_READONLY_FAST(DataColumns)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(Columns)
				CLASS_MEMBER_PROPERTY_FAST(ItemSource)
				CLASS_MEMBER_PROPERTY_FAST(AdditionalFilter)
				CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(LargeImageProperty)
				CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(SmallImageProperty)
				CLASS_MEMBER_PROPERTY_EVENT_READONLY_FAST(SelectedRowValue, SelectedCellChanged)
				CLASS_MEMBER_PROPERTY_EVENT_READONLY_FAST(SelectedCellValue, SelectedCellChanged)
				CLASS_MEMBER_METHOD(NotifyItemDataModified, { L"start" _ L"count" })
			END_CLASS_MEMBER(GuiBindableDataGrid)

#undef INTERFACE_IDENTIFIER
#undef CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE_3
#undef CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE_INHERITANCE_3
#undef CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE_2
#undef CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE_INHERITANCE_2
#undef CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE
#undef CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE_INHERITANCE
#undef _

/***********************************************************************
Type Loader
***********************************************************************/

			class GuiControlsTypeLoader : public Object, public ITypeLoader
			{
			public:
				void Load(ITypeManager* manager)
				{
					GUIREFLECTIONCONTROLS_TYPELIST(ADD_TYPE_INFO)
				}

				void Unload(ITypeManager* manager)
				{
				}
			};

#endif

			bool LoadGuiControlTypes()
			{
#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA
				ITypeManager* manager=GetGlobalTypeManager();
				if(manager)
				{
					auto loader=Ptr(new GuiControlsTypeLoader);
					return manager->AddTypeLoader(loader);
				}
#endif
				return false;
			}
		}
	}
}


/***********************************************************************
.\REFLECTION\TYPEDESCRIPTORS\GUIREFLECTIONELEMENTS.CPP
***********************************************************************/

namespace vl
{
	namespace reflection
	{
		namespace description
		{
			using namespace presentation;
			using namespace presentation::elements;

#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA

#define _ ,

#define ELEMENT_CONSTRUCTOR(ELEMENT)\
			CLASS_MEMBER_EXTERNALCTOR(Ptr<ELEMENT>(), NO_PARAMETER, vl::reflection::description::Element_Constructor<::vl::presentation::elements::ELEMENT>)

/***********************************************************************
Type Declaration (Extra)
***********************************************************************/

			BEGIN_INTERFACE_MEMBER_NOPROXY(IGuiGraphicsElement)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(OwnerComposition)
				CLASS_MEMBER_STATIC_EXTERNALMETHOD(CreateRawElement, NO_PARAMETER, Ptr<IGuiGraphicsElement>(*)(), vl::reflection::description::GuiRawElement_Constructor)
			END_INTERFACE_MEMBER(IGuiGraphicsElement)

			BEGIN_CLASS_MEMBER(IGuiGraphicsParagraph)
				CLASS_MEMBER_BASE(IDescriptable)
			END_CLASS_MEMBER(IGuiGraphicsParagraph)

			BEGIN_ENUM_ITEM(IGuiGraphicsParagraph::CaretRelativePosition)
				ENUM_ITEM_NAMESPACE(IGuiGraphicsParagraph)
				ENUM_NAMESPACE_ITEM(CaretFirst)
				ENUM_NAMESPACE_ITEM(CaretLast)
				ENUM_NAMESPACE_ITEM(CaretLineFirst)
				ENUM_NAMESPACE_ITEM(CaretLineLast)
				ENUM_NAMESPACE_ITEM(CaretMoveLeft)
				ENUM_NAMESPACE_ITEM(CaretMoveRight)
				ENUM_NAMESPACE_ITEM(CaretMoveUp)
				ENUM_NAMESPACE_ITEM(CaretMoveDown)
			END_ENUM_ITEM(IGuiGraphicsParagraph::CaretRelativePosition)

			BEGIN_ENUM_ITEM(ElementShapeType)
				ENUM_CLASS_ITEM(Rectangle)
				ENUM_CLASS_ITEM(Ellipse)
				ENUM_CLASS_ITEM(RoundRect)
			END_ENUM_ITEM(ElementShapeType)

			BEGIN_STRUCT_MEMBER(ElementShape)
				STRUCT_MEMBER(shapeType)
				STRUCT_MEMBER(radiusX)
				STRUCT_MEMBER(radiusY)
			END_STRUCT_MEMBER(ElementShape)

			BEGIN_ENUM_ITEM(Gui3DSplitterElement::Direction)
				ENUM_ITEM_NAMESPACE(Gui3DSplitterElement)
				ENUM_NAMESPACE_ITEM(Horizontal)
				ENUM_NAMESPACE_ITEM(Vertical)
			END_ENUM_ITEM(Gui3DSplitterElement::Direction)

			BEGIN_ENUM_ITEM(GuiGradientBackgroundElement::Direction)
				ENUM_ITEM_NAMESPACE(GuiGradientBackgroundElement)
				ENUM_NAMESPACE_ITEM(Horizontal)
				ENUM_NAMESPACE_ITEM(Vertical)
				ENUM_NAMESPACE_ITEM(Slash)
				ENUM_NAMESPACE_ITEM(Backslash)
			END_ENUM_ITEM(GuiGradientBackgroundElement::Direction)

/***********************************************************************
Type Declaration (Class)
***********************************************************************/

			BEGIN_CLASS_MEMBER(GuiFocusRectangleElement)
				CLASS_MEMBER_BASE(IGuiGraphicsElement)
				ELEMENT_CONSTRUCTOR(GuiFocusRectangleElement)
			END_CLASS_MEMBER(GuiFocusRectangleElement)

			BEGIN_CLASS_MEMBER(GuiSolidBorderElement)
				CLASS_MEMBER_BASE(IGuiGraphicsElement)
				ELEMENT_CONSTRUCTOR(GuiSolidBorderElement)

				CLASS_MEMBER_PROPERTY_FAST(Color)
				CLASS_MEMBER_PROPERTY_FAST(Shape)
			END_CLASS_MEMBER(GuiSolidBorderElement)

			BEGIN_CLASS_MEMBER(Gui3DBorderElement)
				CLASS_MEMBER_BASE(IGuiGraphicsElement)
				ELEMENT_CONSTRUCTOR(Gui3DBorderElement)
				
				CLASS_MEMBER_METHOD(SetColors, {L"value1" _ L"value2"})

				CLASS_MEMBER_PROPERTY_FAST(Color1)
				CLASS_MEMBER_PROPERTY_FAST(Color2)
			END_CLASS_MEMBER(Gui3DBorderElement)

			BEGIN_CLASS_MEMBER(Gui3DSplitterElement)
				CLASS_MEMBER_BASE(IGuiGraphicsElement)
				ELEMENT_CONSTRUCTOR(Gui3DSplitterElement)
				
				CLASS_MEMBER_METHOD(SetColors, {L"value1" _ L"value2"})

				CLASS_MEMBER_PROPERTY_FAST(Color1)
				CLASS_MEMBER_PROPERTY_FAST(Color2)
				CLASS_MEMBER_PROPERTY_FAST(Direction)
			END_CLASS_MEMBER(Gui3DSplitterElement)

			BEGIN_CLASS_MEMBER(GuiSolidBackgroundElement)
				CLASS_MEMBER_BASE(IGuiGraphicsElement)
				ELEMENT_CONSTRUCTOR(GuiSolidBackgroundElement)
				
				CLASS_MEMBER_PROPERTY_FAST(Color)
				CLASS_MEMBER_PROPERTY_FAST(Shape)
			END_CLASS_MEMBER(GuiSolidBackgroundElement)

			BEGIN_CLASS_MEMBER(GuiGradientBackgroundElement)
				CLASS_MEMBER_BASE(IGuiGraphicsElement)
				ELEMENT_CONSTRUCTOR(GuiGradientBackgroundElement)
				
				CLASS_MEMBER_METHOD(SetColors, {L"value1" _ L"value2"})

				CLASS_MEMBER_PROPERTY_FAST(Color1)
				CLASS_MEMBER_PROPERTY_FAST(Color2)
				CLASS_MEMBER_PROPERTY_FAST(Direction)
				CLASS_MEMBER_PROPERTY_FAST(Shape)
			END_CLASS_MEMBER(GuiGradientBackgroundElement)

			BEGIN_CLASS_MEMBER(GuiInnerShadowElement)
				CLASS_MEMBER_BASE(IGuiGraphicsElement)
				ELEMENT_CONSTRUCTOR(GuiInnerShadowElement)

				CLASS_MEMBER_PROPERTY_FAST(Color)
				CLASS_MEMBER_PROPERTY_FAST(Thickness)
			END_CLASS_MEMBER(GuiInnerShadowElement)

			BEGIN_CLASS_MEMBER(GuiSolidLabelElement)
				CLASS_MEMBER_BASE(IGuiGraphicsElement)
				ELEMENT_CONSTRUCTOR(GuiSolidLabelElement)
				
				CLASS_MEMBER_METHOD(SetAlignments, {L"horizontal" _ L"vertical"})

				CLASS_MEMBER_PROPERTY_FAST(Color)
				CLASS_MEMBER_PROPERTY_FAST(Font)
				CLASS_MEMBER_PROPERTY_FAST(Text)
				CLASS_MEMBER_PROPERTY_FAST(HorizontalAlignment)
				CLASS_MEMBER_PROPERTY_FAST(VerticalAlignment)
				CLASS_MEMBER_PROPERTY_FAST(WrapLine)
				CLASS_MEMBER_PROPERTY_FAST(Ellipse)
				CLASS_MEMBER_PROPERTY_FAST(Multiline)
				CLASS_MEMBER_PROPERTY_FAST(WrapLineHeightCalculation)
			END_CLASS_MEMBER(GuiSolidLabelElement)

			BEGIN_CLASS_MEMBER(GuiImageFrameElement)
				CLASS_MEMBER_BASE(IGuiGraphicsElement)
				ELEMENT_CONSTRUCTOR(GuiImageFrameElement)

				CLASS_MEMBER_METHOD(GetImage, NO_PARAMETER)
				CLASS_MEMBER_METHOD_OVERLOAD(SetImage, {L"value"}, void(GuiImageFrameElement::*)(Ptr<INativeImage>))
				CLASS_MEMBER_METHOD_OVERLOAD(SetImage, {L"image" _  L"frameIndex"}, void(GuiImageFrameElement::*)(Ptr<INativeImage> _ vint))
				CLASS_MEMBER_PROPERTY(Image, GetImage, SetImage)

				CLASS_MEMBER_PROPERTY_FAST(FrameIndex)
				CLASS_MEMBER_PROPERTY_FAST(HorizontalAlignment)
				CLASS_MEMBER_PROPERTY_FAST(VerticalAlignment)
				CLASS_MEMBER_PROPERTY_FAST(Stretch)
				CLASS_MEMBER_PROPERTY_FAST(Enabled)
			END_CLASS_MEMBER(GuiImageFrameElement)

			BEGIN_CLASS_MEMBER(GuiPolygonElement)
				CLASS_MEMBER_BASE(IGuiGraphicsElement)
				ELEMENT_CONSTRUCTOR(GuiPolygonElement)

				CLASS_MEMBER_METHOD_RENAME(GetPoints, GetPointsArray, NO_PARAMETER);
				CLASS_MEMBER_METHOD_RENAME(SetPoints, SetPointsArray, {L"points"});
				CLASS_MEMBER_PROPERTY(Points, GetPoints, SetPoints);
				CLASS_MEMBER_PROPERTY_FAST(Size)
				CLASS_MEMBER_PROPERTY_FAST(BorderColor)
				CLASS_MEMBER_PROPERTY_FAST(BackgroundColor)
			END_CLASS_MEMBER(GuiPolygonElement)

			BEGIN_CLASS_MEMBER(GuiDocumentElement)
				CLASS_MEMBER_BASE(IGuiGraphicsElement)
				ELEMENT_CONSTRUCTOR(GuiDocumentElement)

				CLASS_MEMBER_PROPERTY_FAST(Document)
				CLASS_MEMBER_PROPERTY_FAST(ParagraphPadding)
				CLASS_MEMBER_PROPERTY_FAST(WrapLine)
				CLASS_MEMBER_PROPERTY_FAST(PasswordChar)
				CLASS_MEMBER_PROPERTY_FAST(ParagraphRecycle)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(CaretBegin)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(CaretEnd)
				CLASS_MEMBER_PROPERTY_FAST(CaretVisible)
				CLASS_MEMBER_PROPERTY_FAST(CaretColor)

				CLASS_MEMBER_METHOD(BlinkCaret, NO_PARAMETER)
				CLASS_MEMBER_METHOD(IsCaretEndPreferFrontSide, NO_PARAMETER)
				CLASS_MEMBER_METHOD(SetCaret, {L"begin" _ L"end" _ L"frontSide"})
				CLASS_MEMBER_METHOD(CalculateCaret, {L"comparingCaret" _ L"position" _ L"preferFrontSide"})
				CLASS_MEMBER_METHOD(CalculateCaretFromPoint, {L"point"})
				CLASS_MEMBER_METHOD(GetCaretBounds, {L"caret" _ L"frontSide"})
				CLASS_MEMBER_METHOD(NotifyParagraphUpdated, {L"index" _ L"oldCount" _ L"newCount" _ L"updatedText"})
				CLASS_MEMBER_METHOD(EditRun, {L"begin" _ L"end" _ L"model" _ L"copy"})
				CLASS_MEMBER_METHOD(EditText, {L"begin" _ L"end" _ L"frontSide" _ L"text"})
				CLASS_MEMBER_METHOD(EditStyle, {L"begin" _ L"end" _ L"style"})
				CLASS_MEMBER_METHOD(EditImage, {L"begin" _ L"end" _ L"image"})
				CLASS_MEMBER_METHOD(EditImage, {L"paragraphIndex" _ L"begin" _ L"end" _ L"reference" _ L"normalStyleName" _ L"activeStyleName"})
				CLASS_MEMBER_METHOD(RemoveHyperlink, {L"paragraphIndex" _ L"begin" _ L"end"})
				CLASS_MEMBER_METHOD(EditStyleName, {L"begin" _ L"end" _ L"styleName"})
				CLASS_MEMBER_METHOD(RemoveStyleName, {L"begin" _ L"end" _ L"image"})
				CLASS_MEMBER_METHOD(RenameStyle, {L"oldStyleName" _ L"newStyleName"})
				CLASS_MEMBER_METHOD(ClearStyle, {L"begin" _ L"end"})
				CLASS_MEMBER_METHOD(ConvertToPlainText, { L"begin" _ L"end" })
				CLASS_MEMBER_METHOD(SummarizeStyle, {L"begin" _ L"end"})
				CLASS_MEMBER_METHOD(SummarizeStyleName, { L"begin" _ L"end" })
				CLASS_MEMBER_METHOD(SetParagraphAlignment, {L"begin" _ L"end" _ L"alignments"})
				CLASS_MEMBER_METHOD(SummarizeParagraphAlignment, { L"begin" _ L"end" })
				CLASS_MEMBER_METHOD(GetHyperlinkFromPoint, {L"point"})
			END_CLASS_MEMBER(GuiDocumentElement)

#undef ELEMENT_CONSTRUCTOR
#undef _

/***********************************************************************
Type Loader
***********************************************************************/

			class GuiElementTypeLoader : public Object, public ITypeLoader
			{
			public:
				void Load(ITypeManager* manager)
				{
					GUIREFLECTIONELEMENT_TYPELIST(ADD_TYPE_INFO)
				}

				void Unload(ITypeManager* manager)
				{
				}
			};

#endif

			bool LoadGuiElementTypes()
			{
#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA
				ITypeManager* manager=GetGlobalTypeManager();
				if(manager)
				{
					auto loader=Ptr(new GuiElementTypeLoader);
					return manager->AddTypeLoader(loader);
				}
#endif
				return false;
			}
		}
	}
}

/***********************************************************************
.\REFLECTION\TYPEDESCRIPTORS\GUIREFLECTIONEVENTS.CPP
***********************************************************************/

namespace vl
{
	namespace reflection
	{
		namespace description
		{
			using namespace presentation::compositions;

#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA

/***********************************************************************
Type Declaration
***********************************************************************/

#define _ ,

#define EVENTARGS_CONSTRUCTOR(EVENTARGS)\
	CLASS_MEMBER_CONSTRUCTOR(Ptr<EVENTARGS>(), NO_PARAMETER)\
	CLASS_MEMBER_CONSTRUCTOR(Ptr<EVENTARGS>(GuiGraphicsComposition*), {L"composition"})

			BEGIN_CLASS_MEMBER(GuiEventArgs)
				EVENTARGS_CONSTRUCTOR(GuiEventArgs)

				CLASS_MEMBER_FIELD(compositionSource)
				CLASS_MEMBER_FIELD(eventSource)
				CLASS_MEMBER_FIELD(handled)
			END_CLASS_MEMBER(GuiEventArgs)

			BEGIN_CLASS_MEMBER(GuiRequestEventArgs)
				CLASS_MEMBER_BASE(GuiEventArgs)
				EVENTARGS_CONSTRUCTOR(GuiRequestEventArgs)

				CLASS_MEMBER_FIELD(cancel)
			END_CLASS_MEMBER(GuiRequestEventArgs)

			BEGIN_CLASS_MEMBER(GuiKeyEventArgs)
				CLASS_MEMBER_BASE(GuiEventArgs)
				EVENTARGS_CONSTRUCTOR(GuiKeyEventArgs)
				
				CLASS_MEMBER_FIELD(code)
				CLASS_MEMBER_FIELD(ctrl)
				CLASS_MEMBER_FIELD(shift)
				CLASS_MEMBER_FIELD(alt)
				CLASS_MEMBER_FIELD(capslock)
				CLASS_MEMBER_FIELD(autoRepeatKeyDown)
			END_CLASS_MEMBER(GuiKeyEventArgs)

			BEGIN_CLASS_MEMBER(GuiCharEventArgs)
				CLASS_MEMBER_BASE(GuiEventArgs)
				EVENTARGS_CONSTRUCTOR(GuiCharEventArgs)
				
				CLASS_MEMBER_FIELD(code)
				CLASS_MEMBER_FIELD(ctrl)
				CLASS_MEMBER_FIELD(shift)
				CLASS_MEMBER_FIELD(alt)
				CLASS_MEMBER_FIELD(capslock)
			END_CLASS_MEMBER(GuiCharEventArgs)

			BEGIN_CLASS_MEMBER(GuiMouseEventArgs)
				CLASS_MEMBER_BASE(GuiEventArgs)
				EVENTARGS_CONSTRUCTOR(GuiMouseEventArgs)
				
				CLASS_MEMBER_FIELD(ctrl)
				CLASS_MEMBER_FIELD(shift)
				CLASS_MEMBER_FIELD(left)
				CLASS_MEMBER_FIELD(middle)
				CLASS_MEMBER_FIELD(right)
				CLASS_MEMBER_FIELD(x)
				CLASS_MEMBER_FIELD(y)
				CLASS_MEMBER_FIELD(wheel)
				CLASS_MEMBER_FIELD(nonClient)
			END_CLASS_MEMBER(GuiMouseEventArgs)

			BEGIN_ENUM_ITEM(ControlSignal)
				ENUM_CLASS_ITEM(RenderTargetChanged)
				ENUM_CLASS_ITEM(ParentLineChanged)
				ENUM_CLASS_ITEM(ServiceAdded)
				ENUM_CLASS_ITEM(UpdateRequested)
				ENUM_CLASS_ITEM(UpdateFullfilled)
			END_ENUM_ITEM(ControlSignal)

			BEGIN_CLASS_MEMBER(GuiControlSignalEventArgs)
				CLASS_MEMBER_BASE(GuiEventArgs)
				
				CLASS_MEMBER_FIELD(controlSignal)
			END_CLASS_MEMBER(GuiControlSignalEventArgs)

			BEGIN_CLASS_MEMBER(GuiItemEventArgs)
				CLASS_MEMBER_BASE(GuiEventArgs)
				EVENTARGS_CONSTRUCTOR(GuiItemEventArgs)

				CLASS_MEMBER_FIELD(itemIndex)
			END_CLASS_MEMBER(GuiItemEventArgs)

			BEGIN_CLASS_MEMBER(GuiItemMouseEventArgs)
				CLASS_MEMBER_BASE(GuiMouseEventArgs)
				EVENTARGS_CONSTRUCTOR(GuiItemMouseEventArgs)

				CLASS_MEMBER_FIELD(itemIndex)
			END_CLASS_MEMBER(GuiItemMouseEventArgs)

			BEGIN_CLASS_MEMBER(GuiNodeEventArgs)
				CLASS_MEMBER_BASE(GuiEventArgs)
				EVENTARGS_CONSTRUCTOR(GuiNodeEventArgs)

				CLASS_MEMBER_FIELD(node)
			END_CLASS_MEMBER(GuiNodeEventArgs)

			BEGIN_CLASS_MEMBER(GuiNodeMouseEventArgs)
				CLASS_MEMBER_BASE(GuiMouseEventArgs)
				EVENTARGS_CONSTRUCTOR(GuiNodeMouseEventArgs)

				CLASS_MEMBER_FIELD(node)
			END_CLASS_MEMBER(GuiNodeMouseEventArgs)

#undef EVENTARGS_CONSTRUCTOR
#undef _

/***********************************************************************
Type Loader
***********************************************************************/

			class GuiEventTypeLoader : public Object, public ITypeLoader
			{
			public:
				void Load(ITypeManager* manager)
				{
					GUIREFLECTIONEVENT_TYPELIST(ADD_TYPE_INFO)
				}

				void Unload(ITypeManager* manager)
				{
				}
			};

#endif

			bool LoadGuiEventTypes()
			{
#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA
				ITypeManager* manager=GetGlobalTypeManager();
				if(manager)
				{
					auto loader=Ptr(new GuiEventTypeLoader);
					return manager->AddTypeLoader(loader);
				}
#endif
				return false;
			}
		}
	}
}

/***********************************************************************
.\REFLECTION\TYPEDESCRIPTORS\GUIREFLECTIONPLUGIN.CPP
***********************************************************************/

/***********************************************************************
Plugin
***********************************************************************/

namespace vl
{
	namespace reflection
	{
		namespace description
		{
#define GUIREFLECTIONTEMPLATES_IMPL_VL_TYPE_INFO(NAME, BASE) IMPL_VL_TYPE_INFO(presentation::templates::NAME)

			GUIREFLECTIONBASIC_TYPELIST(IMPL_VL_TYPE_INFO)
			GUIREFLECTIONELEMENT_TYPELIST(IMPL_VL_TYPE_INFO)
			GUIREFLECTIONCOMPOSITION_TYPELIST(IMPL_VL_TYPE_INFO)
			GUIREFLECTIONEVENT_TYPELIST(IMPL_VL_TYPE_INFO)
			GUIREFLECTIONTEMPLATES_TYPELIST(IMPL_VL_TYPE_INFO)
			GUIREFLECTIONCONTROLS_TYPELIST(IMPL_VL_TYPE_INFO)

#undef GUIREFLECTIONTEMPLATES_IMPL_VL_TYPE_INFO

#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA

			extern bool LoadGuiBasicTypes();
			extern bool LoadGuiElementTypes();
			extern bool LoadGuiCompositionTypes();
			extern bool LoadGuiEventTypes();
			extern bool LoadGuiTemplateTypes();
			extern bool LoadGuiControlTypes();

			using namespace presentation::controls;

			class GuiReflectionPlugin : public Object, public presentation::IGuiPlugin
			{
			public:

				GUI_PLUGIN_NAME(GacUI_Instance_Reflection)
				{
				}

				void Load(bool controllerUnrelatedPlugins, bool controllerRelatedPlugins)override
				{
					if (controllerUnrelatedPlugins)
					{
						LoadPredefinedTypes();
						LoadParsing2Types();
						XmlAstLoadTypes();
						JsonAstLoadTypes();
						WfLoadLibraryTypes();
						LoadGuiBasicTypes();
						LoadGuiElementTypes();
						LoadGuiCompositionTypes();
						LoadGuiEventTypes();
						LoadGuiTemplateTypes();
						LoadGuiControlTypes();
					}
				}

				void Unload(bool controllerUnrelatedPlugins, bool controllerRelatedPlugins)override
				{
				}
			};
			GUI_REGISTER_PLUGIN(GuiReflectionPlugin)
#endif
		}
	}
}

/***********************************************************************
.\REFLECTION\TYPEDESCRIPTORS\GUIREFLECTIONTEMPLATES.CPP
***********************************************************************/

namespace vl
{
	namespace reflection
	{
		namespace description
		{
			using namespace presentation;
			using namespace presentation::compositions;
			using namespace presentation::controls;
			using namespace presentation::controls::list;
			using namespace presentation::templates;

#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA

#define _ ,

#define GUI_TEMPLATE_PROPERTY_REFLECTION(CLASS, TYPE, NAME, VALUE)\
	CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(NAME)

/***********************************************************************
Type Declaration (Extra)
***********************************************************************/

			BEGIN_ENUM_ITEM(ButtonState)
				ENUM_CLASS_ITEM(Normal)
				ENUM_CLASS_ITEM(Active)
				ENUM_CLASS_ITEM(Pressed)
			END_ENUM_ITEM(ButtonState)

			BEGIN_ENUM_ITEM(ColumnSortingState)
				ENUM_CLASS_ITEM(NotSorted)
				ENUM_CLASS_ITEM(Ascending)
				ENUM_CLASS_ITEM(Descending)
			END_ENUM_ITEM(ColumnSortingState)

			BEGIN_ENUM_ITEM(TabPageOrder)
				ENUM_CLASS_ITEM(Unknown)
				ENUM_CLASS_ITEM(LeftToRight)
				ENUM_CLASS_ITEM(RightToLeft)
				ENUM_CLASS_ITEM(TopToBottom)
				ENUM_CLASS_ITEM(BottomToTop)
			END_ENUM_ITEM(TabPageOrder)

			BEGIN_INTERFACE_MEMBER_NOPROXY(ITextBoxCommandExecutor)
				CLASS_MEMBER_BASE(IDescriptable)

				CLASS_MEMBER_METHOD(UnsafeSetText, { L"value" })
			END_INTERFACE_MEMBER(ITextBoxCommandExecutor)

			BEGIN_INTERFACE_MEMBER_NOPROXY(IScrollCommandExecutor)
				CLASS_MEMBER_METHOD(SmallDecrease, NO_PARAMETER)
				CLASS_MEMBER_METHOD(SmallIncrease, NO_PARAMETER)
				CLASS_MEMBER_METHOD(BigDecrease, NO_PARAMETER)
				CLASS_MEMBER_METHOD(BigIncrease, NO_PARAMETER)
				CLASS_MEMBER_METHOD(SetTotalSize, { L"value" })
				CLASS_MEMBER_METHOD(SetPageSize, { L"value" })
				CLASS_MEMBER_METHOD(SetPosition, { L"value" })
			END_INTERFACE_MEMBER(IScrollCommandExecutor)

			BEGIN_INTERFACE_MEMBER_NOPROXY(ITabCommandExecutor)
				CLASS_MEMBER_BASE(IDescriptable)
				CLASS_MEMBER_METHOD(ShowTab, { L"index" _ L"setFocus" })
			END_INTERFACE_MEMBER(ITabCommandExecutor)

			BEGIN_INTERFACE_MEMBER_NOPROXY(IDatePickerCommandExecutor)
				CLASS_MEMBER_BASE(IDescriptable)
				CLASS_MEMBER_METHOD(NotifyDateChanged, NO_PARAMETER)
				CLASS_MEMBER_METHOD(NotifyDateNavigated, NO_PARAMETER)
				CLASS_MEMBER_METHOD(NotifyDateSelected, NO_PARAMETER)
			END_INTERFACE_MEMBER(IDatePickerCommandExecutor)

			BEGIN_INTERFACE_MEMBER_NOPROXY(IRibbonGroupCommandExecutor)
				CLASS_MEMBER_BASE(IDescriptable)
				CLASS_MEMBER_METHOD(NotifyExpandButtonClicked, NO_PARAMETER)
			END_INTERFACE_MEMBER(IRibbonGroupCommandExecutor)

			BEGIN_INTERFACE_MEMBER_NOPROXY(IRibbonGalleryCommandExecutor)
				CLASS_MEMBER_BASE(IDescriptable)
				CLASS_MEMBER_METHOD(NotifyScrollUp, NO_PARAMETER)
				CLASS_MEMBER_METHOD(NotifyScrollDown, NO_PARAMETER)
				CLASS_MEMBER_METHOD(NotifyDropdown, NO_PARAMETER)
			END_INTERFACE_MEMBER(IRibbonGalleryCommandExecutor)

			BEGIN_CLASS_MEMBER(GuiComponent)
			END_CLASS_MEMBER(GuiComponent)

			BEGIN_INTERFACE_MEMBER(IGuiAnimation)
				CLASS_MEMBER_BASE(IDescriptable)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(Stopped)

				CLASS_MEMBER_METHOD(Start, NO_PARAMETER)
				CLASS_MEMBER_METHOD(Pause, NO_PARAMETER)
				CLASS_MEMBER_METHOD(Resume, NO_PARAMETER)
				CLASS_MEMBER_METHOD(Run, NO_PARAMETER)

				CLASS_MEMBER_STATIC_METHOD_OVERLOAD(CreateAnimation, { L"run" _ L"milliseconds" }, Ptr<IGuiAnimation>(*)(const Func<void(vuint64_t)>&, vuint64_t))
				CLASS_MEMBER_STATIC_METHOD_OVERLOAD(CreateAnimation, { L"run" }, Ptr<IGuiAnimation>(*)(const Func<void(vuint64_t)>&))
			END_INTERFACE_MEMBER(IGuiAnimation)

			BEGIN_INTERFACE_MEMBER_NOPROXY(IGuiAnimationCoroutine::IImpl)
				CLASS_MEMBER_BASE(IGuiAnimation)
			END_INTERFACE_MEMBER(IGuiAnimationCoroutine::IImpl)

			BEGIN_CLASS_MEMBER(IGuiAnimationCoroutine)
				CLASS_MEMBER_STATIC_METHOD(WaitAndPause, { L"impl" _ L"milliseconds" })
				CLASS_MEMBER_STATIC_METHOD(PlayAndWaitAndPause, { L"impl" _ L"animation" })
				CLASS_MEMBER_STATIC_METHOD(PlayInGroupAndPause, { L"impl" _ L"animation" _ L"groupId" })
				CLASS_MEMBER_STATIC_METHOD(WaitForGroupAndPause, { L"impl" _ L"groupId" })
				CLASS_MEMBER_STATIC_METHOD(ReturnAndExit, { L"impl" })
				CLASS_MEMBER_STATIC_METHOD(Create, { L"creator" })
			END_CLASS_MEMBER(IGuiAnimationCoroutine)

			BEGIN_CLASS_MEMBER(GuiInstanceRootObject)
				CLASS_MEMBER_METHOD_OVERLOAD(FinalizeInstanceRecursively, {L"thisObject"}, void(GuiInstanceRootObject::*)(GuiTemplate*))
				CLASS_MEMBER_METHOD_OVERLOAD(FinalizeInstanceRecursively, {L"thisObject"}, void(GuiInstanceRootObject::*)(GuiCustomControl*))
				CLASS_MEMBER_METHOD_OVERLOAD(FinalizeInstanceRecursively, {L"thisObject"}, void(GuiInstanceRootObject::*)(GuiControlHost*))
				CLASS_MEMBER_METHOD(FinalizeGeneralInstance, {L"thisObject"})
				CLASS_MEMBER_METHOD(SetResourceResolver, {L"resolver"})
				CLASS_MEMBER_METHOD(ResolveResource, {L"protocol" _ L"path" _ L"ensureExist"})

				CLASS_MEMBER_METHOD(AddSubscription, {L"subscription"})
				CLASS_MEMBER_METHOD(UpdateSubscriptions, NO_PARAMETER)
				CLASS_MEMBER_METHOD(AddComponent, {L"component"})
				CLASS_MEMBER_METHOD(AddControlHostComponent, {L"controlHost"})
				CLASS_MEMBER_METHOD(AddAnimation, { L"animation" })
				CLASS_MEMBER_METHOD(KillAnimation, { L"animation" })
				CLASS_MEMBER_METHOD(GetNamedObject, { L"name" })
				CLASS_MEMBER_METHOD(SetNamedObject, { L"name" _ L"namedObject" })
			END_CLASS_MEMBER(GuiInstanceRootObject)

			BEGIN_CLASS_MEMBER(GuiCommonScrollBehavior)
				CLASS_MEMBER_BASE(GuiComponent)
				CLASS_MEMBER_CONSTRUCTOR(GuiCommonScrollBehavior*(), NO_PARAMETER)
				
				CLASS_MEMBER_METHOD(AttachScrollTemplate, { L"value" })
				CLASS_MEMBER_METHOD(AttachDecreaseButton, { L"button" })
				CLASS_MEMBER_METHOD(AttachIncreaseButton, { L"button" })
				CLASS_MEMBER_METHOD(AttachHorizontalScrollHandle, { L"partialView" })
				CLASS_MEMBER_METHOD(AttachVerticalScrollHandle, { L"partialView" })
				CLASS_MEMBER_METHOD(AttachHorizontalTrackerHandle, { L"partialView" })
				CLASS_MEMBER_METHOD(AttachVerticalTrackerHandle, { L"partialView" })
				CLASS_MEMBER_METHOD(GetHorizontalTrackerHandlerPosition, { L"handle" _ L"totalSize" _ L"pageSize" _ L"position" })
				CLASS_MEMBER_METHOD(GetVerticalTrackerHandlerPosition, { L"handle" _ L"totalSize" _ L"pageSize" _ L"position" })
			END_CLASS_MEMBER(GuiCommonScrollBehavior)

/***********************************************************************
Type Declaration (Class)
***********************************************************************/

			BEGIN_CLASS_MEMBER(GuiTemplate)
				CLASS_MEMBER_BASE(GuiBoundsComposition)
				CLASS_MEMBER_BASE(GuiInstanceRootObject)
				CLASS_MEMBER_CONSTRUCTOR(GuiTemplate*(), NO_PARAMETER)

				GuiTemplate_PROPERTIES(GUI_TEMPLATE_PROPERTY_REFLECTION)
			END_CLASS_MEMBER(GuiTemplate)

#define GUI_CONTROL_TEMPLATE(NAME, BASE)\
			BEGIN_CLASS_MEMBER(NAME)\
				CLASS_MEMBER_BASE(BASE)\
				CLASS_MEMBER_CONSTRUCTOR(NAME*(), NO_PARAMETER)\
				NAME ## _PROPERTIES(GUI_TEMPLATE_PROPERTY_REFLECTION)\
			END_CLASS_MEMBER(NAME)\

			GUI_CORE_CONTROL_TEMPLATE_DECL(GUI_CONTROL_TEMPLATE)
			GUI_CONTROL_TEMPLATE_DECL(GUI_CONTROL_TEMPLATE)
			GUI_ITEM_TEMPLATE_DECL(GUI_CONTROL_TEMPLATE)

			BEGIN_CLASS_MEMBER(GuiCommonDatePickerLook)
				CLASS_MEMBER_BASE(GuiTemplate)
				CLASS_MEMBER_CONSTRUCTOR(GuiCommonDatePickerLook*(Color, Color, Color), { L"backgroundColor" _ L"primaryTextColor" _ L"secondaryTextColor" })

				CLASS_MEMBER_PROPERTY_FAST(Commands)
				CLASS_MEMBER_PROPERTY_FAST(DateButtonTemplate)
				CLASS_MEMBER_PROPERTY_FAST(DateTextListTemplate)
				CLASS_MEMBER_PROPERTY_FAST(DateComboBoxTemplate)
				CLASS_MEMBER_PROPERTY_FAST(DateLocale)
				CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(Date)
				CLASS_MEMBER_PROPERTY_FAST(Font)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(YearCombo)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(MonthCombo)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(DayRows)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(DayColumns)
				CLASS_MEMBER_METHOD(GetDayButton, { L"row" _ L"column" })
				CLASS_MEMBER_METHOD(GetDateOfDayButton, { L"row" _ L"column" })
			END_CLASS_MEMBER(GuiCommonDatePickerLook)

			BEGIN_CLASS_MEMBER(GuiCommonScrollViewLook)
				CLASS_MEMBER_BASE(GuiTemplate)
				CLASS_MEMBER_CONSTRUCTOR(GuiCommonScrollViewLook*(vint), { L"defaultScrollSize" })
				
				CLASS_MEMBER_PROPERTY_FAST(HScrollTemplate)
				CLASS_MEMBER_PROPERTY_FAST(VScrollTemplate)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(HScroll)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(VScroll)
				CLASS_MEMBER_PROPERTY_READONLY_FAST(ContainerComposition)
			END_CLASS_MEMBER(GuiCommonScrollViewLook)

			BEGIN_CLASS_MEMBER(MainColumnVisualizerTemplate)
				CLASS_MEMBER_BASE(GuiGridVisualizerTemplate)
				CLASS_MEMBER_CONSTRUCTOR(MainColumnVisualizerTemplate*(), NO_PARAMETER)
			END_CLASS_MEMBER(MainColumnVisualizerTemplate)

			BEGIN_CLASS_MEMBER(SubColumnVisualizerTemplate)
				CLASS_MEMBER_BASE(GuiGridVisualizerTemplate)
				CLASS_MEMBER_CONSTRUCTOR(SubColumnVisualizerTemplate*(), NO_PARAMETER)
			END_CLASS_MEMBER(SubColumnVisualizerTemplate)

			BEGIN_CLASS_MEMBER(HyperlinkVisualizerTemplate)
				CLASS_MEMBER_BASE(SubColumnVisualizerTemplate)
				CLASS_MEMBER_CONSTRUCTOR(HyperlinkVisualizerTemplate*(), NO_PARAMETER)
			END_CLASS_MEMBER(HyperlinkVisualizerTemplate)

			BEGIN_CLASS_MEMBER(FocusRectangleVisualizerTemplate)
				CLASS_MEMBER_BASE(GuiGridVisualizerTemplate)
				CLASS_MEMBER_CONSTRUCTOR(FocusRectangleVisualizerTemplate*(), NO_PARAMETER)
			END_CLASS_MEMBER(FocusRectangleVisualizerTemplate)

			BEGIN_CLASS_MEMBER(CellBorderVisualizerTemplate)
				CLASS_MEMBER_BASE(GuiGridVisualizerTemplate)
				CLASS_MEMBER_CONSTRUCTOR(CellBorderVisualizerTemplate*(), NO_PARAMETER)
			END_CLASS_MEMBER(CellBorderVisualizerTemplate)

#undef GUI_CONTROL_TEMPLATE
#undef GUI_TEMPLATE_PROPERTY_REFLECTION
#undef _

/***********************************************************************
Type Loader
***********************************************************************/

			class GuiTemplateTypeLoader : public Object, public ITypeLoader
			{
			public:
				void Load(ITypeManager* manager)
				{
#define GUIREFLECTIONTEMPLATES_ADD_TYPE_INFO(NAME, BASE) ADD_TYPE_INFO(presentation::templates::NAME)

					GUIREFLECTIONTEMPLATES_TYPELIST(ADD_TYPE_INFO)

#undef GUIREFLECTIONTEMPLATES_ADD_TYPE_INFO
				}

				void Unload(ITypeManager* manager)
				{
				}
			};

#endif

			bool LoadGuiTemplateTypes()
			{
#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA
				ITypeManager* manager=GetGlobalTypeManager();
				if(manager)
				{
					auto loader=Ptr(new GuiTemplateTypeLoader);
					return manager->AddTypeLoader(loader);
				}
#endif
				return false;
			}
		}
	}
}

/***********************************************************************
.\UTILITIES\FAKESERVICES\DIALOGS\SOURCE\GUIFAKEDIALOGSERVICEUIREFLECTION.CPP
***********************************************************************/
/***********************************************************************
!!!!!! DO NOT MODIFY !!!!!!

Source: GacUI FakeDialogServiceUI

This file is generated by Workflow compiler
https://github.com/vczh-libraries
***********************************************************************/


#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(gaclib_controls::ColorComponentControl)
			IMPL_CPP_TYPE_INFO(gaclib_controls::ColorComponentControlConstructor)
			IMPL_CPP_TYPE_INFO(gaclib_controls::ColorDialogControl)
			IMPL_CPP_TYPE_INFO(gaclib_controls::ColorDialogControlConstructor)
			IMPL_CPP_TYPE_INFO(gaclib_controls::ColorDialogWindow)
			IMPL_CPP_TYPE_INFO(gaclib_controls::ColorDialogWindowConstructor)
			IMPL_CPP_TYPE_INFO(gaclib_controls::DialogStrings)
			IMPL_CPP_TYPE_INFO(gaclib_controls::FileDialogWindow)
			IMPL_CPP_TYPE_INFO(gaclib_controls::FileDialogWindowConstructor)
			IMPL_CPP_TYPE_INFO(gaclib_controls::FilePickerControl)
			IMPL_CPP_TYPE_INFO(gaclib_controls::FilePickerControlConstructor)
			IMPL_CPP_TYPE_INFO(gaclib_controls::FontNameControl)
			IMPL_CPP_TYPE_INFO(gaclib_controls::FontNameControlConstructor)
			IMPL_CPP_TYPE_INFO(gaclib_controls::FontSizeControl)
			IMPL_CPP_TYPE_INFO(gaclib_controls::FontSizeControlConstructor)
			IMPL_CPP_TYPE_INFO(gaclib_controls::FullFontDialogWindow)
			IMPL_CPP_TYPE_INFO(gaclib_controls::FullFontDialogWindowConstructor)
			IMPL_CPP_TYPE_INFO(gaclib_controls::IDialogStringsStrings)
			IMPL_CPP_TYPE_INFO(gaclib_controls::MessageBoxButtonTemplate)
			IMPL_CPP_TYPE_INFO(gaclib_controls::MessageBoxButtonTemplateConstructor)
			IMPL_CPP_TYPE_INFO(gaclib_controls::MessageBoxWindow)
			IMPL_CPP_TYPE_INFO(gaclib_controls::MessageBoxWindowConstructor)
			IMPL_CPP_TYPE_INFO(gaclib_controls::SimpleFontDialogWindow)
			IMPL_CPP_TYPE_INFO(gaclib_controls::SimpleFontDialogWindowConstructor)

#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA
#define _ ,
			BEGIN_CLASS_MEMBER(::gaclib_controls::ColorComponentControl)
				ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"gaclib_controls::ColorComponentControlConstructor")))
				CLASS_MEMBER_BASE(::vl::presentation::controls::GuiCustomControl)
				CLASS_MEMBER_BASE(::gaclib_controls::ColorComponentControlConstructor)
				CLASS_MEMBER_CONSTRUCTOR(::gaclib_controls::ColorComponentControl*(), NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetTextBoxAlt, NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetValue, NO_PARAMETER)
				CLASS_MEMBER_METHOD(SetTextBoxAlt, { L"__vwsn_value_" })
				CLASS_MEMBER_METHOD(SetValue, { L"__vwsn_value_" })
				CLASS_MEMBER_EVENT(TextBoxAltChanged)
				CLASS_MEMBER_EVENT(ValueChanged)
				CLASS_MEMBER_FIELD(__vwsn_prop_TextBoxAlt)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private)
				CLASS_MEMBER_FIELD(__vwsn_prop_Value)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private)
				CLASS_MEMBER_PROPERTY_EVENT(TextBoxAlt, GetTextBoxAlt, SetTextBoxAlt, TextBoxAltChanged)
				CLASS_MEMBER_PROPERTY_EVENT(Value, GetValue, SetValue, ValueChanged)
			END_CLASS_MEMBER(::gaclib_controls::ColorComponentControl)

			BEGIN_CLASS_MEMBER(::gaclib_controls::ColorComponentControlConstructor)
				CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject)
				CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::gaclib_controls::ColorComponentControlConstructor>(), NO_PARAMETER)
				CLASS_MEMBER_METHOD(__vwsn_gaclib_controls_ColorComponentControl_Initialize, { L"__vwsn_this_" })
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_0)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_1)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_2)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_3)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_4)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(self)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(textBox)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(tracker)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
			END_CLASS_MEMBER(::gaclib_controls::ColorComponentControlConstructor)

			BEGIN_CLASS_MEMBER(::gaclib_controls::ColorDialogControl)
				ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"gaclib_controls::ColorDialogControlConstructor")))
				CLASS_MEMBER_BASE(::vl::presentation::controls::GuiCustomControl)
				CLASS_MEMBER_BASE(::gaclib_controls::ColorDialogControlConstructor)
				CLASS_MEMBER_CONSTRUCTOR(::gaclib_controls::ColorDialogControl*(::vl::Ptr<::vl::presentation::IColorDialogViewModel>), { L"__vwsn_ctor_parameter_ViewModel" })
				CLASS_MEMBER_METHOD(GetStrings, NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetValue, NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetViewModel, NO_PARAMETER)
				CLASS_MEMBER_METHOD(ReadColor, NO_PARAMETER)
				CLASS_MEMBER_METHOD(SetStrings, { L"__vwsn_value_" })
				CLASS_MEMBER_METHOD(SetValue, { L"__vwsn_value_" })
				CLASS_MEMBER_EVENT(StringsChanged)
				CLASS_MEMBER_EVENT(ValueChanged)
				CLASS_MEMBER_FIELD(__vwsn_parameter_ViewModel)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private)
				CLASS_MEMBER_FIELD(__vwsn_prop_Strings)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private)
				CLASS_MEMBER_FIELD(__vwsn_prop_Value)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private)
				CLASS_MEMBER_PROPERTY_EVENT(Strings, GetStrings, SetStrings, StringsChanged)
				CLASS_MEMBER_PROPERTY_EVENT(Value, GetValue, SetValue, ValueChanged)
				CLASS_MEMBER_PROPERTY_READONLY(ViewModel, GetViewModel)
			END_CLASS_MEMBER(::gaclib_controls::ColorDialogControl)

			BEGIN_CLASS_MEMBER(::gaclib_controls::ColorDialogControlConstructor)
				CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject)
				CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::gaclib_controls::ColorDialogControlConstructor>(), NO_PARAMETER)
				CLASS_MEMBER_METHOD(__vwsn_gaclib_controls_ColorDialogControl_Initialize, { L"__vwsn_this_" })
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_0)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_1)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_10)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_11)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_12)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_13)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_14)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_15)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_16)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_2)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_3)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_4)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_5)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_6)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_7)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_8)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_9)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(ViewModel)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(colorBlue)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(colorGreen)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(colorRed)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(self)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
			END_CLASS_MEMBER(::gaclib_controls::ColorDialogControlConstructor)

			BEGIN_CLASS_MEMBER(::gaclib_controls::ColorDialogWindow)
				ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"gaclib_controls::ColorDialogWindowConstructor")))
				CLASS_MEMBER_BASE(::vl::presentation::controls::GuiWindow)
				CLASS_MEMBER_BASE(::gaclib_controls::ColorDialogWindowConstructor)
				CLASS_MEMBER_CONSTRUCTOR(::gaclib_controls::ColorDialogWindow*(::vl::Ptr<::vl::presentation::IColorDialogViewModel>), { L"__vwsn_ctor_parameter_ViewModel" })
				CLASS_MEMBER_METHOD(GetStrings, NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetViewModel, NO_PARAMETER)
				CLASS_MEMBER_METHOD(SetStrings, { L"__vwsn_value_" })
				CLASS_MEMBER_EVENT(StringsChanged)
				CLASS_MEMBER_FIELD(__vwsn_parameter_ViewModel)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private)
				CLASS_MEMBER_FIELD(__vwsn_prop_Strings)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private)
				CLASS_MEMBER_PROPERTY_EVENT(Strings, GetStrings, SetStrings, StringsChanged)
				CLASS_MEMBER_PROPERTY_READONLY(ViewModel, GetViewModel)
			END_CLASS_MEMBER(::gaclib_controls::ColorDialogWindow)

			BEGIN_CLASS_MEMBER(::gaclib_controls::ColorDialogWindowConstructor)
				CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject)
				CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::gaclib_controls::ColorDialogWindowConstructor>(), NO_PARAMETER)
				CLASS_MEMBER_METHOD(__vwsn_gaclib_controls_ColorDialogWindow_Initialize, { L"__vwsn_this_" })
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_0)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_1)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_2)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_3)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_4)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_5)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_6)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_7)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_8)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(ViewModel)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(colorControl)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(self)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
			END_CLASS_MEMBER(::gaclib_controls::ColorDialogWindowConstructor)

			BEGIN_CLASS_MEMBER(::gaclib_controls::DialogStrings)
				CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject)
				CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::gaclib_controls::DialogStrings>(), NO_PARAMETER)
				CLASS_MEMBER_STATIC_METHOD(__vwsn_ls_en_US_BuildStrings, { L"__vwsn_ls_locale" })
				CLASS_MEMBER_STATIC_METHOD(Get, { L"__vwsn_ls_locale" })
				CLASS_MEMBER_STATIC_METHOD(Install, { L"__vwsn_ls_locale" _ L"__vwsn_ls_impl" })
			END_CLASS_MEMBER(::gaclib_controls::DialogStrings)

			BEGIN_CLASS_MEMBER(::gaclib_controls::FileDialogWindow)
				ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"gaclib_controls::FileDialogWindowConstructor")))
				CLASS_MEMBER_BASE(::vl::presentation::controls::GuiWindow)
				CLASS_MEMBER_BASE(::gaclib_controls::FileDialogWindowConstructor)
				CLASS_MEMBER_CONSTRUCTOR(::gaclib_controls::FileDialogWindow*(::vl::Ptr<::vl::presentation::IFileDialogViewModel>), { L"__vwsn_ctor_parameter_ViewModel" })
				CLASS_MEMBER_METHOD(__vwsn_instance_ctor_, NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetStrings, NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetViewModel, NO_PARAMETER)
				CLASS_MEMBER_METHOD(MakeOpenFileDialog, NO_PARAMETER)
				CLASS_MEMBER_METHOD(MakeSaveFileDialog, NO_PARAMETER)
				CLASS_MEMBER_METHOD(SetStrings, { L"__vwsn_value_" })
				CLASS_MEMBER_EVENT(StringsChanged)
				CLASS_MEMBER_FIELD(__vwsn_parameter_ViewModel)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private)
				CLASS_MEMBER_FIELD(__vwsn_prop_Strings)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private)
				CLASS_MEMBER_PROPERTY_EVENT(Strings, GetStrings, SetStrings, StringsChanged)
				CLASS_MEMBER_PROPERTY_READONLY(ViewModel, GetViewModel)
			END_CLASS_MEMBER(::gaclib_controls::FileDialogWindow)

			BEGIN_CLASS_MEMBER(::gaclib_controls::FileDialogWindowConstructor)
				CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject)
				CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::gaclib_controls::FileDialogWindowConstructor>(), NO_PARAMETER)
				CLASS_MEMBER_METHOD(__vwsn_gaclib_controls_FileDialogWindow_Initialize, { L"__vwsn_this_" })
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_0)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_1)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_2)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_3)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_4)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_5)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_6)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_7)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(ViewModel)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(buttonOK)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(filePickerControl)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(self)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
			END_CLASS_MEMBER(::gaclib_controls::FileDialogWindowConstructor)

			BEGIN_CLASS_MEMBER(::gaclib_controls::FilePickerControl)
				ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"gaclib_controls::FilePickerControlConstructor")))
				CLASS_MEMBER_BASE(::vl::presentation::controls::GuiCustomControl)
				CLASS_MEMBER_BASE(::gaclib_controls::FilePickerControlConstructor)
				CLASS_MEMBER_CONSTRUCTOR(::gaclib_controls::FilePickerControl*(::vl::Ptr<::vl::presentation::IFileDialogViewModel>), { L"__vwsn_ctor_parameter_ViewModel" })
				CLASS_MEMBER_METHOD(__vwsn_instance_ctor_, NO_PARAMETER)
				CLASS_MEMBER_METHOD(CreateFileFilter, { L"filter" })
				CLASS_MEMBER_METHOD(GetSelectedFiles, NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetSelection, NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetStrings, NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetViewModel, NO_PARAMETER)
				CLASS_MEMBER_METHOD(LocateSelectedFolderInTreeView, NO_PARAMETER)
				CLASS_MEMBER_METHOD(SetStrings, { L"__vwsn_value_" })
				CLASS_MEMBER_EVENT(RequestClose)
				CLASS_MEMBER_EVENT(StringsChanged)
				CLASS_MEMBER_FIELD(__vwsn_parameter_ViewModel)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private)
				CLASS_MEMBER_FIELD(__vwsn_prop_Strings)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private)
				CLASS_MEMBER_PROPERTY_READONLY(Selection, GetSelection)
				CLASS_MEMBER_PROPERTY_EVENT(Strings, GetStrings, SetStrings, StringsChanged)
				CLASS_MEMBER_PROPERTY_READONLY(ViewModel, GetViewModel)
				CLASS_MEMBER_FIELD(imageFile)
				CLASS_MEMBER_FIELD(imageFolder)
			END_CLASS_MEMBER(::gaclib_controls::FilePickerControl)

			BEGIN_CLASS_MEMBER(::gaclib_controls::FilePickerControlConstructor)
				CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject)
				CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::gaclib_controls::FilePickerControlConstructor>(), NO_PARAMETER)
				CLASS_MEMBER_METHOD(__vwsn_gaclib_controls_FilePickerControl_Initialize, { L"__vwsn_this_" })
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_0)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_1)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_10)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_11)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_12)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_13)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_14)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_15)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_16)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_17)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_18)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_19)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_2)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_20)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_21)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_22)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_23)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_24)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_3)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_4)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_5)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_6)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_7)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_8)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_9)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(ViewModel)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(comboBox)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(dataGrid)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(self)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(textBox)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(treeView)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
			END_CLASS_MEMBER(::gaclib_controls::FilePickerControlConstructor)

			BEGIN_CLASS_MEMBER(::gaclib_controls::FontNameControl)
				ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"gaclib_controls::FontNameControlConstructor")))
				CLASS_MEMBER_BASE(::vl::presentation::controls::GuiCustomControl)
				CLASS_MEMBER_BASE(::gaclib_controls::FontNameControlConstructor)
				CLASS_MEMBER_CONSTRUCTOR(::gaclib_controls::FontNameControl*(::vl::Ptr<::vl::presentation::ICommonFontDialogViewModel>), { L"__vwsn_ctor_parameter_ViewModel" })
				CLASS_MEMBER_METHOD(GetLegal, NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetStrings, NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetValue, NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetViewModel, NO_PARAMETER)
				CLASS_MEMBER_METHOD(InitValue, { L"value" })
				CLASS_MEMBER_METHOD(SetLegal, { L"__vwsn_value_" })
				CLASS_MEMBER_METHOD(SetStrings, { L"__vwsn_value_" })
				CLASS_MEMBER_METHOD(SetValue, { L"__vwsn_value_" })
				CLASS_MEMBER_METHOD(UpdateSelectedIndex, NO_PARAMETER)
				CLASS_MEMBER_EVENT(LegalChanged)
				CLASS_MEMBER_EVENT(StringsChanged)
				CLASS_MEMBER_EVENT(ValueChanged)
				CLASS_MEMBER_FIELD(__vwsn_parameter_ViewModel)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private)
				CLASS_MEMBER_FIELD(__vwsn_prop_Legal)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private)
				CLASS_MEMBER_FIELD(__vwsn_prop_Strings)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private)
				CLASS_MEMBER_FIELD(__vwsn_prop_Value)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private)
				CLASS_MEMBER_PROPERTY_EVENT(Legal, GetLegal, SetLegal, LegalChanged)
				CLASS_MEMBER_PROPERTY_EVENT(Strings, GetStrings, SetStrings, StringsChanged)
				CLASS_MEMBER_PROPERTY_EVENT(Value, GetValue, SetValue, ValueChanged)
				CLASS_MEMBER_PROPERTY_READONLY(ViewModel, GetViewModel)
			END_CLASS_MEMBER(::gaclib_controls::FontNameControl)

			BEGIN_CLASS_MEMBER(::gaclib_controls::FontNameControlConstructor)
				CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject)
				CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::gaclib_controls::FontNameControlConstructor>(), NO_PARAMETER)
				CLASS_MEMBER_METHOD(__vwsn_gaclib_controls_FontNameControl_Initialize, { L"__vwsn_this_" })
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_0)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_1)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_2)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_3)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_4)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_5)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_6)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(ViewModel)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(self)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(textBox)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(textList)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
			END_CLASS_MEMBER(::gaclib_controls::FontNameControlConstructor)

			BEGIN_CLASS_MEMBER(::gaclib_controls::FontSizeControl)
				ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"gaclib_controls::FontSizeControlConstructor")))
				CLASS_MEMBER_BASE(::vl::presentation::controls::GuiCustomControl)
				CLASS_MEMBER_BASE(::gaclib_controls::FontSizeControlConstructor)
				CLASS_MEMBER_CONSTRUCTOR(::gaclib_controls::FontSizeControl*(), NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetLegal, NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetSizeList, NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetStrings, NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetValue, NO_PARAMETER)
				CLASS_MEMBER_METHOD(InitValue, { L"value" })
				CLASS_MEMBER_METHOD(SetLegal, { L"__vwsn_value_" })
				CLASS_MEMBER_METHOD(SetSizeList, { L"__vwsn_value_" })
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_METHOD(SetStrings, { L"__vwsn_value_" })
				CLASS_MEMBER_METHOD(SetValue, { L"__vwsn_value_" })
				CLASS_MEMBER_METHOD(UpdateSelectedIndex, NO_PARAMETER)
				CLASS_MEMBER_EVENT(LegalChanged)
				CLASS_MEMBER_EVENT(StringsChanged)
				CLASS_MEMBER_EVENT(ValueChanged)
				CLASS_MEMBER_FIELD(__vwsn_prop_Legal)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private)
				CLASS_MEMBER_FIELD(__vwsn_prop_SizeList)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private)
				CLASS_MEMBER_FIELD(__vwsn_prop_Strings)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private)
				CLASS_MEMBER_FIELD(__vwsn_prop_Value)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private)
				CLASS_MEMBER_PROPERTY_EVENT(Legal, GetLegal, SetLegal, LegalChanged)
				CLASS_MEMBER_PROPERTY_READONLY(SizeList, GetSizeList)
				CLASS_MEMBER_PROPERTY_EVENT(Strings, GetStrings, SetStrings, StringsChanged)
				CLASS_MEMBER_PROPERTY_EVENT(Value, GetValue, SetValue, ValueChanged)
			END_CLASS_MEMBER(::gaclib_controls::FontSizeControl)

			BEGIN_CLASS_MEMBER(::gaclib_controls::FontSizeControlConstructor)
				CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject)
				CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::gaclib_controls::FontSizeControlConstructor>(), NO_PARAMETER)
				CLASS_MEMBER_METHOD(__vwsn_gaclib_controls_FontSizeControl_Initialize, { L"__vwsn_this_" })
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_0)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_1)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_2)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_3)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_4)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_5)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_6)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(self)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(textBox)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(textList)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
			END_CLASS_MEMBER(::gaclib_controls::FontSizeControlConstructor)

			BEGIN_CLASS_MEMBER(::gaclib_controls::FullFontDialogWindow)
				ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"gaclib_controls::FullFontDialogWindowConstructor")))
				CLASS_MEMBER_BASE(::vl::presentation::controls::GuiWindow)
				CLASS_MEMBER_BASE(::gaclib_controls::FullFontDialogWindowConstructor)
				CLASS_MEMBER_CONSTRUCTOR(::gaclib_controls::FullFontDialogWindow*(::vl::Ptr<::vl::presentation::IFullFontDialogViewModel>), { L"__vwsn_ctor_parameter_ViewModel" })
				CLASS_MEMBER_METHOD(__vwsn_instance_ctor_, NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetStrings, NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetViewModel, NO_PARAMETER)
				CLASS_MEMBER_METHOD(SetStrings, { L"__vwsn_value_" })
				CLASS_MEMBER_EVENT(StringsChanged)
				CLASS_MEMBER_FIELD(__vwsn_parameter_ViewModel)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private)
				CLASS_MEMBER_FIELD(__vwsn_prop_Strings)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private)
				CLASS_MEMBER_PROPERTY_EVENT(Strings, GetStrings, SetStrings, StringsChanged)
				CLASS_MEMBER_PROPERTY_READONLY(ViewModel, GetViewModel)
			END_CLASS_MEMBER(::gaclib_controls::FullFontDialogWindow)

			BEGIN_CLASS_MEMBER(::gaclib_controls::FullFontDialogWindowConstructor)
				CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject)
				CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::gaclib_controls::FullFontDialogWindowConstructor>(), NO_PARAMETER)
				CLASS_MEMBER_METHOD(__vwsn_gaclib_controls_FullFontDialogWindow_Initialize, { L"__vwsn_this_" })
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_0)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_1)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_10)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_11)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_12)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_13)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_14)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_15)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_16)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_17)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_18)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_19)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_2)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_20)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_21)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_22)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_23)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_24)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_25)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_26)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_27)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_28)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_29)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_3)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_30)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_31)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_32)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_33)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_34)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_4)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_5)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_6)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_7)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_8)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_9)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(ViewModel)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(checkBold)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(checkHAA)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(checkItalic)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(checkStrikeline)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(checkUnderline)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(checkVAA)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(colorBackground)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(colorBounds)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(nameControl)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(self)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(sizeControl)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
			END_CLASS_MEMBER(::gaclib_controls::FullFontDialogWindowConstructor)

			BEGIN_INTERFACE_MEMBER(::gaclib_controls::IDialogStringsStrings)
				CLASS_MEMBER_BASE(::vl::reflection::IDescriptable)
				CLASS_MEMBER_METHOD(Abort, NO_PARAMETER)
				CLASS_MEMBER_METHOD(Blue, NO_PARAMETER)
				CLASS_MEMBER_METHOD(Bold, NO_PARAMETER)
				CLASS_MEMBER_METHOD(Cancel, NO_PARAMETER)
				CLASS_MEMBER_METHOD(Color, NO_PARAMETER)
				CLASS_MEMBER_METHOD(ColorDialogTitle, NO_PARAMETER)
				CLASS_MEMBER_METHOD(Continue, NO_PARAMETER)
				CLASS_MEMBER_METHOD(FileDialogAskCreateFile, NO_PARAMETER)
				CLASS_MEMBER_METHOD(FileDialogAskOverrideFile, NO_PARAMETER)
				CLASS_MEMBER_METHOD(FileDialogErrorEmptySelection, NO_PARAMETER)
				CLASS_MEMBER_METHOD(FileDialogErrorFileExpected, NO_PARAMETER)
				CLASS_MEMBER_METHOD(FileDialogErrorFileNotExist, NO_PARAMETER)
				CLASS_MEMBER_METHOD(FileDialogErrorFolderNotExist, NO_PARAMETER)
				CLASS_MEMBER_METHOD(FileDialogErrorMultipleSelectionNotEnabled, NO_PARAMETER)
				CLASS_MEMBER_METHOD(FileDialogFileName, NO_PARAMETER)
				CLASS_MEMBER_METHOD(FileDialogOpen, NO_PARAMETER)
				CLASS_MEMBER_METHOD(FileDialogSave, NO_PARAMETER)
				CLASS_MEMBER_METHOD(FileDialogTextLoadingFiles, NO_PARAMETER)
				CLASS_MEMBER_METHOD(FileDialogTextLoadingFolders, NO_PARAMETER)
				CLASS_MEMBER_METHOD(FontColorGroup, NO_PARAMETER)
				CLASS_MEMBER_METHOD(FontColorGroup2, NO_PARAMETER)
				CLASS_MEMBER_METHOD(FontDialogTitle, NO_PARAMETER)
				CLASS_MEMBER_METHOD(FontEffectGroup, NO_PARAMETER)
				CLASS_MEMBER_METHOD(FontNameGroup, NO_PARAMETER)
				CLASS_MEMBER_METHOD(FontPreviewGroup, NO_PARAMETER)
				CLASS_MEMBER_METHOD(FontSizeGroup, NO_PARAMETER)
				CLASS_MEMBER_METHOD(Green, NO_PARAMETER)
				CLASS_MEMBER_METHOD(HAA, NO_PARAMETER)
				CLASS_MEMBER_METHOD(Ignore, NO_PARAMETER)
				CLASS_MEMBER_METHOD(Italic, NO_PARAMETER)
				CLASS_MEMBER_METHOD(No, NO_PARAMETER)
				CLASS_MEMBER_METHOD(OK, NO_PARAMETER)
				CLASS_MEMBER_METHOD(Red, NO_PARAMETER)
				CLASS_MEMBER_METHOD(Retry, NO_PARAMETER)
				CLASS_MEMBER_METHOD(Strikeline, NO_PARAMETER)
				CLASS_MEMBER_METHOD(TryAgain, NO_PARAMETER)
				CLASS_MEMBER_METHOD(Underline, NO_PARAMETER)
				CLASS_MEMBER_METHOD(VAA, NO_PARAMETER)
				CLASS_MEMBER_METHOD(Yes, NO_PARAMETER)
			END_INTERFACE_MEMBER(::gaclib_controls::IDialogStringsStrings)

			BEGIN_CLASS_MEMBER(::gaclib_controls::MessageBoxButtonTemplate)
				ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"gaclib_controls::MessageBoxButtonTemplateConstructor")))
				CLASS_MEMBER_BASE(::vl::presentation::templates::GuiControlTemplate)
				CLASS_MEMBER_BASE(::gaclib_controls::MessageBoxButtonTemplateConstructor)
				CLASS_MEMBER_CONSTRUCTOR(::gaclib_controls::MessageBoxButtonTemplate*(::vl::Ptr<::vl::presentation::IMessageBoxDialogAction>), { L"__vwsn_ctor_parameter_Action" })
				CLASS_MEMBER_METHOD(__vwsn_instance_ctor_, NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetAction, NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetButtonAlt, { L"button" })
				CLASS_MEMBER_METHOD(GetButtonControl, NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetButtonText, { L"button" _ L"strings" })
				CLASS_MEMBER_METHOD(GetStrings, NO_PARAMETER)
				CLASS_MEMBER_METHOD(SetButtonControl, { L"__vwsn_value_" })
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_METHOD(SetStrings, { L"__vwsn_value_" })
				CLASS_MEMBER_EVENT(ButtonControlChanged)
				CLASS_MEMBER_EVENT(StringsChanged)
				CLASS_MEMBER_FIELD(__vwsn_parameter_Action)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private)
				CLASS_MEMBER_FIELD(__vwsn_prop_ButtonControl)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private)
				CLASS_MEMBER_FIELD(__vwsn_prop_Strings)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private)
				CLASS_MEMBER_PROPERTY_READONLY(Action, GetAction)
				CLASS_MEMBER_PROPERTY_EVENT_READONLY(ButtonControl, GetButtonControl, ButtonControlChanged)
				CLASS_MEMBER_PROPERTY_EVENT(Strings, GetStrings, SetStrings, StringsChanged)
			END_CLASS_MEMBER(::gaclib_controls::MessageBoxButtonTemplate)

			BEGIN_CLASS_MEMBER(::gaclib_controls::MessageBoxButtonTemplateConstructor)
				CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject)
				CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::gaclib_controls::MessageBoxButtonTemplateConstructor>(), NO_PARAMETER)
				CLASS_MEMBER_METHOD(__vwsn_gaclib_controls_MessageBoxButtonTemplate_Initialize, { L"__vwsn_this_" })
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_0)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(Action)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(buttonControl)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(self)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
			END_CLASS_MEMBER(::gaclib_controls::MessageBoxButtonTemplateConstructor)

			BEGIN_CLASS_MEMBER(::gaclib_controls::MessageBoxWindow)
				ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"gaclib_controls::MessageBoxWindowConstructor")))
				CLASS_MEMBER_BASE(::vl::presentation::controls::GuiWindow)
				CLASS_MEMBER_BASE(::gaclib_controls::MessageBoxWindowConstructor)
				CLASS_MEMBER_CONSTRUCTOR(::gaclib_controls::MessageBoxWindow*(::vl::Ptr<::vl::presentation::IMessageBoxDialogViewModel>), { L"__vwsn_ctor_parameter_ViewModel" })
				CLASS_MEMBER_METHOD(__vwsn_instance_ctor_, NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetIcon, { L"icon" })
				CLASS_MEMBER_METHOD(GetViewModel, NO_PARAMETER)
				CLASS_MEMBER_FIELD(__vwsn_parameter_ViewModel)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private)
				CLASS_MEMBER_PROPERTY_READONLY(ViewModel, GetViewModel)
			END_CLASS_MEMBER(::gaclib_controls::MessageBoxWindow)

			BEGIN_CLASS_MEMBER(::gaclib_controls::MessageBoxWindowConstructor)
				CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject)
				CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::gaclib_controls::MessageBoxWindowConstructor>(), NO_PARAMETER)
				CLASS_MEMBER_METHOD(__vwsn_gaclib_controls_MessageBoxWindow_Initialize, { L"__vwsn_this_" })
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_0)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_1)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_10)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_11)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_12)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_13)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_14)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_2)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_3)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_4)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_5)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_6)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_7)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_8)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_9)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(ViewModel)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(buttonStack)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(self)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
			END_CLASS_MEMBER(::gaclib_controls::MessageBoxWindowConstructor)

			BEGIN_CLASS_MEMBER(::gaclib_controls::SimpleFontDialogWindow)
				ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"gaclib_controls::SimpleFontDialogWindowConstructor")))
				CLASS_MEMBER_BASE(::vl::presentation::controls::GuiWindow)
				CLASS_MEMBER_BASE(::gaclib_controls::SimpleFontDialogWindowConstructor)
				CLASS_MEMBER_CONSTRUCTOR(::gaclib_controls::SimpleFontDialogWindow*(::vl::Ptr<::vl::presentation::ISimpleFontDialogViewModel>), { L"__vwsn_ctor_parameter_ViewModel" })
				CLASS_MEMBER_METHOD(__vwsn_instance_ctor_, NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetStrings, NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetViewModel, NO_PARAMETER)
				CLASS_MEMBER_METHOD(SetStrings, { L"__vwsn_value_" })
				CLASS_MEMBER_EVENT(StringsChanged)
				CLASS_MEMBER_FIELD(__vwsn_parameter_ViewModel)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private)
				CLASS_MEMBER_FIELD(__vwsn_prop_Strings)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private)
				CLASS_MEMBER_PROPERTY_EVENT(Strings, GetStrings, SetStrings, StringsChanged)
				CLASS_MEMBER_PROPERTY_READONLY(ViewModel, GetViewModel)
			END_CLASS_MEMBER(::gaclib_controls::SimpleFontDialogWindow)

			BEGIN_CLASS_MEMBER(::gaclib_controls::SimpleFontDialogWindowConstructor)
				CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject)
				CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::gaclib_controls::SimpleFontDialogWindowConstructor>(), NO_PARAMETER)
				CLASS_MEMBER_METHOD(__vwsn_gaclib_controls_SimpleFontDialogWindow_Initialize, { L"__vwsn_this_" })
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_0)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_1)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_10)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_11)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_12)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_13)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_14)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_15)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_16)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_17)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_18)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_19)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_2)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_3)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_4)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_5)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_6)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_7)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_8)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_9)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(ViewModel)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(nameControl)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(self)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(sizeControl)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
			END_CLASS_MEMBER(::gaclib_controls::SimpleFontDialogWindowConstructor)

#undef _
			class GuiFakeDialogServiceUITypeLoader : public Object, public ITypeLoader
			{
			public:
				void Load(ITypeManager* manager)
				{
					ADD_TYPE_INFO(::gaclib_controls::ColorComponentControl)
					ADD_TYPE_INFO(::gaclib_controls::ColorComponentControlConstructor)
					ADD_TYPE_INFO(::gaclib_controls::ColorDialogControl)
					ADD_TYPE_INFO(::gaclib_controls::ColorDialogControlConstructor)
					ADD_TYPE_INFO(::gaclib_controls::ColorDialogWindow)
					ADD_TYPE_INFO(::gaclib_controls::ColorDialogWindowConstructor)
					ADD_TYPE_INFO(::gaclib_controls::DialogStrings)
					ADD_TYPE_INFO(::gaclib_controls::FileDialogWindow)
					ADD_TYPE_INFO(::gaclib_controls::FileDialogWindowConstructor)
					ADD_TYPE_INFO(::gaclib_controls::FilePickerControl)
					ADD_TYPE_INFO(::gaclib_controls::FilePickerControlConstructor)
					ADD_TYPE_INFO(::gaclib_controls::FontNameControl)
					ADD_TYPE_INFO(::gaclib_controls::FontNameControlConstructor)
					ADD_TYPE_INFO(::gaclib_controls::FontSizeControl)
					ADD_TYPE_INFO(::gaclib_controls::FontSizeControlConstructor)
					ADD_TYPE_INFO(::gaclib_controls::FullFontDialogWindow)
					ADD_TYPE_INFO(::gaclib_controls::FullFontDialogWindowConstructor)
					ADD_TYPE_INFO(::gaclib_controls::IDialogStringsStrings)
					ADD_TYPE_INFO(::gaclib_controls::MessageBoxButtonTemplate)
					ADD_TYPE_INFO(::gaclib_controls::MessageBoxButtonTemplateConstructor)
					ADD_TYPE_INFO(::gaclib_controls::MessageBoxWindow)
					ADD_TYPE_INFO(::gaclib_controls::MessageBoxWindowConstructor)
					ADD_TYPE_INFO(::gaclib_controls::SimpleFontDialogWindow)
					ADD_TYPE_INFO(::gaclib_controls::SimpleFontDialogWindowConstructor)
				}

				void Unload(ITypeManager* manager)
				{
				}
			};
#endif
#endif

			bool LoadGuiFakeDialogServiceUITypes()
			{
#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA
				if (auto manager = GetGlobalTypeManager())
				{
					return manager->AddTypeLoader(Ptr(new GuiFakeDialogServiceUITypeLoader));
				}
#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

