#ifndef VCZH_PRESENTATION_CONTROLS_GUIWINDOWCONTROLS
#define VCZH_PRESENTATION_CONTROLS_GUIWINDOWCONTROLS
#include "GuiBasicControls.h"
namespace
{
namespace
{
namespace
{
class
;
class
;
}
namespace
{
class
:
public
,
public
,
protected
,
public
<
>
{
friend
class
compositions
::
;
protected
:
compositions
::
*
;
::
=
::
;
virtual
void
();
virtual
void
();
protected
:
static
const
=
500
;
static
const
=
500
;
static
const
=
5000
;
<
>
;
<
>
;
;
bool
=
false
;
bool
=
false
;
controls
::
*
GetControlHostForInstance
()
override
;
*
(
);
void
(
*
,
);
void
(
const
&
)
override
;
void
()
override
;
void
()
override
;
void
()
override
;
void
()
override
;
void
()
override
;
void
()
override
;
void
()
override
;
void
()
override
;
void
()
override
;
void
(
bool
&
)
override
;
void
()
override
;
void
()
override
;
virtual
void
UpdateClientSizeAfterRendering
(
,
);
public
:
(
theme
::
,
::
);
();
compositions
::
;
compositions
::
;
compositions
::
;
compositions
::
;
compositions
::
;
compositions
::
;
compositions
::
;
compositions
::
;
void
DeleteAfterProcessingAllEvents
();
compositions
::
*
();
compositions
::
*
();
*
();
void
(
*
);
void
();
bool
()
override
;
void
(
bool
)
override
;
bool
()
override
;
void
();
bool
();
void
();
bool
();
void
(
bool
);
bool
();
void
(
bool
);
bool
();
void
(
bool
);
compositions
::
*
();
void
(
compositions
::
*
);
compositions
::
*
();
();
void
(
);
();
void
(
);
void
(
,
);
*
()
override
;
const
&
()
override
;
void
(
const
&
)
override
;
*
();
void
();
void
();
void
();
void
();
void
();
void
();
void
();
bool
();
};
class
:
public
,
protected
compositions
::
,
public
<
>
{
GUI_SPECIFY_CONTROL_TEMPLATE_TYPE(WindowTemplate, GuiControlHost)
public
:
using
=
templates
::
;
private
:
templates
::
*
=
nullptr
;
void
BeforeControlTemplateUninstalled_
();
void
AfterControlTemplateInstalled_
(
bool
);
protected
:
void
BeforeControlTemplateUninstalled
()
override
{
BeforeControlTemplateUninstalled_
();
::
BeforeControlTemplateUninstalled
(); }
void
AfterControlTemplateInstalled
(
bool
)
override
{
::
AfterControlTemplateInstalled
(
);
AfterControlTemplateInstalled_
(
); }
void
CheckAndStoreControlTemplate
(
templates
::
*
)
override
{
auto
=
dynamic_cast
<
templates
::
*>(
);
do
{
if
(!(
ct
))
throw
(
L"The assigned control template is not vl::presentation::templates::Gui"
L"WindowTemplate"
L"."
);}
while
(
0
);
=
ct
;
::
CheckAndStoreControlTemplate
(
); }
public
:
templates
::
*
TypedControlTemplateObject
(
bool
) {
if
(
) {
EnsureControlTemplateExists
(); }
return
; }
private
:
friend
class
;
protected
:
compositions
::
*
=
nullptr
;
bool
=
true
;
bool
=
true
;
bool
=
true
;
bool
=
true
;
bool
=
true
;
bool
=
true
;
<
>
;
void
(
*
,
templates
::
*
);
void
SyncNativeWindowProperties
();
void
()
override
;
void
()
override
;
void
()
override
;
void
()
override
;
void
(
compositions
::
*
,
compositions
::
&
);
void
(
compositions
::
*
,
compositions
::
&
);
(
theme
::
,
::
);
public
:
(
theme
::
);
();
*
(
const
&
)
override
;
compositions
::
;
void
();
void
(
*
);
bool
();
void
(
bool
);
bool
();
void
(
bool
);
bool
();
void
(
bool
);
bool
();
void
(
bool
);
bool
();
void
(
bool
);
<
>
();
void
(
<
>
);
bool
();
void
(
bool
);
void
(
*
,
const
<
void
()>&
);
void
(
*
,
const
<
void
()>&
);
<
reflection
::
description
::
>
(
*
);
};
class
:
public
,
public
<
>
{
protected
:
union
{
struct
{
;
* ; };
struct
{
* ;
* ;
;
bool
; };
struct
{
* ;
* ;
; };
struct
{
* ;
* ;
bool
; };
;
;
;
;
() {}
};
protected
:
= -
1
;
;
void
(
,
)
override
;
void
(
compositions
::
* ,
compositions
::
& );
void
(
compositions
::
* ,
compositions
::
& );
void
(
compositions
::
* ,
compositions
::
& );
static
bool
(
,
,
* );
static
(
,
,
* );
static
(
,
* ,
* ,
,
bool
);
static
(
,
* ,
* ,
);
static
(
,
* ,
* ,
bool
);
static
(
,
,
const
& );
void
();
(
theme
::
,
::
);
public
:
(
theme
::
);
();
bool
(
);
void
(
,
* =
0
);
void
(
* ,
,
bool
);
void
(
* ,
);
void
(
* ,
bool
);
};
class
:
public
,
private
INativeControllerListener
,
public
<
>
{
protected
:
*
=
nullptr
;
void
()
override
;
void
(
compositions
::
*
,
compositions
::
&
);
void
(
compositions
::
*
,
compositions
::
&
);
public
:
(
theme
::
);
();
();
void
(
);
*
GetTemporaryContentControl
();
void
SetTemporaryContentControl
(
*
);
};
}
}
}
#endif