Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
V
VIZ.TVP
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
刘龙飞
VIZ.TVP
Commits
39917ebe
Commit
39917ebe
authored
Dec 10, 2022
by
liulongfei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
viz嵌入
parent
dd91b9b9
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
155 additions
and
351 deletions
+155
-351
VIZ.TVP.Connection/Protocol/VIZ/VizEndpointManager.cs
+19
-8
VIZ.TVP.Domain/Model/TVPConnection/ITVPEndpointManager.cs
+14
-3
VIZ.TVP.Domain/Model/TVPConnection/TVPConnectionModel.cs
+29
-1
VIZ.TVP.Domain/VIZ.TVP.Domain.csproj
+5
-0
VIZ.TVP.Module/VIZ.TVP.Module.csproj
+0
-10
VIZ.TVP.Module/VizRender/Controller/VizController/VizController.cs
+25
-31
VIZ.TVP.Module/VizRender/View/VizRenderForm.Designer.cs
+0
-48
VIZ.TVP.Module/VizRender/View/VizRenderForm.cs
+0
-20
VIZ.TVP.Module/VizRender/View/VizRenderForm.resx
+0
-121
VIZ.TVP.Module/VizRender/View/VizRenderHost.cs
+0
-85
VIZ.TVP.Module/VizRender/View/VizRenderView.xaml
+7
-1
VIZ.TVP.Module/VizRender/ViewModel/VizRenderViewModel.cs
+34
-1
VIZ.TVP.sln
+22
-22
No files found.
VIZ.TVP.Connection/Protocol/VIZ/VizEndpointManager.cs
View file @
39917ebe
...
@@ -28,13 +28,19 @@ namespace VIZ.TVP.Connection
...
@@ -28,13 +28,19 @@ namespace VIZ.TVP.Connection
/// VIZ总结点管理器
/// VIZ总结点管理器
/// </summary>
/// </summary>
/// <param name="key">键</param>
/// <param name="key">键</param>
public
VizEndpointManager
(
string
key
)
/// <param name="remoteIP">IP地址</param>
/// <param name="remotePort">端口</param>
public
VizEndpointManager
(
string
key
,
string
remoteIP
,
int
remotePort
)
{
{
this
.
Key
=
key
;
this
.
Key
=
key
;
this
.
RemoteIP
=
remoteIP
;
this
.
RemotePort
=
remotePort
;
this
.
vizEnginePool
=
new
VizEnginePool
();
this
.
vizEnginePool
=
new
VizEnginePool
();
this
.
vizEnginePool
.
Connected
+=
VizEnginePool_Connected
;
this
.
vizEnginePool
.
Connected
+=
VizEnginePool_Connected
;
this
.
vizEnginePool
.
Disconnected
+=
VizEnginePool_Disconnected
;
this
.
vizEnginePool
.
Disconnected
+=
VizEnginePool_Disconnected
;
this
.
vizEnginePool
.
AddRenderer
(
remoteIP
,
remotePort
);
}
}
/// <summary>
/// <summary>
...
@@ -75,14 +81,9 @@ namespace VIZ.TVP.Connection
...
@@ -75,14 +81,9 @@ namespace VIZ.TVP.Connection
/// <summary>
/// <summary>
/// 连接
/// 连接
/// </summary>
/// </summary>
/// <param name="remoteIP">远程IP</param>
public
bool
Connect
()
/// <param name="remotePort">远程端口</param>
public
void
Connect
(
string
remoteIP
,
int
remotePort
)
{
{
this
.
RemoteIP
=
remoteIP
;
return
this
.
vizEnginePool
.
Connect
();
this
.
RemotePort
=
remotePort
;
this
.
vizEnginePool
.
AddRenderer
(
remoteIP
,
remotePort
);
this
.
vizEnginePool
.
Connect
();
}
}
/// <summary>
/// <summary>
...
@@ -103,6 +104,16 @@ namespace VIZ.TVP.Connection
...
@@ -103,6 +104,16 @@ namespace VIZ.TVP.Connection
}
}
/// <summary>
/// <summary>
/// 请求返回
/// </summary>
/// <param name="message">消息</param>
/// <returns>返回值</returns>
public
string
Request
(
string
message
)
{
return
this
.
vizEnginePool
.
Request
(
message
);
}
/// <summary>
/// 销毁
/// 销毁
/// </summary>
/// </summary>
public
void
Dispose
()
public
void
Dispose
()
...
...
VIZ.TVP.Domain/Model/TVPConnection/ITVPEndpointManager.cs
View file @
39917ebe
...
@@ -3,6 +3,7 @@ using System.Collections.Generic;
...
@@ -3,6 +3,7 @@ using System.Collections.Generic;
using
System.Linq
;
using
System.Linq
;
using
System.Text
;
using
System.Text
;
using
System.Threading.Tasks
;
using
System.Threading.Tasks
;
using
VIZ.Framework.Connection
;
namespace
VIZ.TVP.Domain
namespace
VIZ.TVP.Domain
{
{
...
@@ -12,11 +13,14 @@ namespace VIZ.TVP.Domain
...
@@ -12,11 +13,14 @@ namespace VIZ.TVP.Domain
public
interface
ITVPEndpointManager
:
IDisposable
public
interface
ITVPEndpointManager
:
IDisposable
{
{
/// <summary>
/// <summary>
/// 连接状态改变事件参数
/// </summary>
event
EventHandler
<
ConnectionStateChangedEventArgs
>
ConnectionStateChanged
;
/// <summary>
/// 连接
/// 连接
/// </summary>
/// </summary>
/// <param name="remoteIP">远程IP</param>
bool
Connect
();
/// <param name="remotePort">远程端口</param>
void
Connect
(
string
remoteIP
,
int
remotePort
);
/// <summary>
/// <summary>
/// 断开连接
/// 断开连接
...
@@ -28,5 +32,12 @@ namespace VIZ.TVP.Domain
...
@@ -28,5 +32,12 @@ namespace VIZ.TVP.Domain
/// </summary>
/// </summary>
/// <param name="message">消息</param>
/// <param name="message">消息</param>
void
Send
(
string
message
);
void
Send
(
string
message
);
/// <summary>
/// 请求返回
/// </summary>
/// <param name="message">消息</param>
/// <returns>返回值</returns>
string
Request
(
string
message
);
}
}
}
}
VIZ.TVP.Domain/Model/TVPConnection/TVPConnectionModel.cs
View file @
39917ebe
...
@@ -71,7 +71,23 @@ namespace VIZ.TVP.Domain
...
@@ -71,7 +71,23 @@ namespace VIZ.TVP.Domain
/// <summary>
/// <summary>
/// 连接终结点
/// 连接终结点
/// </summary>
/// </summary>
public
ITVPEndpointManager
EndpointManager
{
get
;
set
;
}
public
ITVPEndpointManager
EndpointManager
{
get
;
private
set
;
}
/// <summary>
/// 初始化终结点管理器
/// </summary>
/// <param name="endpointManager">终结点管理器</param>
public
void
InitEndpointManager
(
ITVPEndpointManager
endpointManager
)
{
if
(
this
.
EndpointManager
!=
null
)
{
this
.
EndpointManager
.
ConnectionStateChanged
-=
EndpointManager_ConnectionStateChanged
;
}
this
.
EndpointManager
=
endpointManager
;
this
.
EndpointManager
.
ConnectionStateChanged
-=
EndpointManager_ConnectionStateChanged
;
this
.
EndpointManager
.
ConnectionStateChanged
+=
EndpointManager_ConnectionStateChanged
;
}
/// <summary>
/// <summary>
/// 销毁
/// 销毁
...
@@ -81,5 +97,17 @@ namespace VIZ.TVP.Domain
...
@@ -81,5 +97,17 @@ namespace VIZ.TVP.Domain
this
.
EndpointManager
?.
Dispose
();
this
.
EndpointManager
?.
Dispose
();
this
.
EndpointManager
=
null
;
this
.
EndpointManager
=
null
;
}
}
/// <summary>
/// 终结点连接状态改变时触发
/// </summary>
private
void
EndpointManager_ConnectionStateChanged
(
object
sender
,
Framework
.
Connection
.
ConnectionStateChangedEventArgs
e
)
{
WPFHelper
.
BeginInvoke
(()
=>
{
this
.
IsConnected
=
e
.
IsConnected
;
});
}
}
}
}
}
VIZ.TVP.Domain/VIZ.TVP.Domain.csproj
View file @
39917ebe
...
@@ -67,6 +67,7 @@
...
@@ -67,6 +67,7 @@
<Reference Include="System.Data" />
<Reference Include="System.Data" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Xml" />
<Reference Include="System.Xml" />
<Reference Include="WindowsBase" />
</ItemGroup>
</ItemGroup>
<ItemGroup>
<ItemGroup>
<Compile Include="ApplicationDomainEx.cs" />
<Compile Include="ApplicationDomainEx.cs" />
...
@@ -89,6 +90,10 @@
...
@@ -89,6 +90,10 @@
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
</ItemGroup>
<ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\VIZ.Framework\VIZ.Framework.Connection\VIZ.Framework.Connection.csproj">
<Project>{e07528dd-9dee-47c2-b79d-235ecfa6b003}</Project>
<Name>VIZ.Framework.Connection</Name>
</ProjectReference>
<ProjectReference Include="..\..\VIZ.Framework\VIZ.Framework.Core\VIZ.Framework.Core.csproj">
<ProjectReference Include="..\..\VIZ.Framework\VIZ.Framework.Core\VIZ.Framework.Core.csproj">
<Project>{75b39591-4bc3-4b09-bd7d-ec9f67efa96e}</Project>
<Project>{75b39591-4bc3-4b09-bd7d-ec9f67efa96e}</Project>
<Name>VIZ.Framework.Core</Name>
<Name>VIZ.Framework.Core</Name>
...
...
VIZ.TVP.Module/VIZ.TVP.Module.csproj
View file @
39917ebe
...
@@ -160,17 +160,10 @@
...
@@ -160,17 +160,10 @@
<DesignTimeSharedInput>True</DesignTimeSharedInput>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
</Compile>
<Compile Include="Setup\Provider\Setup\AppSetup_InitLiteDB.cs" />
<Compile Include="Setup\Provider\Setup\AppSetup_InitLiteDB.cs" />
<Compile Include="VizRender\View\VizRenderForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="VizRender\View\VizRenderForm.Designer.cs">
<DependentUpon>VizRenderForm.cs</DependentUpon>
</Compile>
<Compile Include="VizRender\Controller\VizController\IVizSupport.cs" />
<Compile Include="VizRender\Controller\VizController\IVizSupport.cs" />
<Compile Include="VizRender\Controller\VizController\VizController.cs" />
<Compile Include="VizRender\Controller\VizController\VizController.cs" />
<Compile Include="VizRender\Model\VizConnectionModel.cs" />
<Compile Include="VizRender\Model\VizConnectionModel.cs" />
<Compile Include="VizRender\ViewModel\VizRenderViewModel.cs" />
<Compile Include="VizRender\ViewModel\VizRenderViewModel.cs" />
<Compile Include="VizRender\View\VizRenderHost.cs" />
<Compile Include="VizRender\VizRenderPluginLifeCycle.cs" />
<Compile Include="VizRender\VizRenderPluginLifeCycle.cs" />
<Compile Include="VizResource\Controller\VizResourceFile\IVizResourceFileSupport.cs" />
<Compile Include="VizResource\Controller\VizResourceFile\IVizResourceFileSupport.cs" />
<Compile Include="VizResource\Controller\VizResourceFile\VizResourceFileController.cs" />
<Compile Include="VizResource\Controller\VizResourceFile\VizResourceFileController.cs" />
...
@@ -187,9 +180,6 @@
...
@@ -187,9 +180,6 @@
<Generator>ResXFileCodeGenerator</Generator>
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
</EmbeddedResource>
</EmbeddedResource>
<EmbeddedResource Include="VizRender\View\VizRenderForm.resx">
<DependentUpon>VizRenderForm.cs</DependentUpon>
</EmbeddedResource>
<None Include="app.config" />
<None Include="app.config" />
<None Include="packages.config" />
<None Include="packages.config" />
<None Include="Properties\Settings.settings">
<None Include="Properties\Settings.settings">
...
...
VIZ.TVP.Module/VizRender/Controller/VizController/VizController.cs
View file @
39917ebe
...
@@ -9,6 +9,7 @@ using VIZ.Framework.Core;
...
@@ -9,6 +9,7 @@ using VIZ.Framework.Core;
using
VIZ.TVP.Connection
;
using
VIZ.TVP.Connection
;
using
VIZ.TVP.Domain
;
using
VIZ.TVP.Domain
;
using
VIZ.TVP.Storage
;
using
VIZ.TVP.Storage
;
using
static
DevExpress
.
Xpf
.
Core
.
HandleDecorator
.
Helpers
.
NativeMethods
;
namespace
VIZ.TVP.Module
namespace
VIZ.TVP.Module
{
{
...
@@ -42,30 +43,19 @@ namespace VIZ.TVP.Module
...
@@ -42,30 +43,19 @@ namespace VIZ.TVP.Module
public
Process
VizProcess
{
get
;
private
set
;
}
public
Process
VizProcess
{
get
;
private
set
;
}
/// <summary>
/// <summary>
/// VIZ渲染窗口
/// </summary>
public
VizRenderForm
VizRenderForm
{
get
;
private
set
;
}
/// <summary>
/// VIZ渲染窗口句柄
/// </summary>
public
IntPtr
VizRenderFormHandle
{
get
;
private
set
;
}
/// <summary>
/// 启动VIZ引擎
/// 启动VIZ引擎
/// </summary>
/// </summary>
/// <param name="view"></param>
/// <param name="config">引擎配置</param>
/// <param name="config">引擎配置</param>
/// <param name="
hWnd">渲染宿主句柄
</param>
/// <param name="
connectionModel">连接模型
</param>
public
void
StartVizEngine
(
TVPEngineConfig
config
,
IntPtr
hWnd
,
int
width
,
int
height
)
public
void
StartVizEngine
(
VizRenderView
view
,
TVPEngineConfig
config
,
TVPConnectionModel
connectionModel
)
{
{
this
.
Support
.
IsEngineReady
=
false
;
this
.
Support
.
IsEngineReady
=
false
;
// Step 2. 创建窗口
int
width
=
(
int
)
view
.
ActualWidth
;
this
.
VizRenderForm
=
new
VizRenderForm
();
int
height
=
(
int
)
view
.
ActualHeight
;
this
.
VizRenderForm
.
Show
();
IntPtr
hWnd
=
view
.
host
.
ContainerFormHandle
;
this
.
VizRenderFormHandle
=
this
.
VizRenderForm
.
Handle
;
IntPtr
vizHandle
=
IntPtr
.
Zero
;
VizRenderView
view
=
(
this
.
Support
as
VizRenderViewModel
).
GetView
<
VizRenderView
>();
view
.
host
.
VizRenderFormHandle
=
this
.
VizRenderFormHandle
;
ThreadHelper
.
SafeRun
(()
=>
ThreadHelper
.
SafeRun
(()
=>
{
{
...
@@ -78,23 +68,27 @@ namespace VIZ.TVP.Module
...
@@ -78,23 +68,27 @@ namespace VIZ.TVP.Module
this
.
VizProcess
.
StartInfo
.
WindowStyle
=
ProcessWindowStyle
.
Normal
;
this
.
VizProcess
.
StartInfo
.
WindowStyle
=
ProcessWindowStyle
.
Normal
;
this
.
VizProcess
.
Start
();
this
.
VizProcess
.
Start
();
// Step 2. 等待发送命令
// Step 2. 连接VIZ
TVPConnectionModel
connectionModel
=
new
TVPConnectionModel
();
do
connectionModel
.
ID
=
"test"
;
{
connectionModel
.
EndpointManager
=
new
VizEndpointManager
(
"test"
);
System
.
Threading
.
Thread
.
Sleep
(
1000
);
connectionModel
.
EndpointManager
.
Connect
(
"localhost"
,
6100
);
// Step 3. 发送渲染命令
}
while
(!
connectionModel
.
EndpointManager
.
Connect
());
string
cmd
=
$"RENDERER WINDOW_OPEN_ON_PARENT 0x
{
this
.
VizRenderFormHandle
.
ToString
(
"X6"
)}
{
width
}
{
height
}
ONAIR"
;
connectionModel
.
EndpointManager
.
Send
(
cmd
);
if
(
Win32Helper
.
SetParent
(
this
.
VizRenderFormHandle
,
hWnd
).
ToInt32
()
<=
0
)
// Step 3. 发送渲染命令
do
{
{
log
.
Error
(
"viz render set parent error."
);
System
.
Threading
.
Thread
.
Sleep
(
1000
);
}
string
cmd
=
$"RENDERER WINDOW_OPEN_ON_PARENT 0x
{
hWnd
.
ToString
(
"X6"
)}
{
width
}
{
height
}
ONAIR"
;
connectionModel
.
EndpointManager
.
Send
(
cmd
);
WPFHelper
.
Invoke
(()
=>
{
vizHandle
=
view
.
host
.
TargetWindowHandle
;
});
this
.
VizRenderForm
.
Left
=
0
;
}
while
(
vizHandle
==
IntPtr
.
Zero
);
this
.
VizRenderForm
.
Top
=
0
;
});
});
}
}
}
}
...
...
VIZ.TVP.Module/VizRender/View/VizRenderForm.Designer.cs
deleted
100644 → 0
View file @
dd91b9b9
namespace
VIZ.TVP.Module
{
partial
class
VizRenderForm
{
/// <summary>
/// Required designer variable.
/// </summary>
private
System
.
ComponentModel
.
IContainer
components
=
null
;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected
override
void
Dispose
(
bool
disposing
)
{
if
(
disposing
&&
(
components
!=
null
))
{
components
.
Dispose
();
}
base
.
Dispose
(
disposing
);
}
#
region
Windows
Form
Designer
generated
code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private
void
InitializeComponent
()
{
this
.
SuspendLayout
();
//
// VizRenderForm
//
this
.
AutoScaleDimensions
=
new
System
.
Drawing
.
SizeF
(
6F
,
12F
);
this
.
AutoScaleMode
=
System
.
Windows
.
Forms
.
AutoScaleMode
.
Font
;
this
.
ClientSize
=
new
System
.
Drawing
.
Size
(
800
,
450
);
this
.
FormBorderStyle
=
System
.
Windows
.
Forms
.
FormBorderStyle
.
None
;
this
.
Name
=
"VizRenderForm"
;
this
.
Text
=
"VizRenderForm"
;
this
.
ResumeLayout
(
false
);
}
#
endregion
}
}
\ No newline at end of file
VIZ.TVP.Module/VizRender/View/VizRenderForm.cs
deleted
100644 → 0
View file @
dd91b9b9
using
System
;
using
System.Collections.Generic
;
using
System.ComponentModel
;
using
System.Data
;
using
System.Drawing
;
using
System.Linq
;
using
System.Text
;
using
System.Threading.Tasks
;
using
System.Windows.Forms
;
namespace
VIZ.TVP.Module
{
public
partial
class
VizRenderForm
:
Form
{
public
VizRenderForm
()
{
InitializeComponent
();
}
}
}
VIZ.TVP.Module/VizRender/View/VizRenderForm.resx
deleted
100644 → 0
View file @
dd91b9b9
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>
\ No newline at end of file
VIZ.TVP.Module/VizRender/View/VizRenderHost.cs
deleted
100644 → 0
View file @
dd91b9b9
using
System
;
using
System.Collections.Generic
;
using
System.Linq
;
using
System.Text
;
using
System.Threading.Tasks
;
using
System.Windows
;
using
System.Windows.Controls
;
using
System.Windows.Forms.Integration
;
using
VIZ.Framework.Core
;
using
VIZ.TVP.Domain
;
namespace
VIZ.TVP.Module
{
/// <summary>
/// VIZ渲染容器
/// </summary>
public
class
VizRenderHost
:
Border
{
public
VizRenderHost
()
{
this
.
Loaded
+=
VizRenderHost_Loaded
;
}
/// <summary>
/// 获取容器句柄
/// </summary>
/// <returns>容器句柄</returns>
public
IntPtr
GetHostHandle
()
{
return
this
.
vizHost
.
Handle
;
}
/// <summary>
/// VIZ渲染窗口句柄
/// </summary>
public
IntPtr
VizRenderFormHandle
{
get
;
set
;
}
/// <summary>
/// 加载完成时触发
/// </summary>
private
void
VizRenderHost_Loaded
(
object
sender
,
System
.
Windows
.
RoutedEventArgs
e
)
{
ApplicationDomainEx
.
DelayManager
.
Wait
(
"VIZ.TVP.Module.VizRenderHost.VizRenderHost_Loaded"
,
2
,
()
=>
{
WPFHelper
.
BeginInvoke
(()
=>
{
//System.Drawing.Color bgColor = System.Drawing.Color.FromArgb(37, 37, 38);
System
.
Drawing
.
Color
bgColor
=
System
.
Drawing
.
Color
.
FromArgb
(
255
,
255
,
255
);
this
.
vizHost
=
new
System
.
Windows
.
Forms
.
Panel
();
this
.
vizHost
.
Dock
=
System
.
Windows
.
Forms
.
DockStyle
.
Fill
;
this
.
vizHost
.
BackColor
=
bgColor
;
this
.
windowsFormsHost
=
new
WindowsFormsHost
();
this
.
windowsFormsHost
.
Background
=
new
System
.
Windows
.
Media
.
SolidColorBrush
((
System
.
Windows
.
Media
.
Color
)
System
.
Windows
.
Media
.
ColorConverter
.
ConvertFromString
(
"#ff252526"
));
this
.
windowsFormsHost
.
Child
=
this
.
vizHost
;
this
.
windowsFormsHost
.
HorizontalAlignment
=
HorizontalAlignment
.
Stretch
;
this
.
windowsFormsHost
.
VerticalAlignment
=
VerticalAlignment
.
Stretch
;
this
.
Child
=
this
.
windowsFormsHost
;
IntPtr
hWind
=
this
.
vizHost
.
Handle
;
ApplicationDomainEx
.
LoopManager
.
Register
(
"VIZ.TVP.Module.VizRenderHost"
,
0.1
,
()
=>
{
IntPtr
vizWindow
=
Win32Helper
.
FindWindowEx
(
hWind
,
IntPtr
.
Zero
,
null
,
null
);
if
(
vizWindow
.
ToInt32
()
<=
0
)
{
Win32Helper
.
SetParent
(
this
.
VizRenderFormHandle
,
hWind
);
}
});
});
});
}
/// <summary>
/// WPF Winform 容器
/// </summary>
private
WindowsFormsHost
windowsFormsHost
;
/// <summary>
/// Viz 引擎容器
/// </summary>
private
System
.
Windows
.
Forms
.
Panel
vizHost
;
}
}
VIZ.TVP.Module/VizRender/View/VizRenderView.xaml
View file @
39917ebe
...
@@ -5,6 +5,7 @@
...
@@ -5,6 +5,7 @@
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:dxmvvm="http://schemas.devexpress.com/winfx/2008/xaml/mvvm"
xmlns:dxmvvm="http://schemas.devexpress.com/winfx/2008/xaml/mvvm"
xmlns:local="clr-namespace:VIZ.TVP.Module"
xmlns:local="clr-namespace:VIZ.TVP.Module"
xmlns:fcommon="clr-namespace:VIZ.Framework.Common;assembly=VIZ.Framework.Common"
d:DataContext="{d:DesignInstance Type=local:VizRenderViewModel}"
d:DataContext="{d:DesignInstance Type=local:VizRenderViewModel}"
mc:Ignorable="d"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800">
d:DesignHeight="450" d:DesignWidth="800">
...
@@ -22,6 +23,11 @@
...
@@ -22,6 +23,11 @@
<Button Width="120" Height="30" Content="嵌入Viz" Command="{Binding Path=TestCommand}"></Button>
<Button Width="120" Height="30" Content="嵌入Viz" Command="{Binding Path=TestCommand}"></Button>
</Border>
</Border>
<!-- VIZ引擎 -->
<!-- VIZ引擎 -->
<local:VizRenderHost x:Name="host" Grid.Row="1"></local:VizRenderHost>
<fcommon:WindowHost x:Name="host" Grid.Row="1" Background="#ff252526" BackColor="#ff252526">
<dxmvvm:Interaction.Behaviors>
<dxmvvm:EventToCommand PassEventArgsToCommand="True" EventName="SizeChanged"
Command="{Binding Path=WindowHostSizeChangedCommand}"></dxmvvm:EventToCommand>
</dxmvvm:Interaction.Behaviors>
</fcommon:WindowHost>
</Grid>
</Grid>
</UserControl>
</UserControl>
VIZ.TVP.Module/VizRender/ViewModel/VizRenderViewModel.cs
View file @
39917ebe
...
@@ -31,6 +31,8 @@ namespace VIZ.TVP.Module
...
@@ -31,6 +31,8 @@ namespace VIZ.TVP.Module
private
void
initCommand
()
private
void
initCommand
()
{
{
this
.
LoadedCommand
=
new
VCommand
(
this
.
Loaded
);
this
.
LoadedCommand
=
new
VCommand
(
this
.
Loaded
);
this
.
WindowHostSizeChangedCommand
=
new
VCommand
<
System
.
Windows
.
SizeChangedEventArgs
>(
this
.
WindowHostSizeChanged
);
this
.
TestCommand
=
new
VCommand
(
this
.
Test
);
this
.
TestCommand
=
new
VCommand
(
this
.
Test
);
}
}
...
@@ -96,6 +98,28 @@ namespace VIZ.TVP.Module
...
@@ -96,6 +98,28 @@ namespace VIZ.TVP.Module
#
endregion
#
endregion
#
region
WindowHostSizeChangedCommand
--
宿主容器大小改变命令
/// <summary>
/// 宿主容器大小改变命令
/// </summary>
public
VCommand
<
System
.
Windows
.
SizeChangedEventArgs
>
WindowHostSizeChangedCommand
{
get
;
set
;
}
/// <summary>
/// 宿主容器大小改变
/// </summary>
private
void
WindowHostSizeChanged
(
System
.
Windows
.
SizeChangedEventArgs
e
)
{
if
(
this
.
connectionModel
==
null
||
!
this
.
connectionModel
.
IsConnected
)
return
;
int
width
=
(
int
)
e
.
NewSize
.
Width
;
int
height
=
(
int
)
e
.
NewSize
.
Height
;
this
.
connectionModel
.
EndpointManager
.
Send
(
$"RENDERER WINDOW_RESIZE
{
width
}
{
height
}
"
);
}
#
endregion
#
region
TestCommand
--
测试命令
#
region
TestCommand
--
测试命令
/// <summary>
/// <summary>
...
@@ -120,10 +144,19 @@ namespace VIZ.TVP.Module
...
@@ -120,10 +144,19 @@ namespace VIZ.TVP.Module
// --------------------------------------------------------------------
// --------------------------------------------------------------------
this
.
vizController
.
StartVizEngine
(
config
,
view
.
host
.
GetHostHandle
(),
400
,
300
);
// Step 2. 等待发送命令
this
.
connectionModel
=
new
TVPConnectionModel
();
connectionModel
.
ID
=
"test"
;
connectionModel
.
InitEndpointManager
(
new
VizEndpointManager
(
"test"
,
"localhost"
,
6100
));
int
width
=
(
int
)
view
.
host
.
ActualWidth
;
int
height
=
(
int
)
view
.
host
.
ActualHeight
;
this
.
vizController
.
StartVizEngine
(
view
,
config
,
this
.
connectionModel
);
}
}
private
TVPConnectionModel
connectionModel
;
#
endregion
#
endregion
// ================================================================================
// ================================================================================
...
...
VIZ.TVP.sln
View file @
39917ebe
...
@@ -139,88 +139,88 @@ Global
...
@@ -139,88 +139,88 @@ Global
{D9E0C48D-D7E7-4207-A999-2FDED536D4DA}.Debug|x64.Build.0 = Debug|x64
{D9E0C48D-D7E7-4207-A999-2FDED536D4DA}.Debug|x64.Build.0 = Debug|x64
{D9E0C48D-D7E7-4207-A999-2FDED536D4DA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D9E0C48D-D7E7-4207-A999-2FDED536D4DA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D9E0C48D-D7E7-4207-A999-2FDED536D4DA}.Release|Any CPU.Build.0 = Release|Any CPU
{D9E0C48D-D7E7-4207-A999-2FDED536D4DA}.Release|Any CPU.Build.0 = Release|Any CPU
{D9E0C48D-D7E7-4207-A999-2FDED536D4DA}.Release|x64.ActiveCfg = Release|
Any CPU
{D9E0C48D-D7E7-4207-A999-2FDED536D4DA}.Release|x64.ActiveCfg = Release|
x64
{D9E0C48D-D7E7-4207-A999-2FDED536D4DA}.Release|x64.Build.0 = Release|
Any CPU
{D9E0C48D-D7E7-4207-A999-2FDED536D4DA}.Release|x64.Build.0 = Release|
x64
{65425CB5-7465-4E36-86A7-416341C8793C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{65425CB5-7465-4E36-86A7-416341C8793C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{65425CB5-7465-4E36-86A7-416341C8793C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{65425CB5-7465-4E36-86A7-416341C8793C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{65425CB5-7465-4E36-86A7-416341C8793C}.Debug|x64.ActiveCfg = Debug|x64
{65425CB5-7465-4E36-86A7-416341C8793C}.Debug|x64.ActiveCfg = Debug|x64
{65425CB5-7465-4E36-86A7-416341C8793C}.Debug|x64.Build.0 = Debug|x64
{65425CB5-7465-4E36-86A7-416341C8793C}.Debug|x64.Build.0 = Debug|x64
{65425CB5-7465-4E36-86A7-416341C8793C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{65425CB5-7465-4E36-86A7-416341C8793C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{65425CB5-7465-4E36-86A7-416341C8793C}.Release|Any CPU.Build.0 = Release|Any CPU
{65425CB5-7465-4E36-86A7-416341C8793C}.Release|Any CPU.Build.0 = Release|Any CPU
{65425CB5-7465-4E36-86A7-416341C8793C}.Release|x64.ActiveCfg = Release|
Any CPU
{65425CB5-7465-4E36-86A7-416341C8793C}.Release|x64.ActiveCfg = Release|
x64
{65425CB5-7465-4E36-86A7-416341C8793C}.Release|x64.Build.0 = Release|
Any CPU
{65425CB5-7465-4E36-86A7-416341C8793C}.Release|x64.Build.0 = Release|
x64
{C42E3144-2AD7-461B-80B8-491D69B3530E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C42E3144-2AD7-461B-80B8-491D69B3530E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C42E3144-2AD7-461B-80B8-491D69B3530E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C42E3144-2AD7-461B-80B8-491D69B3530E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C42E3144-2AD7-461B-80B8-491D69B3530E}.Debug|x64.ActiveCfg = Debug|x64
{C42E3144-2AD7-461B-80B8-491D69B3530E}.Debug|x64.ActiveCfg = Debug|x64
{C42E3144-2AD7-461B-80B8-491D69B3530E}.Debug|x64.Build.0 = Debug|x64
{C42E3144-2AD7-461B-80B8-491D69B3530E}.Debug|x64.Build.0 = Debug|x64
{C42E3144-2AD7-461B-80B8-491D69B3530E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C42E3144-2AD7-461B-80B8-491D69B3530E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C42E3144-2AD7-461B-80B8-491D69B3530E}.Release|Any CPU.Build.0 = Release|Any CPU
{C42E3144-2AD7-461B-80B8-491D69B3530E}.Release|Any CPU.Build.0 = Release|Any CPU
{C42E3144-2AD7-461B-80B8-491D69B3530E}.Release|x64.ActiveCfg = Release|
Any CPU
{C42E3144-2AD7-461B-80B8-491D69B3530E}.Release|x64.ActiveCfg = Release|
x64
{C42E3144-2AD7-461B-80B8-491D69B3530E}.Release|x64.Build.0 = Release|
Any CPU
{C42E3144-2AD7-461B-80B8-491D69B3530E}.Release|x64.Build.0 = Release|
x64
{D5E72447-D86A-443C-B0A4-E76BCA89AE8D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D5E72447-D86A-443C-B0A4-E76BCA89AE8D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D5E72447-D86A-443C-B0A4-E76BCA89AE8D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D5E72447-D86A-443C-B0A4-E76BCA89AE8D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D5E72447-D86A-443C-B0A4-E76BCA89AE8D}.Debug|x64.ActiveCfg = Debug|x64
{D5E72447-D86A-443C-B0A4-E76BCA89AE8D}.Debug|x64.ActiveCfg = Debug|x64
{D5E72447-D86A-443C-B0A4-E76BCA89AE8D}.Debug|x64.Build.0 = Debug|x64
{D5E72447-D86A-443C-B0A4-E76BCA89AE8D}.Debug|x64.Build.0 = Debug|x64
{D5E72447-D86A-443C-B0A4-E76BCA89AE8D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D5E72447-D86A-443C-B0A4-E76BCA89AE8D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D5E72447-D86A-443C-B0A4-E76BCA89AE8D}.Release|Any CPU.Build.0 = Release|Any CPU
{D5E72447-D86A-443C-B0A4-E76BCA89AE8D}.Release|Any CPU.Build.0 = Release|Any CPU
{D5E72447-D86A-443C-B0A4-E76BCA89AE8D}.Release|x64.ActiveCfg = Release|
Any CPU
{D5E72447-D86A-443C-B0A4-E76BCA89AE8D}.Release|x64.ActiveCfg = Release|
x64
{D5E72447-D86A-443C-B0A4-E76BCA89AE8D}.Release|x64.Build.0 = Release|
Any CPU
{D5E72447-D86A-443C-B0A4-E76BCA89AE8D}.Release|x64.Build.0 = Release|
x64
{FA5C5192-FEEB-45A1-96B8-ACD2588EFC41}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{FA5C5192-FEEB-45A1-96B8-ACD2588EFC41}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{FA5C5192-FEEB-45A1-96B8-ACD2588EFC41}.Debug|Any CPU.Build.0 = Debug|Any CPU
{FA5C5192-FEEB-45A1-96B8-ACD2588EFC41}.Debug|Any CPU.Build.0 = Debug|Any CPU
{FA5C5192-FEEB-45A1-96B8-ACD2588EFC41}.Debug|x64.ActiveCfg = Debug|x64
{FA5C5192-FEEB-45A1-96B8-ACD2588EFC41}.Debug|x64.ActiveCfg = Debug|x64
{FA5C5192-FEEB-45A1-96B8-ACD2588EFC41}.Debug|x64.Build.0 = Debug|x64
{FA5C5192-FEEB-45A1-96B8-ACD2588EFC41}.Debug|x64.Build.0 = Debug|x64
{FA5C5192-FEEB-45A1-96B8-ACD2588EFC41}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FA5C5192-FEEB-45A1-96B8-ACD2588EFC41}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FA5C5192-FEEB-45A1-96B8-ACD2588EFC41}.Release|Any CPU.Build.0 = Release|Any CPU
{FA5C5192-FEEB-45A1-96B8-ACD2588EFC41}.Release|Any CPU.Build.0 = Release|Any CPU
{FA5C5192-FEEB-45A1-96B8-ACD2588EFC41}.Release|x64.ActiveCfg = Release|
Any CPU
{FA5C5192-FEEB-45A1-96B8-ACD2588EFC41}.Release|x64.ActiveCfg = Release|
x64
{FA5C5192-FEEB-45A1-96B8-ACD2588EFC41}.Release|x64.Build.0 = Release|
Any CPU
{FA5C5192-FEEB-45A1-96B8-ACD2588EFC41}.Release|x64.Build.0 = Release|
x64
{4FB7774A-F781-4059-A3F5-FA45E1669F60}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4FB7774A-F781-4059-A3F5-FA45E1669F60}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4FB7774A-F781-4059-A3F5-FA45E1669F60}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4FB7774A-F781-4059-A3F5-FA45E1669F60}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4FB7774A-F781-4059-A3F5-FA45E1669F60}.Debug|x64.ActiveCfg = Debug|x64
{4FB7774A-F781-4059-A3F5-FA45E1669F60}.Debug|x64.ActiveCfg = Debug|x64
{4FB7774A-F781-4059-A3F5-FA45E1669F60}.Debug|x64.Build.0 = Debug|x64
{4FB7774A-F781-4059-A3F5-FA45E1669F60}.Debug|x64.Build.0 = Debug|x64
{4FB7774A-F781-4059-A3F5-FA45E1669F60}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4FB7774A-F781-4059-A3F5-FA45E1669F60}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4FB7774A-F781-4059-A3F5-FA45E1669F60}.Release|Any CPU.Build.0 = Release|Any CPU
{4FB7774A-F781-4059-A3F5-FA45E1669F60}.Release|Any CPU.Build.0 = Release|Any CPU
{4FB7774A-F781-4059-A3F5-FA45E1669F60}.Release|x64.ActiveCfg = Release|
Any CPU
{4FB7774A-F781-4059-A3F5-FA45E1669F60}.Release|x64.ActiveCfg = Release|
x64
{4FB7774A-F781-4059-A3F5-FA45E1669F60}.Release|x64.Build.0 = Release|
Any CPU
{4FB7774A-F781-4059-A3F5-FA45E1669F60}.Release|x64.Build.0 = Release|
x64
{4E7B7F05-B099-4E95-9FD3-64EEA5E2EBC5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4E7B7F05-B099-4E95-9FD3-64EEA5E2EBC5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4E7B7F05-B099-4E95-9FD3-64EEA5E2EBC5}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4E7B7F05-B099-4E95-9FD3-64EEA5E2EBC5}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4E7B7F05-B099-4E95-9FD3-64EEA5E2EBC5}.Debug|x64.ActiveCfg = Debug|x64
{4E7B7F05-B099-4E95-9FD3-64EEA5E2EBC5}.Debug|x64.ActiveCfg = Debug|x64
{4E7B7F05-B099-4E95-9FD3-64EEA5E2EBC5}.Debug|x64.Build.0 = Debug|x64
{4E7B7F05-B099-4E95-9FD3-64EEA5E2EBC5}.Debug|x64.Build.0 = Debug|x64
{4E7B7F05-B099-4E95-9FD3-64EEA5E2EBC5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4E7B7F05-B099-4E95-9FD3-64EEA5E2EBC5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4E7B7F05-B099-4E95-9FD3-64EEA5E2EBC5}.Release|Any CPU.Build.0 = Release|Any CPU
{4E7B7F05-B099-4E95-9FD3-64EEA5E2EBC5}.Release|Any CPU.Build.0 = Release|Any CPU
{4E7B7F05-B099-4E95-9FD3-64EEA5E2EBC5}.Release|x64.ActiveCfg = Release|
Any CPU
{4E7B7F05-B099-4E95-9FD3-64EEA5E2EBC5}.Release|x64.ActiveCfg = Release|
x64
{4E7B7F05-B099-4E95-9FD3-64EEA5E2EBC5}.Release|x64.Build.0 = Release|
Any CPU
{4E7B7F05-B099-4E95-9FD3-64EEA5E2EBC5}.Release|x64.Build.0 = Release|
x64
{75B858DF-C0AC-4B56-B109-5C21317AF0CE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{75B858DF-C0AC-4B56-B109-5C21317AF0CE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{75B858DF-C0AC-4B56-B109-5C21317AF0CE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{75B858DF-C0AC-4B56-B109-5C21317AF0CE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{75B858DF-C0AC-4B56-B109-5C21317AF0CE}.Debug|x64.ActiveCfg = Debug|x64
{75B858DF-C0AC-4B56-B109-5C21317AF0CE}.Debug|x64.ActiveCfg = Debug|x64
{75B858DF-C0AC-4B56-B109-5C21317AF0CE}.Debug|x64.Build.0 = Debug|x64
{75B858DF-C0AC-4B56-B109-5C21317AF0CE}.Debug|x64.Build.0 = Debug|x64
{75B858DF-C0AC-4B56-B109-5C21317AF0CE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{75B858DF-C0AC-4B56-B109-5C21317AF0CE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{75B858DF-C0AC-4B56-B109-5C21317AF0CE}.Release|Any CPU.Build.0 = Release|Any CPU
{75B858DF-C0AC-4B56-B109-5C21317AF0CE}.Release|Any CPU.Build.0 = Release|Any CPU
{75B858DF-C0AC-4B56-B109-5C21317AF0CE}.Release|x64.ActiveCfg = Release|
Any CPU
{75B858DF-C0AC-4B56-B109-5C21317AF0CE}.Release|x64.ActiveCfg = Release|
x64
{75B858DF-C0AC-4B56-B109-5C21317AF0CE}.Release|x64.Build.0 = Release|
Any CPU
{75B858DF-C0AC-4B56-B109-5C21317AF0CE}.Release|x64.Build.0 = Release|
x64
{39A3CDBE-2132-4C71-BF2F-F99A9E966109}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{39A3CDBE-2132-4C71-BF2F-F99A9E966109}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{39A3CDBE-2132-4C71-BF2F-F99A9E966109}.Debug|Any CPU.Build.0 = Debug|Any CPU
{39A3CDBE-2132-4C71-BF2F-F99A9E966109}.Debug|Any CPU.Build.0 = Debug|Any CPU
{39A3CDBE-2132-4C71-BF2F-F99A9E966109}.Debug|x64.ActiveCfg = Debug|x64
{39A3CDBE-2132-4C71-BF2F-F99A9E966109}.Debug|x64.ActiveCfg = Debug|x64
{39A3CDBE-2132-4C71-BF2F-F99A9E966109}.Debug|x64.Build.0 = Debug|x64
{39A3CDBE-2132-4C71-BF2F-F99A9E966109}.Debug|x64.Build.0 = Debug|x64
{39A3CDBE-2132-4C71-BF2F-F99A9E966109}.Release|Any CPU.ActiveCfg = Release|Any CPU
{39A3CDBE-2132-4C71-BF2F-F99A9E966109}.Release|Any CPU.ActiveCfg = Release|Any CPU
{39A3CDBE-2132-4C71-BF2F-F99A9E966109}.Release|Any CPU.Build.0 = Release|Any CPU
{39A3CDBE-2132-4C71-BF2F-F99A9E966109}.Release|Any CPU.Build.0 = Release|Any CPU
{39A3CDBE-2132-4C71-BF2F-F99A9E966109}.Release|x64.ActiveCfg = Release|
Any CPU
{39A3CDBE-2132-4C71-BF2F-F99A9E966109}.Release|x64.ActiveCfg = Release|
x64
{39A3CDBE-2132-4C71-BF2F-F99A9E966109}.Release|x64.Build.0 = Release|
Any CPU
{39A3CDBE-2132-4C71-BF2F-F99A9E966109}.Release|x64.Build.0 = Release|
x64
{B4FAA424-E356-465B-B0BA-7B915C4F8E2A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B4FAA424-E356-465B-B0BA-7B915C4F8E2A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B4FAA424-E356-465B-B0BA-7B915C4F8E2A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B4FAA424-E356-465B-B0BA-7B915C4F8E2A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B4FAA424-E356-465B-B0BA-7B915C4F8E2A}.Debug|x64.ActiveCfg = Debug|x64
{B4FAA424-E356-465B-B0BA-7B915C4F8E2A}.Debug|x64.ActiveCfg = Debug|x64
{B4FAA424-E356-465B-B0BA-7B915C4F8E2A}.Debug|x64.Build.0 = Debug|x64
{B4FAA424-E356-465B-B0BA-7B915C4F8E2A}.Debug|x64.Build.0 = Debug|x64
{B4FAA424-E356-465B-B0BA-7B915C4F8E2A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B4FAA424-E356-465B-B0BA-7B915C4F8E2A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B4FAA424-E356-465B-B0BA-7B915C4F8E2A}.Release|Any CPU.Build.0 = Release|Any CPU
{B4FAA424-E356-465B-B0BA-7B915C4F8E2A}.Release|Any CPU.Build.0 = Release|Any CPU
{B4FAA424-E356-465B-B0BA-7B915C4F8E2A}.Release|x64.ActiveCfg = Release|
Any CPU
{B4FAA424-E356-465B-B0BA-7B915C4F8E2A}.Release|x64.ActiveCfg = Release|
x64
{B4FAA424-E356-465B-B0BA-7B915C4F8E2A}.Release|x64.Build.0 = Release|
Any CPU
{B4FAA424-E356-465B-B0BA-7B915C4F8E2A}.Release|x64.Build.0 = Release|
x64
{18AC4721-CEF0-4D91-BE3A-65829313B2C7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{18AC4721-CEF0-4D91-BE3A-65829313B2C7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{18AC4721-CEF0-4D91-BE3A-65829313B2C7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{18AC4721-CEF0-4D91-BE3A-65829313B2C7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{18AC4721-CEF0-4D91-BE3A-65829313B2C7}.Debug|x64.ActiveCfg = Debug|x64
{18AC4721-CEF0-4D91-BE3A-65829313B2C7}.Debug|x64.ActiveCfg = Debug|x64
{18AC4721-CEF0-4D91-BE3A-65829313B2C7}.Debug|x64.Build.0 = Debug|x64
{18AC4721-CEF0-4D91-BE3A-65829313B2C7}.Debug|x64.Build.0 = Debug|x64
{18AC4721-CEF0-4D91-BE3A-65829313B2C7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{18AC4721-CEF0-4D91-BE3A-65829313B2C7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{18AC4721-CEF0-4D91-BE3A-65829313B2C7}.Release|Any CPU.Build.0 = Release|Any CPU
{18AC4721-CEF0-4D91-BE3A-65829313B2C7}.Release|Any CPU.Build.0 = Release|Any CPU
{18AC4721-CEF0-4D91-BE3A-65829313B2C7}.Release|x64.ActiveCfg = Release|
Any CPU
{18AC4721-CEF0-4D91-BE3A-65829313B2C7}.Release|x64.ActiveCfg = Release|
x64
{18AC4721-CEF0-4D91-BE3A-65829313B2C7}.Release|x64.Build.0 = Release|
Any CPU
{18AC4721-CEF0-4D91-BE3A-65829313B2C7}.Release|x64.Build.0 = Release|
x64
EndGlobalSection
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
HideSolutionNode = FALSE
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment