From 4d81851df4c2715f7df832a2cb9cf79d9cf7406d Mon Sep 17 00:00:00 2001
From: Sebastiii <sebastiii@team-mediaportal.com>
Date: Sun, 23 Mar 2014 18:58:07 +0100
Subject: [PATCH 1/2] Fork : Tag 1.0.0.4 + Nevcariel (addon) Fix Display
 Enumeration Implement Live-Input through
 DesktopDuplication API (Windows 8 and above) Increase
 image size and zone count Prevent a crash when exiting
 while the settings window is open.

---
 AtmoDefs.h                             |   4 +-
 AtmoDesktopDuplicationCaptureInput.cpp | 237 ++++++++
 AtmoDesktopDuplicationCaptureInput.h   |  55 ++
 AtmoTools.cpp                          |   3 +-
 AtmoWinA.vcxproj                       | 960 +++++++++++++++++----------------
 AtmoWinA.vcxproj.filters               | 928 +++++++++++++++----------------
 AtmoWinTrayIconHandler.cpp             | 871 +++++++++++++++---------------
 AtmoWinTrayIconHandler.h               |   1 +
 dlldata.c                              |  37 ++
 9 files changed, 1719 insertions(+), 1377 deletions(-)
 create mode 100644 AtmoDesktopDuplicationCaptureInput.cpp
 create mode 100644 AtmoDesktopDuplicationCaptureInput.h
 create mode 100644 dlldata.c

diff --git a/AtmoDefs.h b/AtmoDefs.h
index 7906137..9f74f84 100644
--- a/AtmoDefs.h
+++ b/AtmoDefs.h
@@ -88,8 +88,8 @@ typedef struct
 // #define CAP_WIDTH    88
 
 #ifdef CAP_16x9
-# define CAP_WIDTH    88
-# define CAP_HEIGHT   48
+# define CAP_WIDTH    480
+# define CAP_HEIGHT   270
 #else
 # define CAP_WIDTH  64 //  46  // 128
 # define CAP_HEIGHT  48 // 26  // 64
diff --git a/AtmoDesktopDuplicationCaptureInput.cpp b/AtmoDesktopDuplicationCaptureInput.cpp
new file mode 100644
index 0000000..555f322
--- /dev/null
+++ b/AtmoDesktopDuplicationCaptureInput.cpp
@@ -0,0 +1,237 @@
+
+#include "stdafx.h"
+#include "AtmoDesktopDuplicationCaptureInput.h"
+
+#pragma comment( lib, "dxgi" )
+#pragma comment( lib, "d3d11" )
+
+template <class T> void SafeRelease(T **ppT)
+{
+    if (*ppT)
+    {
+        (*ppT)->Release();
+        *ppT = nullptr;
+    }
+}
+
+static inline int divRoundClosest(const UINT n, const UINT d)
+{
+    return ((n + d / 2) / d);
+}
+
+CAtmoDesktopDuplicationCaptureInput::CAtmoDesktopDuplicationCaptureInput(CAtmoDynData *pAtmoDynData)
+ : CAtmoInput(pAtmoDynData)
+ , m_pOutput(NULL)
+ , m_pOutputDuplication(NULL)
+ , m_pD3D11Device(NULL)
+ , m_pD3D11DeviceContext(NULL)
+ , m_pTexture(NULL)
+ , m_bThreadStarted(false)
+{
+}
+
+CAtmoDesktopDuplicationCaptureInput::~CAtmoDesktopDuplicationCaptureInput(void)
+{
+    SafeRelease(&m_pOutputDuplication);
+    SafeRelease(&m_pOutput);
+    SafeRelease(&m_pTexture);
+    SafeRelease(&m_pD3D11Device);
+    SafeRelease(&m_pD3D11DeviceContext);
+}
+
+ATMO_BOOL CAtmoDesktopDuplicationCaptureInput::Open()
+{
+    HRESULT hr = S_OK;
+    CAtmoConfig *pAtmoConfig = m_pAtmoDynData->getAtmoConfig();
+    CAtmoDisplays *pAtmoDisplays = m_pAtmoDynData->getAtmoDisplays();
+
+    // clear temp hsv image
+    memset(&HSV_Img, 0, IMAGE_SIZE * sizeof(tHSVColor));
+
+    int displayNr = pAtmoConfig->getLiveView_DisplayNr();
+    if (displayNr >= pAtmoDisplays->getCount())
+        displayNr = 0; // drop back to display 0 ;-)
+    TAtmoDisplayInfo displayInfo = pAtmoDisplays->getDisplayInfo(displayNr);
+
+    IDXGIAdapter1 *pAdapter = NULL;
+    GetOutput(displayInfo.vert_ScreenPos, displayInfo.horz_ScreenPos, &m_pOutput, &pAdapter);
+    if (m_pOutput == NULL) {
+        goto done;
+    }
+    
+    DXGI_OUTPUT_DESC outputDesc;
+    m_pOutput->GetDesc(&outputDesc);
+
+    m_lWidth = outputDesc.DesktopCoordinates.right - outputDesc.DesktopCoordinates.left;
+    m_lHeight = outputDesc.DesktopCoordinates.bottom - outputDesc.DesktopCoordinates.top;
+
+    ID3D11DeviceContext *pContext = NULL;
+    D3D_FEATURE_LEVEL Level;
+    hr = D3D11CreateDevice(pAdapter, D3D_DRIVER_TYPE_UNKNOWN, NULL, 0, NULL, 0, D3D11_SDK_VERSION, &m_pD3D11Device, &Level, &m_pD3D11DeviceContext);
+    if (FAILED(hr)) {
+        goto done;
+    }
+
+    D3D11_TEXTURE2D_DESC TextureDesc;
+    ZeroMemory(&TextureDesc, sizeof(TextureDesc));
+    TextureDesc.ArraySize = 1;
+    TextureDesc.CPUAccessFlags = D3D11_CPU_ACCESS_READ;
+    TextureDesc.Format = DXGI_FORMAT_B8G8R8A8_UNORM;
+    TextureDesc.Width = m_lWidth;
+    TextureDesc.Height = m_lHeight;
+    TextureDesc.MipLevels = 1;
+    TextureDesc.SampleDesc.Count = 1;
+    TextureDesc.Usage = D3D11_USAGE_STAGING;    
+
+    hr = m_pD3D11Device->CreateTexture2D(&TextureDesc, NULL, &m_pTexture);
+    if (FAILED(hr)) {
+        goto done;
+    }
+
+    hr = m_pOutput->DuplicateOutput(m_pD3D11Device, &m_pOutputDuplication);
+    if (FAILED(hr)) {
+        goto done;
+    }
+    
+    Run();
+    m_bThreadStarted = true;
+done:
+    SafeRelease(&pAdapter);
+    return true;
+}
+
+ATMO_BOOL CAtmoDesktopDuplicationCaptureInput::Close()
+{
+    if (m_bThreadStarted)
+        Terminate();
+    SafeRelease(&m_pOutputDuplication);
+    SafeRelease(&m_pOutput);
+
+    SafeRelease(&m_pTexture);
+    SafeRelease(&m_pD3D11Device);
+    SafeRelease(&m_pD3D11DeviceContext);
+    return true;
+}
+
+void CAtmoDesktopDuplicationCaptureInput::ReadImage(BYTE *pData, UINT Stride)
+{
+    tRGBColor pixelColor;
+    int index = 0;
+    // TODO: Do Bilinear scaling to the CAP_HEIGHT/CAP_WIDTH size instead of point-scaling
+    // Note: All the - 1 below can then go, as they are kludges to get to the border of the screen, and not a few pixels before
+    // and line/col then define the start of the area of the image which should be averaged
+    for(UINT y = 0; y < CAP_HEIGHT; y++)
+    {
+        UINT line = divRoundClosest((m_lHeight - 1) * y, CAP_HEIGHT - 1);
+        BYTE *pLine = pData + line * Stride;
+        for (UINT x = 0; x < CAP_WIDTH; x++)
+        {
+            UINT col = divRoundClosest((m_lWidth - 1) * x, CAP_WIDTH - 1);
+            pixelColor.b = *(pLine + col * 4 + 0);
+            pixelColor.g = *(pLine + col * 4 + 1);
+            pixelColor.r = *(pLine + col * 4 + 2);
+            HSV_Img[index++] = RGB2HSV(pixelColor);
+        }
+    }
+
+    m_pAtmoDynData->getLivePacketQueue()->AddPacket( m_pAtmoColorCalculator->AnalyzeHSV( HSV_Img ) );
+}
+
+DWORD CAtmoDesktopDuplicationCaptureInput::Execute(void)
+{
+    HRESULT hr = S_OK;
+    DXGI_OUTDUPL_FRAME_INFO FrameInfo;
+    IDXGIResource *pDesktopResource = NULL;
+    while (m_bTerminated == ATMO_FALSE)
+    {
+        hr = m_pOutputDuplication->AcquireNextFrame(1000, &FrameInfo, &pDesktopResource);
+        if (SUCCEEDED(hr)) {
+            if (FrameInfo.AccumulatedFrames > 0) {
+                ID3D11Texture2D *pDesktopResource2D = NULL;
+                hr = pDesktopResource->QueryInterface(&pDesktopResource2D);
+                if (SUCCEEDED(hr)) {
+                    m_pD3D11DeviceContext->CopyResource(m_pTexture, pDesktopResource2D);
+
+                    D3D11_MAPPED_SUBRESOURCE MappedResource;
+                    hr = m_pD3D11DeviceContext->Map(m_pTexture, 0, D3D11_MAP_READ, 0, &MappedResource);
+                    if (SUCCEEDED(hr)) {
+                        ReadImage((BYTE *)MappedResource.pData, MappedResource.RowPitch);
+                        m_pD3D11DeviceContext->Unmap(m_pTexture, 0);
+                    }
+                    SafeRelease(&pDesktopResource2D);
+                }
+            }
+
+            SafeRelease(&pDesktopResource);
+            m_pOutputDuplication->ReleaseFrame();
+        } else {
+            if (hr == DXGI_ERROR_ACCESS_LOST) {
+                SafeRelease(&m_pOutputDuplication);
+                hr = m_pOutput->DuplicateOutput(m_pD3D11Device, &m_pOutputDuplication);
+                if (FAILED(hr)) {
+                    return 1;
+                }
+            } else if (hr == DXGI_ERROR_WAIT_TIMEOUT) {
+                // Moo!
+            } else {
+                // Error?
+            }
+        }
+    }
+
+    return 0;
+}
+
+HRESULT CAtmoDesktopDuplicationCaptureInput::GetOutput(LONG vertPos, LONG horzPost, IDXGIOutput1 **ppOutput1, IDXGIAdapter1 **ppAdapter1)
+{
+    HRESULT hr = S_OK;
+    IDXGIFactory1 * pFactory = NULL;
+    hr = CreateDXGIFactory1(__uuidof(IDXGIFactory1), (void**)(&pFactory));
+    if (FAILED(hr)) {
+        return false;
+    }
+
+    UINT i = 0;
+    IDXGIAdapter1 * pAdapter;
+    while (pFactory->EnumAdapters1(i, &pAdapter) != DXGI_ERROR_NOT_FOUND && !(*ppOutput1))
+    {
+        UINT j = 0;
+        IDXGIOutput * pOutput = NULL;
+        while (pAdapter->EnumOutputs(j, &pOutput) != DXGI_ERROR_NOT_FOUND)
+        {
+            DXGI_OUTPUT_DESC desc;
+            if (SUCCEEDED(pOutput->GetDesc(&desc)) && desc.AttachedToDesktop) {
+                if (desc.DesktopCoordinates.top == vertPos && desc.DesktopCoordinates.left == horzPost) {
+                    if (SUCCEEDED(pOutput->QueryInterface(ppOutput1))) {
+                        *ppAdapter1 = pAdapter;
+                        (*ppAdapter1)->AddRef();
+                    }
+                    break;
+                }
+            }
+            SafeRelease(&pOutput);
+            j++;
+        }
+        SafeRelease(&pAdapter);
+        i++;
+    }
+
+    if (*ppOutput1 == NULL) {
+        pFactory->EnumAdapters1(0, &pAdapter);
+        if (pAdapter) {
+            IDXGIOutput * pOutput = NULL;
+            pAdapter->EnumOutputs(0, &pOutput);
+            if (pOutput) {
+                if (SUCCEEDED(pOutput->QueryInterface(ppOutput1))) {
+                    *ppAdapter1 = pAdapter;
+                    (*ppAdapter1)->AddRef();
+                }
+            }
+            SafeRelease(&pOutput);
+        }
+        SafeRelease(&pAdapter);
+    }
+
+    pFactory->Release();
+    return S_OK;
+}
diff --git a/AtmoDesktopDuplicationCaptureInput.h b/AtmoDesktopDuplicationCaptureInput.h
new file mode 100644
index 0000000..dc3f041
--- /dev/null
+++ b/AtmoDesktopDuplicationCaptureInput.h
@@ -0,0 +1,55 @@
+/*
+ * AtmoGdiDisplayCaptureInput.h: Implements the picture source which grabs the desktop as source for the live view mode
+ * poor performance ... through some GDI unsolved problems, if there are overlays active or some other applications...
+ *
+ * See the README.txt file for copyright information and how to reach the author(s).
+ *
+ * $Id$
+ */
+#pragma once
+#include "atmoinput.h"
+#include "atmothread.h"
+#include "atmoconfig.h"
+#include "AtmoCalculations.h"
+#include "AtmoDisplays.h"
+
+#include <dxgi.h>
+#include <DXGI1_2.h>
+#include <D3D11.h>
+
+class CAtmoDesktopDuplicationCaptureInput : public CAtmoInput
+{
+protected:
+   	virtual DWORD Execute(void);
+
+private:
+    HRESULT GetOutput(LONG vertPos, LONG horzPost, IDXGIOutput1 **pOutput1, IDXGIAdapter1 **pAdapter1);
+    void ReadImage(BYTE *pData, UINT Stride);
+
+private:
+    tHSVColor HSV_Img[IMAGE_SIZE];
+
+    IDXGIOutput1 *m_pOutput;
+    IDXGIOutputDuplication *m_pOutputDuplication;
+    ID3D11Device *m_pD3D11Device;
+    ID3D11DeviceContext *m_pD3D11DeviceContext;
+
+    ID3D11Texture2D *m_pTexture;
+
+    LONG m_lWidth;
+    LONG m_lHeight;
+
+    bool m_bThreadStarted;
+
+public:
+    CAtmoDesktopDuplicationCaptureInput(CAtmoDynData *pAtmoDynData);
+    virtual ~CAtmoDesktopDuplicationCaptureInput(void);
+
+    // Opens the input-device. Parameters (e.g. the device-name) can be given in 'param'.
+    // Returns true if the input-device was opened successfully.
+    virtual ATMO_BOOL Open(void);
+
+    // Closes the input-device.
+    // Returns true if the input-device was closed successfully.
+    virtual ATMO_BOOL Close(void);
+};
diff --git a/AtmoTools.cpp b/AtmoTools.cpp
index 338ec3f..7c89fde 100644
--- a/AtmoTools.cpp
+++ b/AtmoTools.cpp
@@ -31,6 +31,7 @@
 #   include "MondolightConnection.h"
 
 #   include "AtmoGdiDisplayCaptureInput.h"
+#   include "AtmoDesktopDuplicationCaptureInput.h"
 #endif
 
 
@@ -187,7 +188,7 @@ EffectMode CAtmoTools::SwitchEffect(CAtmoDynData *pDynData, EffectMode newEffect
                 }
                 currentPacketQueue = new CAtmoPacketQueue(packetMon);
                 pDynData->setLivePictureSource(lpsScreenCapture);
-                currentInput = new CAtmoGdiDisplayCaptureInput( pDynData );
+                currentInput = new CAtmoDesktopDuplicationCaptureInput(pDynData);
 #else
                 currentPacketQueue = new CAtmoPacketQueue();
                 pDynData->setLivePictureSource(lpsExtern);
diff --git a/AtmoWinA.vcxproj b/AtmoWinA.vcxproj
index a54b0a1..22d670b 100644
--- a/AtmoWinA.vcxproj
+++ b/AtmoWinA.vcxproj
@@ -1,480 +1,482 @@
-﻿<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release_16x9|Win32">
-      <Configuration>Release_16x9</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Template|Win32">
-      <Configuration>Template</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{70294792-414F-437A-8275-AD605D54D690}</ProjectGuid>
-    <RootNamespace>AtmoWinA</RootNamespace>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_16x9|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <UseOfAtl>false</UseOfAtl>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v110_xp</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <UseOfAtl>false</UseOfAtl>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v110_xp</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <UseOfAtl>false</UseOfAtl>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v110_xp</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Template|Win32'">
-    <PlatformToolset>v110</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_16x9|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release_16x9|Win32'">$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release_16x9|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release_16x9|Win32'">false</LinkIncremental>
-    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
-    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
-    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
-    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release_16x9|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
-    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release_16x9|Win32'" />
-    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release_16x9|Win32'" />
-    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
-    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
-    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
-    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Template|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
-    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Template|Win32'" />
-    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Template|Win32'" />
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <GenerateManifest>false</GenerateManifest>
-    <EmbedManifest>false</EmbedManifest>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <GenerateManifest>false</GenerateManifest>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-      <AdditionalIncludeDirectories>d:\dev\libconfig-1.4.9\Debug\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>Comctl32.lib;Winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>$(OutDir)AtmoWinA.exe</OutputFile>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>$(OutDir)AtmoWinA.pdb</ProgramDatabaseFile>
-      <SubSystem>Windows</SubSystem>
-      <TargetMachine>MachineX86</TargetMachine>
-      <Version>1,0,0,2</Version>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <PrecompiledHeader>Use</PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>Comctl32.lib;Winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>$(OutDir)AtmoWinA.exe</OutputFile>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Windows</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <TargetMachine>MachineX86</TargetMachine>
-      <ForceFileOutput>
-      </ForceFileOutput>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_16x9|Win32'">
-    <ClCompile>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;CAP_16x9;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <PrecompiledHeader>Use</PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>Comctl32.lib;Winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>$(OutDir)AtmoWinA.exe</OutputFile>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Windows</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="AtmoRes.cpp">
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-      </PrecompiledHeader>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release_16x9|Win32'">
-      </PrecompiledHeader>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-      </PrecompiledHeader>
-    </ClCompile>
-    <ClCompile Include="AtmoTools.cpp">
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-      </PrecompiledHeader>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release_16x9|Win32'">
-      </PrecompiledHeader>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-      </PrecompiledHeader>
-    </ClCompile>
-    <ClCompile Include="AtmoWin_i.c">
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-      </PrecompiledHeader>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release_16x9|Win32'">
-      </PrecompiledHeader>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-      </PrecompiledHeader>
-    </ClCompile>
-    <ClCompile Include="AtmoWinA.cpp" />
-    <ClCompile Include="AtmoWinTrayIconHandler.cpp" />
-    <ClCompile Include="DmxTools.cpp">
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-      </PrecompiledHeader>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release_16x9|Win32'">
-      </PrecompiledHeader>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-      </PrecompiledHeader>
-    </ClCompile>
-    <ClCompile Include="Language.cpp" />
-    <ClCompile Include="stdafx.cpp">
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release_16x9|Win32'">Create</PrecompiledHeader>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
-    </ClCompile>
-    <ClCompile Include="AtmoRegistry.cpp" />
-    <ClCompile Include="AtmoThread.cpp">
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-      </PrecompiledHeader>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release_16x9|Win32'">
-      </PrecompiledHeader>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-      </PrecompiledHeader>
-    </ClCompile>
-    <ClCompile Include="BasicDialog.cpp" />
-    <ClCompile Include="BasicWindow.cpp" />
-    <ClCompile Include="AtmoClassicConfigDialog.cpp" />
-    <ClCompile Include="AtmoColorPicker.cpp" />
-    <ClCompile Include="AtmoCustomColorPicker.cpp" />
-    <ClCompile Include="AtmoEditChannelAssignment.cpp" />
-    <ClCompile Include="AtmoGradients.cpp" />
-    <ClCompile Include="AtmoMultiConfigDialog.cpp" />
-    <ClCompile Include="AtmoSettingsDialog.cpp" />
-    <ClCompile Include="AtmoWhiteAdjHW.cpp" />
-    <ClCompile Include="AtmoWhiteSetup.cpp" />
-    <ClCompile Include="DmxConfigDialog.cpp" />
-    <ClCompile Include="FnordlichtConfigDialog.cpp" />
-    <ClCompile Include="InfoDialog.cpp" />
-    <ClCompile Include="MoMoConfigDialog.cpp" />
-    <ClCompile Include="AtmoCalculations.cpp">
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-      </PrecompiledHeader>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release_16x9|Win32'">
-      </PrecompiledHeader>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-      </PrecompiledHeader>
-    </ClCompile>
-    <ClCompile Include="AtmoExternalCaptureInput.cpp">
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-      </PrecompiledHeader>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release_16x9|Win32'">
-      </PrecompiledHeader>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-      </PrecompiledHeader>
-    </ClCompile>
-    <ClCompile Include="AtmoGdiDisplayCaptureInput.cpp" />
-    <ClCompile Include="AtmoInput.cpp">
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-      </PrecompiledHeader>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release_16x9|Win32'">
-      </PrecompiledHeader>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-      </PrecompiledHeader>
-    </ClCompile>
-    <ClCompile Include="AtmoBasicEffect.cpp" />
-    <ClCompile Include="AtmoColorChanger.cpp" />
-    <ClCompile Include="AtmoLeftRightColorChanger.cpp" />
-    <ClCompile Include="AtmoLiveView.cpp">
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-      </PrecompiledHeader>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release_16x9|Win32'">
-      </PrecompiledHeader>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-      </PrecompiledHeader>
-    </ClCompile>
-    <ClCompile Include="AtmoLiveViewControlImpl.cpp" />
-    <ClCompile Include="AtmoOutputFilter.cpp">
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-      </PrecompiledHeader>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release_16x9|Win32'">
-      </PrecompiledHeader>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-      </PrecompiledHeader>
-    </ClCompile>
-    <ClCompile Include="AtmoPacketQueue.cpp">
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-      </PrecompiledHeader>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release_16x9|Win32'">
-      </PrecompiledHeader>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-      </PrecompiledHeader>
-    </ClCompile>
-    <ClCompile Include="AtmoPacketQueueStatus.cpp" />
-    <ClCompile Include="AtmoRemoteControlImplEx.cpp" />
-    <ClCompile Include="AtmoChannelAssignment.cpp">
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-      </PrecompiledHeader>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release_16x9|Win32'">
-      </PrecompiledHeader>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-      </PrecompiledHeader>
-    </ClCompile>
-    <ClCompile Include="AtmoComRegistry.cpp" />
-    <ClCompile Include="AtmoConfig.cpp">
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-      </PrecompiledHeader>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release_16x9|Win32'">
-      </PrecompiledHeader>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-      </PrecompiledHeader>
-    </ClCompile>
-    <ClCompile Include="AtmoDisplays.cpp" />
-    <ClCompile Include="AtmoDynData.cpp">
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-      </PrecompiledHeader>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release_16x9|Win32'">
-      </PrecompiledHeader>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-      </PrecompiledHeader>
-    </ClCompile>
-    <ClCompile Include="AtmoRegistryConfig.cpp" />
-    <ClCompile Include="AtmoZoneDefinition.cpp">
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-      </PrecompiledHeader>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release_16x9|Win32'">
-      </PrecompiledHeader>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-      </PrecompiledHeader>
-    </ClCompile>
-    <ClCompile Include="AtmoClassicConnection.cpp">
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-      </PrecompiledHeader>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release_16x9|Win32'">
-      </PrecompiledHeader>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-      </PrecompiledHeader>
-    </ClCompile>
-    <ClCompile Include="AtmoConnection.cpp">
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-      </PrecompiledHeader>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release_16x9|Win32'">
-      </PrecompiledHeader>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-      </PrecompiledHeader>
-    </ClCompile>
-    <ClCompile Include="AtmoDmxSerialConnection.cpp">
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-      </PrecompiledHeader>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release_16x9|Win32'">
-      </PrecompiledHeader>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-      </PrecompiledHeader>
-    </ClCompile>
-    <ClCompile Include="AtmoDummyConnection.cpp" />
-    <ClCompile Include="AtmoEntecSerialConnection.cpp">
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-      </PrecompiledHeader>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release_16x9|Win32'">
-      </PrecompiledHeader>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-      </PrecompiledHeader>
-    </ClCompile>
-    <ClCompile Include="AtmoMultiConnection.cpp">
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-      </PrecompiledHeader>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release_16x9|Win32'">
-      </PrecompiledHeader>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-      </PrecompiledHeader>
-    </ClCompile>
-    <ClCompile Include="AtmoNulConnection.cpp">
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-      </PrecompiledHeader>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release_16x9|Win32'">
-      </PrecompiledHeader>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-      </PrecompiledHeader>
-    </ClCompile>
-    <ClCompile Include="FnordlichtConnection.cpp">
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-      </PrecompiledHeader>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release_16x9|Win32'">
-      </PrecompiledHeader>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-      </PrecompiledHeader>
-    </ClCompile>
-    <ClCompile Include="MoMoConnection.cpp">
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-      </PrecompiledHeader>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release_16x9|Win32'">
-      </PrecompiledHeader>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-      </PrecompiledHeader>
-    </ClCompile>
-    <ClCompile Include="MondolightConnection.cpp">
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-      </PrecompiledHeader>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release_16x9|Win32'">
-      </PrecompiledHeader>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-      </PrecompiledHeader>
-    </ClCompile>
-    <ClCompile Include="tinystr.cpp" />
-    <ClCompile Include="tinyxml.cpp" />
-    <ClCompile Include="tinyxmlerror.cpp" />
-    <ClCompile Include="tinyxmlparser.cpp" />
-  </ItemGroup>
-  <ItemGroup>
-    <Midl Include="AtmoWin.idl">
-      <TypeLibraryName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)/$(ProjectName).tlb</TypeLibraryName>
-      <TypeLibraryName Condition="'$(Configuration)|$(Platform)'=='Release_16x9|Win32'">$(ProjectDir)/$(ProjectName).tlb</TypeLibraryName>
-      <TypeLibraryName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)/$(ProjectName).tlb</TypeLibraryName>
-    </Midl>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="AtmoCtrlMessages.h" />
-    <ClInclude Include="AtmoDefs.h" />
-    <ClInclude Include="AtmoRes.h" />
-    <ClInclude Include="AtmoTools.h" />
-    <ClInclude Include="AtmoWin_h.h" />
-    <ClInclude Include="AtmoWinA.h" />
-    <ClInclude Include="AtmoWinTrayIconHandler.h" />
-    <ClInclude Include="DmxTools.h" />
-    <ClInclude Include="Language.h" />
-    <ClInclude Include="Resource.h" />
-    <ClInclude Include="stdafx.h" />
-    <ClInclude Include="AtmoClassicConnection.h" />
-    <ClInclude Include="AtmoConnection.h" />
-    <ClInclude Include="AtmoDmxSerialConnection.h" />
-    <ClInclude Include="AtmoDummyConnection.h" />
-    <ClInclude Include="AtmoEntecSerialConnection.h" />
-    <ClInclude Include="AtmoMultiConnection.h" />
-    <ClInclude Include="AtmoNulConnection.h" />
-    <ClInclude Include="FnordlichtConnection.h" />
-    <ClInclude Include="MoMoConnection.h" />
-    <ClInclude Include="MondolightConnection.h" />
-    <ClInclude Include="AtmoRegistry.h" />
-    <ClInclude Include="AtmoThread.h" />
-    <ClInclude Include="BasicDialog.h" />
-    <ClInclude Include="BasicWindow.h" />
-    <ClInclude Include="AtmoClassicConfigDialog.h" />
-    <ClInclude Include="AtmoColorPicker.h" />
-    <ClInclude Include="AtmoCustomColorPicker.h" />
-    <ClInclude Include="AtmoEditChannelAssignment.h" />
-    <ClInclude Include="AtmoGradients.h" />
-    <ClInclude Include="AtmoMultiConfigDialog.h" />
-    <ClInclude Include="AtmoSettingsDialog.h" />
-    <ClInclude Include="AtmoWhiteAdjHW.h" />
-    <ClInclude Include="AtmoWhiteSetup.h" />
-    <ClInclude Include="DmxConfigDialog.h" />
-    <ClInclude Include="FnordlichtConfigDialog.h" />
-    <ClInclude Include="InfoDialog.h" />
-    <ClInclude Include="MoMoConfigDialog.h" />
-    <ClInclude Include="AtmoCalculations.h" />
-    <ClInclude Include="AtmoExternalCaptureInput.h" />
-    <ClInclude Include="AtmoGdiDisplayCaptureInput.h" />
-    <ClInclude Include="AtmoInput.h" />
-    <ClInclude Include="AtmoBasicEffect.h" />
-    <ClInclude Include="AtmoColorChanger.h" />
-    <ClInclude Include="AtmoLeftRightColorChanger.h" />
-    <ClInclude Include="AtmoLiveView.h" />
-    <ClInclude Include="AtmoLiveViewControlImpl.h" />
-    <ClInclude Include="AtmoOutputFilter.h" />
-    <ClInclude Include="AtmoPacketQueue.h" />
-    <ClInclude Include="AtmoPacketQueueStatus.h" />
-    <ClInclude Include="AtmoRemoteControlImplEx.h" />
-    <ClInclude Include="AtmoChannelAssignment.h" />
-    <ClInclude Include="AtmoComRegistry.h" />
-    <ClInclude Include="AtmoConfig.h" />
-    <ClInclude Include="basics\AtmoDisplays.h" />
-    <ClInclude Include="AtmoDisplays.h" />
-    <ClInclude Include="AtmoDynData.h" />
-    <ClInclude Include="AtmoRegistryConfig.h" />
-    <ClInclude Include="AtmoZoneDefinition.h" />
-    <ClInclude Include="tinystr.h" />
-    <ClInclude Include="tinyxml.h" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="AtmoWinA.ico" />
-    <None Include="AtmoWinA.tlb" />
-    <None Include="icon1.ico" />
-    <None Include="small.ico" />
-  </ItemGroup>
-  <ItemGroup>
-    <ResourceCompile Include="AtmoWinA.rc" />
-    <ResourceCompile Include="AtmoWinTlb.rc" />
-  </ItemGroup>
-  <ItemGroup>
-    <Manifest Include="AtmoWinA.exe.manifest" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-  <ProjectExtensions>
-    <VisualStudio>
-      <UserProperties RESOURCE_FILE="AtmoWinA.rc" />
-    </VisualStudio>
-  </ProjectExtensions>
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release_16x9|Win32">
+      <Configuration>Release_16x9</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Template|Win32">
+      <Configuration>Template</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{70294792-414F-437A-8275-AD605D54D690}</ProjectGuid>
+    <RootNamespace>AtmoWinA</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_16x9|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <UseOfAtl>false</UseOfAtl>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v110_xp</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <UseOfAtl>false</UseOfAtl>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <UseOfAtl>false</UseOfAtl>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v110_xp</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Template|Win32'">
+    <PlatformToolset>v110</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_16x9|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release_16x9|Win32'">$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release_16x9|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release_16x9|Win32'">false</LinkIncremental>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release_16x9|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release_16x9|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release_16x9|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Template|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Template|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Template|Win32'" />
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <GenerateManifest>false</GenerateManifest>
+    <EmbedManifest>false</EmbedManifest>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <GenerateManifest>false</GenerateManifest>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+      <AdditionalIncludeDirectories>d:\dev\libconfig-1.4.9\Debug\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>Comctl32.lib;Winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)AtmoWinA.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>$(OutDir)AtmoWinA.pdb</ProgramDatabaseFile>
+      <SubSystem>Windows</SubSystem>
+      <TargetMachine>MachineX86</TargetMachine>
+      <Version>1,0,0,2</Version>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <PrecompiledHeader>Use</PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>Comctl32.lib;Winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)AtmoWinA.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX86</TargetMachine>
+      <ForceFileOutput>
+      </ForceFileOutput>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_16x9|Win32'">
+    <ClCompile>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;CAP_16x9;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <PrecompiledHeader>Use</PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>Comctl32.lib;Winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)AtmoWinA.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="AtmoDesktopDuplicationCaptureInput.cpp" />
+    <ClCompile Include="AtmoRes.cpp">
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release_16x9|Win32'">
+      </PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="AtmoTools.cpp">
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release_16x9|Win32'">
+      </PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="AtmoWin_i.c">
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release_16x9|Win32'">
+      </PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="AtmoWinA.cpp" />
+    <ClCompile Include="AtmoWinTrayIconHandler.cpp" />
+    <ClCompile Include="DmxTools.cpp">
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release_16x9|Win32'">
+      </PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="Language.cpp" />
+    <ClCompile Include="stdafx.cpp">
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release_16x9|Win32'">Create</PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="AtmoRegistry.cpp" />
+    <ClCompile Include="AtmoThread.cpp">
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release_16x9|Win32'">
+      </PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="BasicDialog.cpp" />
+    <ClCompile Include="BasicWindow.cpp" />
+    <ClCompile Include="AtmoClassicConfigDialog.cpp" />
+    <ClCompile Include="AtmoColorPicker.cpp" />
+    <ClCompile Include="AtmoCustomColorPicker.cpp" />
+    <ClCompile Include="AtmoEditChannelAssignment.cpp" />
+    <ClCompile Include="AtmoGradients.cpp" />
+    <ClCompile Include="AtmoMultiConfigDialog.cpp" />
+    <ClCompile Include="AtmoSettingsDialog.cpp" />
+    <ClCompile Include="AtmoWhiteAdjHW.cpp" />
+    <ClCompile Include="AtmoWhiteSetup.cpp" />
+    <ClCompile Include="DmxConfigDialog.cpp" />
+    <ClCompile Include="FnordlichtConfigDialog.cpp" />
+    <ClCompile Include="InfoDialog.cpp" />
+    <ClCompile Include="MoMoConfigDialog.cpp" />
+    <ClCompile Include="AtmoCalculations.cpp">
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release_16x9|Win32'">
+      </PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="AtmoExternalCaptureInput.cpp">
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release_16x9|Win32'">
+      </PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="AtmoGdiDisplayCaptureInput.cpp" />
+    <ClCompile Include="AtmoInput.cpp">
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release_16x9|Win32'">
+      </PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="AtmoBasicEffect.cpp" />
+    <ClCompile Include="AtmoColorChanger.cpp" />
+    <ClCompile Include="AtmoLeftRightColorChanger.cpp" />
+    <ClCompile Include="AtmoLiveView.cpp">
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release_16x9|Win32'">
+      </PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="AtmoLiveViewControlImpl.cpp" />
+    <ClCompile Include="AtmoOutputFilter.cpp">
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release_16x9|Win32'">
+      </PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="AtmoPacketQueue.cpp">
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release_16x9|Win32'">
+      </PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="AtmoPacketQueueStatus.cpp" />
+    <ClCompile Include="AtmoRemoteControlImplEx.cpp" />
+    <ClCompile Include="AtmoChannelAssignment.cpp">
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release_16x9|Win32'">
+      </PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="AtmoComRegistry.cpp" />
+    <ClCompile Include="AtmoConfig.cpp">
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release_16x9|Win32'">
+      </PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="AtmoDisplays.cpp" />
+    <ClCompile Include="AtmoDynData.cpp">
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release_16x9|Win32'">
+      </PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="AtmoRegistryConfig.cpp" />
+    <ClCompile Include="AtmoZoneDefinition.cpp">
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release_16x9|Win32'">
+      </PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="AtmoClassicConnection.cpp">
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release_16x9|Win32'">
+      </PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="AtmoConnection.cpp">
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release_16x9|Win32'">
+      </PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="AtmoDmxSerialConnection.cpp">
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release_16x9|Win32'">
+      </PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="AtmoDummyConnection.cpp" />
+    <ClCompile Include="AtmoEntecSerialConnection.cpp">
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release_16x9|Win32'">
+      </PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="AtmoMultiConnection.cpp">
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release_16x9|Win32'">
+      </PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="AtmoNulConnection.cpp">
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release_16x9|Win32'">
+      </PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="FnordlichtConnection.cpp">
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release_16x9|Win32'">
+      </PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="MoMoConnection.cpp">
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release_16x9|Win32'">
+      </PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="MondolightConnection.cpp">
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release_16x9|Win32'">
+      </PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="tinystr.cpp" />
+    <ClCompile Include="tinyxml.cpp" />
+    <ClCompile Include="tinyxmlerror.cpp" />
+    <ClCompile Include="tinyxmlparser.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <Midl Include="AtmoWin.idl">
+      <TypeLibraryName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)/$(ProjectName).tlb</TypeLibraryName>
+      <TypeLibraryName Condition="'$(Configuration)|$(Platform)'=='Release_16x9|Win32'">$(ProjectDir)/$(ProjectName).tlb</TypeLibraryName>
+      <TypeLibraryName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)/$(ProjectName).tlb</TypeLibraryName>
+    </Midl>
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="AtmoCtrlMessages.h" />
+    <ClInclude Include="AtmoDefs.h" />
+    <ClInclude Include="AtmoDesktopDuplicationCaptureInput.h" />
+    <ClInclude Include="AtmoRes.h" />
+    <ClInclude Include="AtmoTools.h" />
+    <ClInclude Include="AtmoWin_h.h" />
+    <ClInclude Include="AtmoWinA.h" />
+    <ClInclude Include="AtmoWinTrayIconHandler.h" />
+    <ClInclude Include="DmxTools.h" />
+    <ClInclude Include="Language.h" />
+    <ClInclude Include="Resource.h" />
+    <ClInclude Include="stdafx.h" />
+    <ClInclude Include="AtmoClassicConnection.h" />
+    <ClInclude Include="AtmoConnection.h" />
+    <ClInclude Include="AtmoDmxSerialConnection.h" />
+    <ClInclude Include="AtmoDummyConnection.h" />
+    <ClInclude Include="AtmoEntecSerialConnection.h" />
+    <ClInclude Include="AtmoMultiConnection.h" />
+    <ClInclude Include="AtmoNulConnection.h" />
+    <ClInclude Include="FnordlichtConnection.h" />
+    <ClInclude Include="MoMoConnection.h" />
+    <ClInclude Include="MondolightConnection.h" />
+    <ClInclude Include="AtmoRegistry.h" />
+    <ClInclude Include="AtmoThread.h" />
+    <ClInclude Include="BasicDialog.h" />
+    <ClInclude Include="BasicWindow.h" />
+    <ClInclude Include="AtmoClassicConfigDialog.h" />
+    <ClInclude Include="AtmoColorPicker.h" />
+    <ClInclude Include="AtmoCustomColorPicker.h" />
+    <ClInclude Include="AtmoEditChannelAssignment.h" />
+    <ClInclude Include="AtmoGradients.h" />
+    <ClInclude Include="AtmoMultiConfigDialog.h" />
+    <ClInclude Include="AtmoSettingsDialog.h" />
+    <ClInclude Include="AtmoWhiteAdjHW.h" />
+    <ClInclude Include="AtmoWhiteSetup.h" />
+    <ClInclude Include="DmxConfigDialog.h" />
+    <ClInclude Include="FnordlichtConfigDialog.h" />
+    <ClInclude Include="InfoDialog.h" />
+    <ClInclude Include="MoMoConfigDialog.h" />
+    <ClInclude Include="AtmoCalculations.h" />
+    <ClInclude Include="AtmoExternalCaptureInput.h" />
+    <ClInclude Include="AtmoGdiDisplayCaptureInput.h" />
+    <ClInclude Include="AtmoInput.h" />
+    <ClInclude Include="AtmoBasicEffect.h" />
+    <ClInclude Include="AtmoColorChanger.h" />
+    <ClInclude Include="AtmoLeftRightColorChanger.h" />
+    <ClInclude Include="AtmoLiveView.h" />
+    <ClInclude Include="AtmoLiveViewControlImpl.h" />
+    <ClInclude Include="AtmoOutputFilter.h" />
+    <ClInclude Include="AtmoPacketQueue.h" />
+    <ClInclude Include="AtmoPacketQueueStatus.h" />
+    <ClInclude Include="AtmoRemoteControlImplEx.h" />
+    <ClInclude Include="AtmoChannelAssignment.h" />
+    <ClInclude Include="AtmoComRegistry.h" />
+    <ClInclude Include="AtmoConfig.h" />
+    <ClInclude Include="basics\AtmoDisplays.h" />
+    <ClInclude Include="AtmoDisplays.h" />
+    <ClInclude Include="AtmoDynData.h" />
+    <ClInclude Include="AtmoRegistryConfig.h" />
+    <ClInclude Include="AtmoZoneDefinition.h" />
+    <ClInclude Include="tinystr.h" />
+    <ClInclude Include="tinyxml.h" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="AtmoWinA.ico" />
+    <None Include="AtmoWinA.tlb" />
+    <None Include="icon1.ico" />
+    <None Include="small.ico" />
+  </ItemGroup>
+  <ItemGroup>
+    <ResourceCompile Include="AtmoWinA.rc" />
+    <ResourceCompile Include="AtmoWinTlb.rc" />
+  </ItemGroup>
+  <ItemGroup>
+    <Manifest Include="AtmoWinA.exe.manifest" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+  <ProjectExtensions>
+    <VisualStudio>
+      <UserProperties RESOURCE_FILE="AtmoWinA.rc" />
+    </VisualStudio>
+  </ProjectExtensions>
 </Project>
\ No newline at end of file
diff --git a/AtmoWinA.vcxproj.filters b/AtmoWinA.vcxproj.filters
index 15cd72b..915c5b4 100644
--- a/AtmoWinA.vcxproj.filters
+++ b/AtmoWinA.vcxproj.filters
@@ -1,462 +1,468 @@
-﻿<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Quelldateien">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-    <Filter Include="Quelldateien\basics">
-      <UniqueIdentifier>{0018ab19-458f-455d-aa3d-4ca92b3e71de}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="Quelldateien\dialogs">
-      <UniqueIdentifier>{071adc09-88d0-43a4-b74d-8f2c206da6a1}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="Quelldateien\pixelsources">
-      <UniqueIdentifier>{aea839f1-18cb-495a-a445-e107e1b7988a}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="Quelldateien\effects">
-      <UniqueIdentifier>{abd67fe9-782b-406f-9dbb-1238f05b9640}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="Quelldateien\settings">
-      <UniqueIdentifier>{c9dbe22e-30b9-47ff-a295-d9053e03245b}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="Quelldateien\devices">
-      <UniqueIdentifier>{ce39401f-3426-4ea6-a7ec-f236f06e5c5b}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="Headerdateien">
-      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
-      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
-    </Filter>
-    <Filter Include="Headerdateien\devices">
-      <UniqueIdentifier>{7ff3e89d-66a4-413a-866a-562c1490c7f8}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="Headerdateien\basics">
-      <UniqueIdentifier>{2449eb5d-7a6c-4e14-9baa-5c9d2f02601f}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="Headerdateien\dialogs">
-      <UniqueIdentifier>{e61a2c55-8cdf-4e56-8690-da92aa83eeba}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="Headerdateien\pixelsources">
-      <UniqueIdentifier>{cc98b184-e38c-4859-94d3-782eeb52445a}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="Headerdateien\effects">
-      <UniqueIdentifier>{f1f15b97-c8c3-4a54-a227-3ac8a3ff56f1}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="Headerdateien\settings">
-      <UniqueIdentifier>{b8b3f07d-99ec-40cc-a911-dbd9bad2415b}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="Ressourcendateien">
-      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
-      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx</Extensions>
-    </Filter>
-    <Filter Include="Ressourcendateien\Quelldateien">
-      <UniqueIdentifier>{88ffdced-9b9e-4f8b-aa1e-56796636add4}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="Quelldateien\tinyxml">
-      <UniqueIdentifier>{b44941e3-72a9-4961-a44d-edbf15067228}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="Quelldateien\language">
-      <UniqueIdentifier>{5c1afb89-1b35-40ba-b1ea-7c9fc27f4107}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="Headerdateien\tinyxml">
-      <UniqueIdentifier>{6f8feb5d-923a-4b9d-8bc7-f850d2a5454e}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="Headerdateien\language">
-      <UniqueIdentifier>{cd27c6ea-eb6e-4bb0-854c-932e4447ce1b}</UniqueIdentifier>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="AtmoRes.cpp">
-      <Filter>Quelldateien</Filter>
-    </ClCompile>
-    <ClCompile Include="AtmoTools.cpp">
-      <Filter>Quelldateien</Filter>
-    </ClCompile>
-    <ClCompile Include="AtmoWin_i.c">
-      <Filter>Quelldateien</Filter>
-    </ClCompile>
-    <ClCompile Include="AtmoWinA.cpp">
-      <Filter>Quelldateien</Filter>
-    </ClCompile>
-    <ClCompile Include="AtmoWinTrayIconHandler.cpp">
-      <Filter>Quelldateien</Filter>
-    </ClCompile>
-    <ClCompile Include="DmxTools.cpp">
-      <Filter>Quelldateien</Filter>
-    </ClCompile>
-    <ClCompile Include="stdafx.cpp">
-      <Filter>Quelldateien</Filter>
-    </ClCompile>
-    <ClCompile Include="AtmoRegistry.cpp">
-      <Filter>Quelldateien\basics</Filter>
-    </ClCompile>
-    <ClCompile Include="AtmoThread.cpp">
-      <Filter>Quelldateien\basics</Filter>
-    </ClCompile>
-    <ClCompile Include="BasicDialog.cpp">
-      <Filter>Quelldateien\basics</Filter>
-    </ClCompile>
-    <ClCompile Include="BasicWindow.cpp">
-      <Filter>Quelldateien\basics</Filter>
-    </ClCompile>
-    <ClCompile Include="AtmoClassicConfigDialog.cpp">
-      <Filter>Quelldateien\dialogs</Filter>
-    </ClCompile>
-    <ClCompile Include="AtmoColorPicker.cpp">
-      <Filter>Quelldateien\dialogs</Filter>
-    </ClCompile>
-    <ClCompile Include="AtmoCustomColorPicker.cpp">
-      <Filter>Quelldateien\dialogs</Filter>
-    </ClCompile>
-    <ClCompile Include="AtmoEditChannelAssignment.cpp">
-      <Filter>Quelldateien\dialogs</Filter>
-    </ClCompile>
-    <ClCompile Include="AtmoGradients.cpp">
-      <Filter>Quelldateien\dialogs</Filter>
-    </ClCompile>
-    <ClCompile Include="AtmoMultiConfigDialog.cpp">
-      <Filter>Quelldateien\dialogs</Filter>
-    </ClCompile>
-    <ClCompile Include="AtmoSettingsDialog.cpp">
-      <Filter>Quelldateien\dialogs</Filter>
-    </ClCompile>
-    <ClCompile Include="AtmoWhiteAdjHW.cpp">
-      <Filter>Quelldateien\dialogs</Filter>
-    </ClCompile>
-    <ClCompile Include="AtmoWhiteSetup.cpp">
-      <Filter>Quelldateien\dialogs</Filter>
-    </ClCompile>
-    <ClCompile Include="DmxConfigDialog.cpp">
-      <Filter>Quelldateien\dialogs</Filter>
-    </ClCompile>
-    <ClCompile Include="FnordlichtConfigDialog.cpp">
-      <Filter>Quelldateien\dialogs</Filter>
-    </ClCompile>
-    <ClCompile Include="InfoDialog.cpp">
-      <Filter>Quelldateien\dialogs</Filter>
-    </ClCompile>
-    <ClCompile Include="MoMoConfigDialog.cpp">
-      <Filter>Quelldateien\dialogs</Filter>
-    </ClCompile>
-    <ClCompile Include="AtmoCalculations.cpp">
-      <Filter>Quelldateien\pixelsources</Filter>
-    </ClCompile>
-    <ClCompile Include="AtmoExternalCaptureInput.cpp">
-      <Filter>Quelldateien\pixelsources</Filter>
-    </ClCompile>
-    <ClCompile Include="AtmoGdiDisplayCaptureInput.cpp">
-      <Filter>Quelldateien\pixelsources</Filter>
-    </ClCompile>
-    <ClCompile Include="AtmoInput.cpp">
-      <Filter>Quelldateien\pixelsources</Filter>
-    </ClCompile>
-    <ClCompile Include="AtmoBasicEffect.cpp">
-      <Filter>Quelldateien\effects</Filter>
-    </ClCompile>
-    <ClCompile Include="AtmoColorChanger.cpp">
-      <Filter>Quelldateien\effects</Filter>
-    </ClCompile>
-    <ClCompile Include="AtmoLeftRightColorChanger.cpp">
-      <Filter>Quelldateien\effects</Filter>
-    </ClCompile>
-    <ClCompile Include="AtmoLiveView.cpp">
-      <Filter>Quelldateien\effects</Filter>
-    </ClCompile>
-    <ClCompile Include="AtmoLiveViewControlImpl.cpp">
-      <Filter>Quelldateien\effects</Filter>
-    </ClCompile>
-    <ClCompile Include="AtmoOutputFilter.cpp">
-      <Filter>Quelldateien\effects</Filter>
-    </ClCompile>
-    <ClCompile Include="AtmoPacketQueue.cpp">
-      <Filter>Quelldateien\effects</Filter>
-    </ClCompile>
-    <ClCompile Include="AtmoPacketQueueStatus.cpp">
-      <Filter>Quelldateien\effects</Filter>
-    </ClCompile>
-    <ClCompile Include="AtmoRemoteControlImplEx.cpp">
-      <Filter>Quelldateien\effects</Filter>
-    </ClCompile>
-    <ClCompile Include="AtmoChannelAssignment.cpp">
-      <Filter>Quelldateien\settings</Filter>
-    </ClCompile>
-    <ClCompile Include="AtmoComRegistry.cpp">
-      <Filter>Quelldateien\settings</Filter>
-    </ClCompile>
-    <ClCompile Include="AtmoConfig.cpp">
-      <Filter>Quelldateien\settings</Filter>
-    </ClCompile>
-    <ClCompile Include="AtmoDisplays.cpp">
-      <Filter>Quelldateien\settings</Filter>
-    </ClCompile>
-    <ClCompile Include="AtmoDynData.cpp">
-      <Filter>Quelldateien\settings</Filter>
-    </ClCompile>
-    <ClCompile Include="AtmoRegistryConfig.cpp">
-      <Filter>Quelldateien\settings</Filter>
-    </ClCompile>
-    <ClCompile Include="AtmoZoneDefinition.cpp">
-      <Filter>Quelldateien\settings</Filter>
-    </ClCompile>
-    <ClCompile Include="AtmoClassicConnection.cpp">
-      <Filter>Quelldateien\devices</Filter>
-    </ClCompile>
-    <ClCompile Include="AtmoConnection.cpp">
-      <Filter>Quelldateien\devices</Filter>
-    </ClCompile>
-    <ClCompile Include="AtmoDmxSerialConnection.cpp">
-      <Filter>Quelldateien\devices</Filter>
-    </ClCompile>
-    <ClCompile Include="AtmoDummyConnection.cpp">
-      <Filter>Quelldateien\devices</Filter>
-    </ClCompile>
-    <ClCompile Include="AtmoEntecSerialConnection.cpp">
-      <Filter>Quelldateien\devices</Filter>
-    </ClCompile>
-    <ClCompile Include="AtmoMultiConnection.cpp">
-      <Filter>Quelldateien\devices</Filter>
-    </ClCompile>
-    <ClCompile Include="AtmoNulConnection.cpp">
-      <Filter>Quelldateien\devices</Filter>
-    </ClCompile>
-    <ClCompile Include="FnordlichtConnection.cpp">
-      <Filter>Quelldateien\devices</Filter>
-    </ClCompile>
-    <ClCompile Include="MoMoConnection.cpp">
-      <Filter>Quelldateien\devices</Filter>
-    </ClCompile>
-    <ClCompile Include="MondolightConnection.cpp">
-      <Filter>Quelldateien\devices</Filter>
-    </ClCompile>
-    <ClCompile Include="tinystr.cpp">
-      <Filter>Quelldateien\tinyxml</Filter>
-    </ClCompile>
-    <ClCompile Include="tinyxml.cpp">
-      <Filter>Quelldateien\tinyxml</Filter>
-    </ClCompile>
-    <ClCompile Include="tinyxmlerror.cpp">
-      <Filter>Quelldateien\tinyxml</Filter>
-    </ClCompile>
-    <ClCompile Include="tinyxmlparser.cpp">
-      <Filter>Quelldateien\tinyxml</Filter>
-    </ClCompile>
-    <ClCompile Include="Language.cpp">
-      <Filter>Quelldateien\language</Filter>
-    </ClCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <Midl Include="AtmoWin.idl">
-      <Filter>Quelldateien</Filter>
-    </Midl>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="AtmoCtrlMessages.h">
-      <Filter>Headerdateien</Filter>
-    </ClInclude>
-    <ClInclude Include="AtmoDefs.h">
-      <Filter>Headerdateien</Filter>
-    </ClInclude>
-    <ClInclude Include="AtmoRes.h">
-      <Filter>Headerdateien</Filter>
-    </ClInclude>
-    <ClInclude Include="AtmoTools.h">
-      <Filter>Headerdateien</Filter>
-    </ClInclude>
-    <ClInclude Include="AtmoWin_h.h">
-      <Filter>Headerdateien</Filter>
-    </ClInclude>
-    <ClInclude Include="AtmoWinA.h">
-      <Filter>Headerdateien</Filter>
-    </ClInclude>
-    <ClInclude Include="AtmoWinTrayIconHandler.h">
-      <Filter>Headerdateien</Filter>
-    </ClInclude>
-    <ClInclude Include="DmxTools.h">
-      <Filter>Headerdateien</Filter>
-    </ClInclude>
-    <ClInclude Include="Resource.h">
-      <Filter>Headerdateien</Filter>
-    </ClInclude>
-    <ClInclude Include="stdafx.h">
-      <Filter>Headerdateien</Filter>
-    </ClInclude>
-    <ClInclude Include="AtmoClassicConnection.h">
-      <Filter>Headerdateien\devices</Filter>
-    </ClInclude>
-    <ClInclude Include="AtmoConnection.h">
-      <Filter>Headerdateien\devices</Filter>
-    </ClInclude>
-    <ClInclude Include="AtmoDmxSerialConnection.h">
-      <Filter>Headerdateien\devices</Filter>
-    </ClInclude>
-    <ClInclude Include="AtmoDummyConnection.h">
-      <Filter>Headerdateien\devices</Filter>
-    </ClInclude>
-    <ClInclude Include="AtmoEntecSerialConnection.h">
-      <Filter>Headerdateien\devices</Filter>
-    </ClInclude>
-    <ClInclude Include="AtmoMultiConnection.h">
-      <Filter>Headerdateien\devices</Filter>
-    </ClInclude>
-    <ClInclude Include="AtmoNulConnection.h">
-      <Filter>Headerdateien\devices</Filter>
-    </ClInclude>
-    <ClInclude Include="FnordlichtConnection.h">
-      <Filter>Headerdateien\devices</Filter>
-    </ClInclude>
-    <ClInclude Include="MoMoConnection.h">
-      <Filter>Headerdateien\devices</Filter>
-    </ClInclude>
-    <ClInclude Include="MondolightConnection.h">
-      <Filter>Headerdateien\devices</Filter>
-    </ClInclude>
-    <ClInclude Include="AtmoRegistry.h">
-      <Filter>Headerdateien\basics</Filter>
-    </ClInclude>
-    <ClInclude Include="AtmoThread.h">
-      <Filter>Headerdateien\basics</Filter>
-    </ClInclude>
-    <ClInclude Include="BasicDialog.h">
-      <Filter>Headerdateien\basics</Filter>
-    </ClInclude>
-    <ClInclude Include="BasicWindow.h">
-      <Filter>Headerdateien\basics</Filter>
-    </ClInclude>
-    <ClInclude Include="AtmoClassicConfigDialog.h">
-      <Filter>Headerdateien\dialogs</Filter>
-    </ClInclude>
-    <ClInclude Include="AtmoColorPicker.h">
-      <Filter>Headerdateien\dialogs</Filter>
-    </ClInclude>
-    <ClInclude Include="AtmoCustomColorPicker.h">
-      <Filter>Headerdateien\dialogs</Filter>
-    </ClInclude>
-    <ClInclude Include="AtmoEditChannelAssignment.h">
-      <Filter>Headerdateien\dialogs</Filter>
-    </ClInclude>
-    <ClInclude Include="AtmoGradients.h">
-      <Filter>Headerdateien\dialogs</Filter>
-    </ClInclude>
-    <ClInclude Include="AtmoMultiConfigDialog.h">
-      <Filter>Headerdateien\dialogs</Filter>
-    </ClInclude>
-    <ClInclude Include="AtmoSettingsDialog.h">
-      <Filter>Headerdateien\dialogs</Filter>
-    </ClInclude>
-    <ClInclude Include="AtmoWhiteAdjHW.h">
-      <Filter>Headerdateien\dialogs</Filter>
-    </ClInclude>
-    <ClInclude Include="AtmoWhiteSetup.h">
-      <Filter>Headerdateien\dialogs</Filter>
-    </ClInclude>
-    <ClInclude Include="DmxConfigDialog.h">
-      <Filter>Headerdateien\dialogs</Filter>
-    </ClInclude>
-    <ClInclude Include="FnordlichtConfigDialog.h">
-      <Filter>Headerdateien\dialogs</Filter>
-    </ClInclude>
-    <ClInclude Include="InfoDialog.h">
-      <Filter>Headerdateien\dialogs</Filter>
-    </ClInclude>
-    <ClInclude Include="MoMoConfigDialog.h">
-      <Filter>Headerdateien\dialogs</Filter>
-    </ClInclude>
-    <ClInclude Include="AtmoCalculations.h">
-      <Filter>Headerdateien\pixelsources</Filter>
-    </ClInclude>
-    <ClInclude Include="AtmoExternalCaptureInput.h">
-      <Filter>Headerdateien\pixelsources</Filter>
-    </ClInclude>
-    <ClInclude Include="AtmoGdiDisplayCaptureInput.h">
-      <Filter>Headerdateien\pixelsources</Filter>
-    </ClInclude>
-    <ClInclude Include="AtmoInput.h">
-      <Filter>Headerdateien\pixelsources</Filter>
-    </ClInclude>
-    <ClInclude Include="AtmoBasicEffect.h">
-      <Filter>Headerdateien\effects</Filter>
-    </ClInclude>
-    <ClInclude Include="AtmoColorChanger.h">
-      <Filter>Headerdateien\effects</Filter>
-    </ClInclude>
-    <ClInclude Include="AtmoLeftRightColorChanger.h">
-      <Filter>Headerdateien\effects</Filter>
-    </ClInclude>
-    <ClInclude Include="AtmoLiveView.h">
-      <Filter>Headerdateien\effects</Filter>
-    </ClInclude>
-    <ClInclude Include="AtmoLiveViewControlImpl.h">
-      <Filter>Headerdateien\effects</Filter>
-    </ClInclude>
-    <ClInclude Include="AtmoOutputFilter.h">
-      <Filter>Headerdateien\effects</Filter>
-    </ClInclude>
-    <ClInclude Include="AtmoPacketQueue.h">
-      <Filter>Headerdateien\effects</Filter>
-    </ClInclude>
-    <ClInclude Include="AtmoPacketQueueStatus.h">
-      <Filter>Headerdateien\effects</Filter>
-    </ClInclude>
-    <ClInclude Include="AtmoRemoteControlImplEx.h">
-      <Filter>Headerdateien\effects</Filter>
-    </ClInclude>
-    <ClInclude Include="AtmoChannelAssignment.h">
-      <Filter>Headerdateien\settings</Filter>
-    </ClInclude>
-    <ClInclude Include="AtmoComRegistry.h">
-      <Filter>Headerdateien\settings</Filter>
-    </ClInclude>
-    <ClInclude Include="AtmoConfig.h">
-      <Filter>Headerdateien\settings</Filter>
-    </ClInclude>
-    <ClInclude Include="basics\AtmoDisplays.h">
-      <Filter>Headerdateien\settings</Filter>
-    </ClInclude>
-    <ClInclude Include="AtmoDisplays.h">
-      <Filter>Headerdateien\settings</Filter>
-    </ClInclude>
-    <ClInclude Include="AtmoDynData.h">
-      <Filter>Headerdateien\settings</Filter>
-    </ClInclude>
-    <ClInclude Include="AtmoRegistryConfig.h">
-      <Filter>Headerdateien\settings</Filter>
-    </ClInclude>
-    <ClInclude Include="AtmoZoneDefinition.h">
-      <Filter>Headerdateien\settings</Filter>
-    </ClInclude>
-    <ClInclude Include="tinystr.h">
-      <Filter>Headerdateien\tinyxml</Filter>
-    </ClInclude>
-    <ClInclude Include="tinyxml.h">
-      <Filter>Headerdateien\tinyxml</Filter>
-    </ClInclude>
-    <ClInclude Include="Language.h">
-      <Filter>Headerdateien\language</Filter>
-    </ClInclude>
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="AtmoWinA.ico">
-      <Filter>Ressourcendateien</Filter>
-    </None>
-    <None Include="AtmoWinA.tlb">
-      <Filter>Ressourcendateien</Filter>
-    </None>
-    <None Include="icon1.ico">
-      <Filter>Ressourcendateien</Filter>
-    </None>
-    <None Include="small.ico">
-      <Filter>Ressourcendateien</Filter>
-    </None>
-  </ItemGroup>
-  <ItemGroup>
-    <ResourceCompile Include="AtmoWinA.rc">
-      <Filter>Ressourcendateien</Filter>
-    </ResourceCompile>
-    <ResourceCompile Include="AtmoWinTlb.rc">
-      <Filter>Ressourcendateien</Filter>
-    </ResourceCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <Manifest Include="AtmoWinA.exe.manifest" />
-  </ItemGroup>
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="Quelldateien">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+    <Filter Include="Quelldateien\basics">
+      <UniqueIdentifier>{0018ab19-458f-455d-aa3d-4ca92b3e71de}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Quelldateien\dialogs">
+      <UniqueIdentifier>{071adc09-88d0-43a4-b74d-8f2c206da6a1}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Quelldateien\pixelsources">
+      <UniqueIdentifier>{aea839f1-18cb-495a-a445-e107e1b7988a}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Quelldateien\effects">
+      <UniqueIdentifier>{abd67fe9-782b-406f-9dbb-1238f05b9640}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Quelldateien\settings">
+      <UniqueIdentifier>{c9dbe22e-30b9-47ff-a295-d9053e03245b}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Quelldateien\devices">
+      <UniqueIdentifier>{ce39401f-3426-4ea6-a7ec-f236f06e5c5b}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Headerdateien">
+      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+    </Filter>
+    <Filter Include="Headerdateien\devices">
+      <UniqueIdentifier>{7ff3e89d-66a4-413a-866a-562c1490c7f8}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Headerdateien\basics">
+      <UniqueIdentifier>{2449eb5d-7a6c-4e14-9baa-5c9d2f02601f}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Headerdateien\dialogs">
+      <UniqueIdentifier>{e61a2c55-8cdf-4e56-8690-da92aa83eeba}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Headerdateien\pixelsources">
+      <UniqueIdentifier>{cc98b184-e38c-4859-94d3-782eeb52445a}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Headerdateien\effects">
+      <UniqueIdentifier>{f1f15b97-c8c3-4a54-a227-3ac8a3ff56f1}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Headerdateien\settings">
+      <UniqueIdentifier>{b8b3f07d-99ec-40cc-a911-dbd9bad2415b}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Ressourcendateien">
+      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx</Extensions>
+    </Filter>
+    <Filter Include="Ressourcendateien\Quelldateien">
+      <UniqueIdentifier>{88ffdced-9b9e-4f8b-aa1e-56796636add4}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Quelldateien\tinyxml">
+      <UniqueIdentifier>{b44941e3-72a9-4961-a44d-edbf15067228}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Quelldateien\language">
+      <UniqueIdentifier>{5c1afb89-1b35-40ba-b1ea-7c9fc27f4107}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Headerdateien\tinyxml">
+      <UniqueIdentifier>{6f8feb5d-923a-4b9d-8bc7-f850d2a5454e}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Headerdateien\language">
+      <UniqueIdentifier>{cd27c6ea-eb6e-4bb0-854c-932e4447ce1b}</UniqueIdentifier>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="AtmoRes.cpp">
+      <Filter>Quelldateien</Filter>
+    </ClCompile>
+    <ClCompile Include="AtmoTools.cpp">
+      <Filter>Quelldateien</Filter>
+    </ClCompile>
+    <ClCompile Include="AtmoWin_i.c">
+      <Filter>Quelldateien</Filter>
+    </ClCompile>
+    <ClCompile Include="AtmoWinA.cpp">
+      <Filter>Quelldateien</Filter>
+    </ClCompile>
+    <ClCompile Include="AtmoWinTrayIconHandler.cpp">
+      <Filter>Quelldateien</Filter>
+    </ClCompile>
+    <ClCompile Include="DmxTools.cpp">
+      <Filter>Quelldateien</Filter>
+    </ClCompile>
+    <ClCompile Include="stdafx.cpp">
+      <Filter>Quelldateien</Filter>
+    </ClCompile>
+    <ClCompile Include="AtmoRegistry.cpp">
+      <Filter>Quelldateien\basics</Filter>
+    </ClCompile>
+    <ClCompile Include="AtmoThread.cpp">
+      <Filter>Quelldateien\basics</Filter>
+    </ClCompile>
+    <ClCompile Include="BasicDialog.cpp">
+      <Filter>Quelldateien\basics</Filter>
+    </ClCompile>
+    <ClCompile Include="BasicWindow.cpp">
+      <Filter>Quelldateien\basics</Filter>
+    </ClCompile>
+    <ClCompile Include="AtmoClassicConfigDialog.cpp">
+      <Filter>Quelldateien\dialogs</Filter>
+    </ClCompile>
+    <ClCompile Include="AtmoColorPicker.cpp">
+      <Filter>Quelldateien\dialogs</Filter>
+    </ClCompile>
+    <ClCompile Include="AtmoCustomColorPicker.cpp">
+      <Filter>Quelldateien\dialogs</Filter>
+    </ClCompile>
+    <ClCompile Include="AtmoEditChannelAssignment.cpp">
+      <Filter>Quelldateien\dialogs</Filter>
+    </ClCompile>
+    <ClCompile Include="AtmoGradients.cpp">
+      <Filter>Quelldateien\dialogs</Filter>
+    </ClCompile>
+    <ClCompile Include="AtmoMultiConfigDialog.cpp">
+      <Filter>Quelldateien\dialogs</Filter>
+    </ClCompile>
+    <ClCompile Include="AtmoSettingsDialog.cpp">
+      <Filter>Quelldateien\dialogs</Filter>
+    </ClCompile>
+    <ClCompile Include="AtmoWhiteAdjHW.cpp">
+      <Filter>Quelldateien\dialogs</Filter>
+    </ClCompile>
+    <ClCompile Include="AtmoWhiteSetup.cpp">
+      <Filter>Quelldateien\dialogs</Filter>
+    </ClCompile>
+    <ClCompile Include="DmxConfigDialog.cpp">
+      <Filter>Quelldateien\dialogs</Filter>
+    </ClCompile>
+    <ClCompile Include="FnordlichtConfigDialog.cpp">
+      <Filter>Quelldateien\dialogs</Filter>
+    </ClCompile>
+    <ClCompile Include="InfoDialog.cpp">
+      <Filter>Quelldateien\dialogs</Filter>
+    </ClCompile>
+    <ClCompile Include="MoMoConfigDialog.cpp">
+      <Filter>Quelldateien\dialogs</Filter>
+    </ClCompile>
+    <ClCompile Include="AtmoCalculations.cpp">
+      <Filter>Quelldateien\pixelsources</Filter>
+    </ClCompile>
+    <ClCompile Include="AtmoExternalCaptureInput.cpp">
+      <Filter>Quelldateien\pixelsources</Filter>
+    </ClCompile>
+    <ClCompile Include="AtmoGdiDisplayCaptureInput.cpp">
+      <Filter>Quelldateien\pixelsources</Filter>
+    </ClCompile>
+    <ClCompile Include="AtmoInput.cpp">
+      <Filter>Quelldateien\pixelsources</Filter>
+    </ClCompile>
+    <ClCompile Include="AtmoBasicEffect.cpp">
+      <Filter>Quelldateien\effects</Filter>
+    </ClCompile>
+    <ClCompile Include="AtmoColorChanger.cpp">
+      <Filter>Quelldateien\effects</Filter>
+    </ClCompile>
+    <ClCompile Include="AtmoLeftRightColorChanger.cpp">
+      <Filter>Quelldateien\effects</Filter>
+    </ClCompile>
+    <ClCompile Include="AtmoLiveView.cpp">
+      <Filter>Quelldateien\effects</Filter>
+    </ClCompile>
+    <ClCompile Include="AtmoLiveViewControlImpl.cpp">
+      <Filter>Quelldateien\effects</Filter>
+    </ClCompile>
+    <ClCompile Include="AtmoOutputFilter.cpp">
+      <Filter>Quelldateien\effects</Filter>
+    </ClCompile>
+    <ClCompile Include="AtmoPacketQueue.cpp">
+      <Filter>Quelldateien\effects</Filter>
+    </ClCompile>
+    <ClCompile Include="AtmoPacketQueueStatus.cpp">
+      <Filter>Quelldateien\effects</Filter>
+    </ClCompile>
+    <ClCompile Include="AtmoRemoteControlImplEx.cpp">
+      <Filter>Quelldateien\effects</Filter>
+    </ClCompile>
+    <ClCompile Include="AtmoChannelAssignment.cpp">
+      <Filter>Quelldateien\settings</Filter>
+    </ClCompile>
+    <ClCompile Include="AtmoComRegistry.cpp">
+      <Filter>Quelldateien\settings</Filter>
+    </ClCompile>
+    <ClCompile Include="AtmoConfig.cpp">
+      <Filter>Quelldateien\settings</Filter>
+    </ClCompile>
+    <ClCompile Include="AtmoDisplays.cpp">
+      <Filter>Quelldateien\settings</Filter>
+    </ClCompile>
+    <ClCompile Include="AtmoDynData.cpp">
+      <Filter>Quelldateien\settings</Filter>
+    </ClCompile>
+    <ClCompile Include="AtmoRegistryConfig.cpp">
+      <Filter>Quelldateien\settings</Filter>
+    </ClCompile>
+    <ClCompile Include="AtmoZoneDefinition.cpp">
+      <Filter>Quelldateien\settings</Filter>
+    </ClCompile>
+    <ClCompile Include="AtmoClassicConnection.cpp">
+      <Filter>Quelldateien\devices</Filter>
+    </ClCompile>
+    <ClCompile Include="AtmoConnection.cpp">
+      <Filter>Quelldateien\devices</Filter>
+    </ClCompile>
+    <ClCompile Include="AtmoDmxSerialConnection.cpp">
+      <Filter>Quelldateien\devices</Filter>
+    </ClCompile>
+    <ClCompile Include="AtmoDummyConnection.cpp">
+      <Filter>Quelldateien\devices</Filter>
+    </ClCompile>
+    <ClCompile Include="AtmoEntecSerialConnection.cpp">
+      <Filter>Quelldateien\devices</Filter>
+    </ClCompile>
+    <ClCompile Include="AtmoMultiConnection.cpp">
+      <Filter>Quelldateien\devices</Filter>
+    </ClCompile>
+    <ClCompile Include="AtmoNulConnection.cpp">
+      <Filter>Quelldateien\devices</Filter>
+    </ClCompile>
+    <ClCompile Include="FnordlichtConnection.cpp">
+      <Filter>Quelldateien\devices</Filter>
+    </ClCompile>
+    <ClCompile Include="MoMoConnection.cpp">
+      <Filter>Quelldateien\devices</Filter>
+    </ClCompile>
+    <ClCompile Include="MondolightConnection.cpp">
+      <Filter>Quelldateien\devices</Filter>
+    </ClCompile>
+    <ClCompile Include="tinystr.cpp">
+      <Filter>Quelldateien\tinyxml</Filter>
+    </ClCompile>
+    <ClCompile Include="tinyxml.cpp">
+      <Filter>Quelldateien\tinyxml</Filter>
+    </ClCompile>
+    <ClCompile Include="tinyxmlerror.cpp">
+      <Filter>Quelldateien\tinyxml</Filter>
+    </ClCompile>
+    <ClCompile Include="tinyxmlparser.cpp">
+      <Filter>Quelldateien\tinyxml</Filter>
+    </ClCompile>
+    <ClCompile Include="Language.cpp">
+      <Filter>Quelldateien\language</Filter>
+    </ClCompile>
+    <ClCompile Include="AtmoDesktopDuplicationCaptureInput.cpp">
+      <Filter>Quelldateien</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <Midl Include="AtmoWin.idl">
+      <Filter>Quelldateien</Filter>
+    </Midl>
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="AtmoCtrlMessages.h">
+      <Filter>Headerdateien</Filter>
+    </ClInclude>
+    <ClInclude Include="AtmoDefs.h">
+      <Filter>Headerdateien</Filter>
+    </ClInclude>
+    <ClInclude Include="AtmoRes.h">
+      <Filter>Headerdateien</Filter>
+    </ClInclude>
+    <ClInclude Include="AtmoTools.h">
+      <Filter>Headerdateien</Filter>
+    </ClInclude>
+    <ClInclude Include="AtmoWin_h.h">
+      <Filter>Headerdateien</Filter>
+    </ClInclude>
+    <ClInclude Include="AtmoWinA.h">
+      <Filter>Headerdateien</Filter>
+    </ClInclude>
+    <ClInclude Include="AtmoWinTrayIconHandler.h">
+      <Filter>Headerdateien</Filter>
+    </ClInclude>
+    <ClInclude Include="DmxTools.h">
+      <Filter>Headerdateien</Filter>
+    </ClInclude>
+    <ClInclude Include="Resource.h">
+      <Filter>Headerdateien</Filter>
+    </ClInclude>
+    <ClInclude Include="stdafx.h">
+      <Filter>Headerdateien</Filter>
+    </ClInclude>
+    <ClInclude Include="AtmoClassicConnection.h">
+      <Filter>Headerdateien\devices</Filter>
+    </ClInclude>
+    <ClInclude Include="AtmoConnection.h">
+      <Filter>Headerdateien\devices</Filter>
+    </ClInclude>
+    <ClInclude Include="AtmoDmxSerialConnection.h">
+      <Filter>Headerdateien\devices</Filter>
+    </ClInclude>
+    <ClInclude Include="AtmoDummyConnection.h">
+      <Filter>Headerdateien\devices</Filter>
+    </ClInclude>
+    <ClInclude Include="AtmoEntecSerialConnection.h">
+      <Filter>Headerdateien\devices</Filter>
+    </ClInclude>
+    <ClInclude Include="AtmoMultiConnection.h">
+      <Filter>Headerdateien\devices</Filter>
+    </ClInclude>
+    <ClInclude Include="AtmoNulConnection.h">
+      <Filter>Headerdateien\devices</Filter>
+    </ClInclude>
+    <ClInclude Include="FnordlichtConnection.h">
+      <Filter>Headerdateien\devices</Filter>
+    </ClInclude>
+    <ClInclude Include="MoMoConnection.h">
+      <Filter>Headerdateien\devices</Filter>
+    </ClInclude>
+    <ClInclude Include="MondolightConnection.h">
+      <Filter>Headerdateien\devices</Filter>
+    </ClInclude>
+    <ClInclude Include="AtmoRegistry.h">
+      <Filter>Headerdateien\basics</Filter>
+    </ClInclude>
+    <ClInclude Include="AtmoThread.h">
+      <Filter>Headerdateien\basics</Filter>
+    </ClInclude>
+    <ClInclude Include="BasicDialog.h">
+      <Filter>Headerdateien\basics</Filter>
+    </ClInclude>
+    <ClInclude Include="BasicWindow.h">
+      <Filter>Headerdateien\basics</Filter>
+    </ClInclude>
+    <ClInclude Include="AtmoClassicConfigDialog.h">
+      <Filter>Headerdateien\dialogs</Filter>
+    </ClInclude>
+    <ClInclude Include="AtmoColorPicker.h">
+      <Filter>Headerdateien\dialogs</Filter>
+    </ClInclude>
+    <ClInclude Include="AtmoCustomColorPicker.h">
+      <Filter>Headerdateien\dialogs</Filter>
+    </ClInclude>
+    <ClInclude Include="AtmoEditChannelAssignment.h">
+      <Filter>Headerdateien\dialogs</Filter>
+    </ClInclude>
+    <ClInclude Include="AtmoGradients.h">
+      <Filter>Headerdateien\dialogs</Filter>
+    </ClInclude>
+    <ClInclude Include="AtmoMultiConfigDialog.h">
+      <Filter>Headerdateien\dialogs</Filter>
+    </ClInclude>
+    <ClInclude Include="AtmoSettingsDialog.h">
+      <Filter>Headerdateien\dialogs</Filter>
+    </ClInclude>
+    <ClInclude Include="AtmoWhiteAdjHW.h">
+      <Filter>Headerdateien\dialogs</Filter>
+    </ClInclude>
+    <ClInclude Include="AtmoWhiteSetup.h">
+      <Filter>Headerdateien\dialogs</Filter>
+    </ClInclude>
+    <ClInclude Include="DmxConfigDialog.h">
+      <Filter>Headerdateien\dialogs</Filter>
+    </ClInclude>
+    <ClInclude Include="FnordlichtConfigDialog.h">
+      <Filter>Headerdateien\dialogs</Filter>
+    </ClInclude>
+    <ClInclude Include="InfoDialog.h">
+      <Filter>Headerdateien\dialogs</Filter>
+    </ClInclude>
+    <ClInclude Include="MoMoConfigDialog.h">
+      <Filter>Headerdateien\dialogs</Filter>
+    </ClInclude>
+    <ClInclude Include="AtmoCalculations.h">
+      <Filter>Headerdateien\pixelsources</Filter>
+    </ClInclude>
+    <ClInclude Include="AtmoExternalCaptureInput.h">
+      <Filter>Headerdateien\pixelsources</Filter>
+    </ClInclude>
+    <ClInclude Include="AtmoGdiDisplayCaptureInput.h">
+      <Filter>Headerdateien\pixelsources</Filter>
+    </ClInclude>
+    <ClInclude Include="AtmoInput.h">
+      <Filter>Headerdateien\pixelsources</Filter>
+    </ClInclude>
+    <ClInclude Include="AtmoBasicEffect.h">
+      <Filter>Headerdateien\effects</Filter>
+    </ClInclude>
+    <ClInclude Include="AtmoColorChanger.h">
+      <Filter>Headerdateien\effects</Filter>
+    </ClInclude>
+    <ClInclude Include="AtmoLeftRightColorChanger.h">
+      <Filter>Headerdateien\effects</Filter>
+    </ClInclude>
+    <ClInclude Include="AtmoLiveView.h">
+      <Filter>Headerdateien\effects</Filter>
+    </ClInclude>
+    <ClInclude Include="AtmoLiveViewControlImpl.h">
+      <Filter>Headerdateien\effects</Filter>
+    </ClInclude>
+    <ClInclude Include="AtmoOutputFilter.h">
+      <Filter>Headerdateien\effects</Filter>
+    </ClInclude>
+    <ClInclude Include="AtmoPacketQueue.h">
+      <Filter>Headerdateien\effects</Filter>
+    </ClInclude>
+    <ClInclude Include="AtmoPacketQueueStatus.h">
+      <Filter>Headerdateien\effects</Filter>
+    </ClInclude>
+    <ClInclude Include="AtmoRemoteControlImplEx.h">
+      <Filter>Headerdateien\effects</Filter>
+    </ClInclude>
+    <ClInclude Include="AtmoChannelAssignment.h">
+      <Filter>Headerdateien\settings</Filter>
+    </ClInclude>
+    <ClInclude Include="AtmoComRegistry.h">
+      <Filter>Headerdateien\settings</Filter>
+    </ClInclude>
+    <ClInclude Include="AtmoConfig.h">
+      <Filter>Headerdateien\settings</Filter>
+    </ClInclude>
+    <ClInclude Include="basics\AtmoDisplays.h">
+      <Filter>Headerdateien\settings</Filter>
+    </ClInclude>
+    <ClInclude Include="AtmoDisplays.h">
+      <Filter>Headerdateien\settings</Filter>
+    </ClInclude>
+    <ClInclude Include="AtmoDynData.h">
+      <Filter>Headerdateien\settings</Filter>
+    </ClInclude>
+    <ClInclude Include="AtmoRegistryConfig.h">
+      <Filter>Headerdateien\settings</Filter>
+    </ClInclude>
+    <ClInclude Include="AtmoZoneDefinition.h">
+      <Filter>Headerdateien\settings</Filter>
+    </ClInclude>
+    <ClInclude Include="tinystr.h">
+      <Filter>Headerdateien\tinyxml</Filter>
+    </ClInclude>
+    <ClInclude Include="tinyxml.h">
+      <Filter>Headerdateien\tinyxml</Filter>
+    </ClInclude>
+    <ClInclude Include="Language.h">
+      <Filter>Headerdateien\language</Filter>
+    </ClInclude>
+    <ClInclude Include="AtmoDesktopDuplicationCaptureInput.h">
+      <Filter>Headerdateien</Filter>
+    </ClInclude>
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="AtmoWinA.ico">
+      <Filter>Ressourcendateien</Filter>
+    </None>
+    <None Include="AtmoWinA.tlb">
+      <Filter>Ressourcendateien</Filter>
+    </None>
+    <None Include="icon1.ico">
+      <Filter>Ressourcendateien</Filter>
+    </None>
+    <None Include="small.ico">
+      <Filter>Ressourcendateien</Filter>
+    </None>
+  </ItemGroup>
+  <ItemGroup>
+    <ResourceCompile Include="AtmoWinA.rc">
+      <Filter>Ressourcendateien</Filter>
+    </ResourceCompile>
+    <ResourceCompile Include="AtmoWinTlb.rc">
+      <Filter>Ressourcendateien</Filter>
+    </ResourceCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <Manifest Include="AtmoWinA.exe.manifest" />
+  </ItemGroup>
 </Project>
\ No newline at end of file
diff --git a/AtmoWinTrayIconHandler.cpp b/AtmoWinTrayIconHandler.cpp
index ed1cad2..5ade712 100644
--- a/AtmoWinTrayIconHandler.cpp
+++ b/AtmoWinTrayIconHandler.cpp
@@ -29,519 +29,522 @@ http://blogs.msdn.com/oldnewthing/archive/2005/04/22/410773.aspx
 
 int GetFileList(const char *searchkey, std::vector<std::string> &list)
 {
-	WIN32_FIND_DATA fd;
-	HANDLE h = FindFirstFile(searchkey,&fd);
-
-	if(h == INVALID_HANDLE_VALUE)
-	{
-		return 0; // no files found
-	}
-	while(1)
-	{
-		list.push_back(fd.cFileName);
-		if(FindNextFile(h, &fd) == FALSE)
-			break;
-	}
-	return list.size();
+  WIN32_FIND_DATA fd;
+  HANDLE h = FindFirstFile(searchkey, &fd);
+
+  if (h == INVALID_HANDLE_VALUE)
+  {
+    return 0; // no files found
+  }
+  while (1)
+  {
+    list.push_back(fd.cFileName);
+    if (FindNextFile(h, &fd) == FALSE)
+      break;
+  }
+  return list.size();
 }
 
-CTrayIconWindow::CTrayIconWindow(HINSTANCE hInst,CAtmoDynData *pDynData) : CBasicWindow(hInst, (HWND)NULL)
+CTrayIconWindow::CTrayIconWindow(HINSTANCE hInst, CAtmoDynData *pDynData) : CBasicWindow(hInst, (HWND)NULL)
 {
-	this->m_pDynData = pDynData;
+  this->m_pDynData = pDynData;
+  m_bShuttingDown = false;
 }
 
-CTrayIconWindow::~CTrayIconWindow() 
+CTrayIconWindow::~CTrayIconWindow()
 {
-	ShowNotifyIcon(ATMO_FALSE);
+  ShowNotifyIcon(ATMO_FALSE);
 }
 
-LPCTSTR CTrayIconWindow::ClassName() 
+LPCTSTR CTrayIconWindow::ClassName()
 {
-	return TEXT("AtmoTrayIconWinClass");
+  return TEXT("AtmoTrayIconWinClass");
 }
 
-void CTrayIconWindow::createWindow() 
+void CTrayIconWindow::createWindow()
 {
-	CBasicWindow::createWindow();
+  CBasicWindow::createWindow();
 
-	ShowNotifyIcon(ATMO_TRUE);
+  ShowNotifyIcon(ATMO_TRUE);
 
-	CLanguage *Lng = new CLanguage;
+  CLanguage *Lng = new CLanguage;
 
-	// GetSpecialFolder
-	Lng->szCurrentDir[Lng->GetSpecialFolder(CSIDL_COMMON_APPDATA)];
-	if (!Lng->DirectoryExists(Lng->szCurrentDir ))
-	{
-		CreateDirectory(Lng->szCurrentDir, NULL);
-	}
+  // GetSpecialFolder
+  Lng->szCurrentDir[Lng->GetSpecialFolder(CSIDL_COMMON_APPDATA)];
+  if (!Lng->DirectoryExists(Lng->szCurrentDir))
+  {
+    CreateDirectory(Lng->szCurrentDir, NULL);
+  }
 
-	sprintf(Lng->szFileINI, "%s\\Language.ini\0", Lng->szCurrentDir);
+  sprintf(Lng->szFileINI, "%s\\Language.ini\0", Lng->szCurrentDir);
 
-	this->m_hLanguageSubMenu = CreatePopupMenu();
+  this->m_hLanguageSubMenu = CreatePopupMenu();
 
-	// Find available Language Files
-	void *hSearch;
-	WIN32_FIND_DATA wfd;
-	char szFile[MAX_PATH];
+  // Find available Language Files
+  void *hSearch;
+  WIN32_FIND_DATA wfd;
+  char szFile[MAX_PATH];
 
-	CString strExtension   = _T("\\*.xml");
-	strcat(Lng->szCurrentDir, strExtension);
+  CString strExtension = _T("\\*.xml");
+  strcat(Lng->szCurrentDir, strExtension);
 
-	hSearch = FindFirstFile(Lng->szCurrentDir, &wfd);
-	GetPrivateProfileString("Common", "Language", "English", Lng->szLang, 256, Lng->szFileINI);
+  hSearch = FindFirstFile(Lng->szCurrentDir, &wfd);
+  GetPrivateProfileString("Common", "Language", "English", Lng->szLang, 256, Lng->szFileINI);
 
-	nCurrentLanguage = MENUID_FIRST_LANGUAGE;
-	AppendMenu(m_hLanguageSubMenu, MF_STRING, MENUID_FIRST_LANGUAGE, "English");
-	nLanguages = 1;
+  nCurrentLanguage = MENUID_FIRST_LANGUAGE;
+  AppendMenu(m_hLanguageSubMenu, MF_STRING, MENUID_FIRST_LANGUAGE, "English");
+  nLanguages = 1;
 
-	if (hSearch != INVALID_HANDLE_VALUE)
-	{
-		do
-		{
-			strcpy(szFile, wfd.cFileName);
-			szFile[strlen(szFile) - 4] = 0;
-			if (!strcmp(szFile, "English"))
-				continue;
+  if (hSearch != INVALID_HANDLE_VALUE)
+  {
+    do
+    {
+      strcpy(szFile, wfd.cFileName);
+      szFile[strlen(szFile) - 4] = 0;
+      if (!strcmp(szFile, "English"))
+        continue;
 
-			if (!strcmp(szFile, Lng->szLang))
-				nCurrentLanguage = MENUID_FIRST_LANGUAGE + nLanguages;
-			AppendMenu(m_hLanguageSubMenu, MF_STRING, MENUID_FIRST_LANGUAGE + nLanguages, szFile);
-			nLanguages++;
-		}
-		while (FindNextFile(hSearch, &wfd));
-	}
-	FindClose(hSearch);
+      if (!strcmp(szFile, Lng->szLang))
+        nCurrentLanguage = MENUID_FIRST_LANGUAGE + nLanguages;
+      AppendMenu(m_hLanguageSubMenu, MF_STRING, MENUID_FIRST_LANGUAGE + nLanguages, szFile);
+      nLanguages++;
+    } while (FindNextFile(hSearch, &wfd));
+  }
+  FindClose(hSearch);
 
-	// Read Buffer from IniFile
-	Lng->szCurrentDir[Lng->GetSpecialFolder(CSIDL_COMMON_APPDATA)];
-	sprintf(Lng->szTemp, "%s\\%s.xml\0", Lng->szCurrentDir, Lng->szLang);
+  // Read Buffer from IniFile
+  Lng->szCurrentDir[Lng->GetSpecialFolder(CSIDL_COMMON_APPDATA)];
+  sprintf(Lng->szTemp, "%s\\%s.xml\0", Lng->szCurrentDir, Lng->szLang);
 
-	// Create Default Xml Language if not exists
-	ifstream FileExists(Lng->szTemp);
-	if (Lng->szTemp != "" && FileExists)
-	{
-		Lng->XMLParse(Lng->szTemp, Lng->sMenuText, "Menu");
-	}
-	else
-	{
-		Lng->CreateDefaultXML(Lng->szTemp, sSection);
-		Lng->XMLParse(Lng->szTemp, Lng->sMenuText, "Menu");
-	}
+  // Create Default Xml Language if not exists
+  ifstream FileExists(Lng->szTemp);
+  if (Lng->szTemp != "" && FileExists)
+  {
+    Lng->XMLParse(Lng->szTemp, Lng->sMenuText, "Menu");
+  }
+  else
+  {
+    Lng->CreateDefaultXML(Lng->szTemp, sSection);
+    Lng->XMLParse(Lng->szTemp, Lng->sMenuText, "Menu");
+  }
 
-	this->m_hTrayIconPopupMenu = CreatePopupMenu();
-	lstrcpyn(data, Lng->sMenuText[0], 1023);
-	AddMenuItem(this->m_hTrayIconPopupMenu, 0, data, ATMO_TRUE, ATMO_TRUE, ATMO_FALSE, MENUID_SETTINGS);
+  this->m_hTrayIconPopupMenu = CreatePopupMenu();
+  lstrcpyn(data, Lng->sMenuText[0], 1023);
+  AddMenuItem(this->m_hTrayIconPopupMenu, 0, data, ATMO_TRUE, ATMO_TRUE, ATMO_FALSE, MENUID_SETTINGS);
 
-	lstrcpyn(data, Lng->sMenuText[1], 1023);
-	AddMenuItem(this->m_hTrayIconPopupMenu, this->m_hLanguageSubMenu, data, ATMO_TRUE, ATMO_FALSE, ATMO_FALSE, MENUID_LANGUAGE_SUBMENU);
+  lstrcpyn(data, Lng->sMenuText[1], 1023);
+  AddMenuItem(this->m_hTrayIconPopupMenu, this->m_hLanguageSubMenu, data, ATMO_TRUE, ATMO_FALSE, ATMO_FALSE, MENUID_LANGUAGE_SUBMENU);
 
-	lstrcpyn(data, Lng->sMenuText[2], 1023);	
-	this->m_hModusSubMenu = CreatePopupMenu();
-	AddMenuItem(this->m_hTrayIconPopupMenu, this->m_hModusSubMenu, data, ATMO_TRUE, ATMO_FALSE, ATMO_FALSE, MENUID_EFFECT_SUBMENU);
+  lstrcpyn(data, Lng->sMenuText[2], 1023);
+  this->m_hModusSubMenu = CreatePopupMenu();
+  AddMenuItem(this->m_hTrayIconPopupMenu, this->m_hModusSubMenu, data, ATMO_TRUE, ATMO_FALSE, ATMO_FALSE, MENUID_EFFECT_SUBMENU);
 
-	lstrcpyn(data, Lng->sMenuText[3], 1023);
-	AddMenuItem(m_hModusSubMenu, 0, data, ATMO_TRUE, ATMO_FALSE, ATMO_TRUE, MENUID_EFFECTS_OFF);
+  lstrcpyn(data, Lng->sMenuText[3], 1023);
+  AddMenuItem(m_hModusSubMenu, 0, data, ATMO_TRUE, ATMO_FALSE, ATMO_TRUE, MENUID_EFFECTS_OFF);
 
-	lstrcpyn(data, Lng->sMenuText[4], 1023);
-	AddMenuItem(m_hModusSubMenu, 0, data,  ATMO_TRUE, ATMO_FALSE, ATMO_TRUE, MENUID_EFFECT_LIVE);
+  lstrcpyn(data, Lng->sMenuText[4], 1023);
+  AddMenuItem(m_hModusSubMenu, 0, data, ATMO_TRUE, ATMO_FALSE, ATMO_TRUE, MENUID_EFFECT_LIVE);
 
-	lstrcpyn(data, Lng->sMenuText[5], 1023);
-	AddMenuItem(m_hModusSubMenu, 0, data, ATMO_TRUE, ATMO_FALSE, ATMO_TRUE, MENUID_EFFECT_STATIC);
+  lstrcpyn(data, Lng->sMenuText[5], 1023);
+  AddMenuItem(m_hModusSubMenu, 0, data, ATMO_TRUE, ATMO_FALSE, ATMO_TRUE, MENUID_EFFECT_STATIC);
 
-	lstrcpyn(data, Lng->sMenuText[6], 1023);
-	AddMenuItem(m_hModusSubMenu, 0, data, ATMO_TRUE, ATMO_FALSE, ATMO_TRUE, MENUID_EFFECT_CCHANGER);
+  lstrcpyn(data, Lng->sMenuText[6], 1023);
+  AddMenuItem(m_hModusSubMenu, 0, data, ATMO_TRUE, ATMO_FALSE, ATMO_TRUE, MENUID_EFFECT_CCHANGER);
 
-	lstrcpyn(data, Lng->sMenuText[7], 1023);
-	AddMenuItem(m_hModusSubMenu, 0, data,  ATMO_TRUE, ATMO_FALSE, ATMO_TRUE, MENUID_EFFECT_LRCHANGER);
+  lstrcpyn(data, Lng->sMenuText[7], 1023);
+  AddMenuItem(m_hModusSubMenu, 0, data, ATMO_TRUE, ATMO_FALSE, ATMO_TRUE, MENUID_EFFECT_LRCHANGER);
 
-	lstrcpyn(data, Lng->sMenuText[8], 1023);
-	this->m_hChannelMappingSubMenu = CreatePopupMenu();
-	AddMenuItem(this->m_hTrayIconPopupMenu, this->m_hChannelMappingSubMenu, data, ATMO_TRUE, ATMO_FALSE, ATMO_FALSE, MENUID_CHANNELMAPPING);
+  lstrcpyn(data, Lng->sMenuText[8], 1023);
+  this->m_hChannelMappingSubMenu = CreatePopupMenu();
+  AddMenuItem(this->m_hTrayIconPopupMenu, this->m_hChannelMappingSubMenu, data, ATMO_TRUE, ATMO_FALSE, ATMO_FALSE, MENUID_CHANNELMAPPING);
 
-	AddMenuSeperator(this->m_hTrayIconPopupMenu);
+  AddMenuSeperator(this->m_hTrayIconPopupMenu);
 
-	lstrcpyn(data, Lng->sMenuText[9], 1023);
-	AddMenuItem(this->m_hTrayIconPopupMenu, 0, data, ATMO_TRUE, ATMO_FALSE, ATMO_FALSE, MENUID_INFO);
+  lstrcpyn(data, Lng->sMenuText[9], 1023);
+  AddMenuItem(this->m_hTrayIconPopupMenu, 0, data, ATMO_TRUE, ATMO_FALSE, ATMO_FALSE, MENUID_INFO);
 
-	AddMenuSeperator(this->m_hTrayIconPopupMenu);
+  AddMenuSeperator(this->m_hTrayIconPopupMenu);
 
-	lstrcpyn(data, Lng->sMenuText[10], 1023);
-	AddMenuItem(this->m_hTrayIconPopupMenu, 0, data, ATMO_TRUE, ATMO_FALSE, ATMO_FALSE, MENUID_QUITATMO);
+  lstrcpyn(data, Lng->sMenuText[10], 1023);
+  AddMenuItem(this->m_hTrayIconPopupMenu, 0, data, ATMO_TRUE, ATMO_FALSE, ATMO_FALSE, MENUID_QUITATMO);
 
 }
 
-LRESULT CTrayIconWindow::HandleMessage(UINT message, WPARAM wParam, LPARAM lParam) 
+LRESULT CTrayIconWindow::HandleMessage(UINT message, WPARAM wParam, LPARAM lParam)
 {
-	char *res_buffer1;
-	char *res_buffer2;
-
-	switch(message) 
-	{
-	case WM_TRAYMESSAGE:
-		if(wParam == TrayIconId)
-		{
-			switch(lParam) 
-			{
-			case WM_RBUTTONDOWN:
-				{
-					UpdatePopupMenu();
-					POINT mouse_cursor_pos;
-					GetCursorPos(&mouse_cursor_pos);
-					// (Fenster ist zwar nicht sichtbar - aber windows gibt sich damit zufrieden - sonst wird das Menu nicht mehr ausgeblendet?)
-					SetForegroundWindow(m_hWindow);
-					TrackPopupMenu(m_hTrayIconPopupMenu, TPM_RIGHTALIGN | TPM_LEFTBUTTON, mouse_cursor_pos.x, mouse_cursor_pos.y,  0, m_hWindow, NULL);
-					PostMessage(m_hWindow, WM_NULL, 0, 0);
-					break;
-				}
-
-			case WM_LBUTTONDOWN:
-				// MessageBox(0,"WM_LBUTTONDOWN","",0);
-				break;
-
-			case WM_LBUTTONDBLCLK:
-				// MessageBox(0,"WM_LBUTTONDBLCLK","",0);
-				// Show Config Dialog?
-				ShowSettingsDialog();
-				break;
-			}
-		}
-		break;
-
-	case WM_POWERBROADCAST:
-	case WM_POWER:
-		{
-			// m_eEffectModeBeforeSuspend
-			switch(wParam) 
-			{
-			case PBT_APMSUSPEND:
-			case PBT_APMSTANDBY:
-			case PWR_SUSPENDREQUEST:
-			case PBT_APMQUERYSUSPEND:
-				{
-					m_eEffectModeBeforeSuspend = CAtmoTools::SwitchEffect(this->m_pDynData, emDisabled);
-					CAtmoTools::ShowShutdownColor(this->m_pDynData);
-					CAtmoConnection *pAtmoConnection = this->m_pDynData->getAtmoConnection();
-					if(pAtmoConnection)
-						pAtmoConnection->CloseConnection();  
-					break;
-				}
-			case PBT_APMRESUMEAUTOMATIC:
-			case PBT_APMRESUMECRITICAL:
-			case PBT_APMRESUMESUSPEND:
-			case PBT_APMRESUMESTANDBY:
-			case PWR_SUSPENDRESUME:
-				{
-					int i = 0;
-					do
-					{
-						Sleep(2000);
-						i++;
-					}
-					while (!CAtmoTools::RecreateConnection( this->m_pDynData) && (i<30));
-					CAtmoTools::SwitchEffect(this->m_pDynData, m_eEffectModeBeforeSuspend);
-					break;
-				}
-			}
-			break;
-		}
-
-	case WM_DISPLAYCHANGE: 
-		{
-			CAtmoConfig *pAtmoConfig = m_pDynData->getAtmoConfig();
-
-			CAtmoDisplays *pAtmoDisplays = m_pDynData->getAtmoDisplays();
-			pAtmoDisplays->ReloadList();
-
-			EffectMode oldEffectMode = pAtmoConfig->getEffectMode();
-			if(oldEffectMode == emLivePicture)
-			{
-				CAtmoTools::SwitchEffect(m_pDynData, emDisabled);
-			}
-
-			if(pAtmoConfig->getLiveView_DisplayNr()>=pAtmoDisplays->getCount()) 
-			{
-				// show Setup.. dialog?
-				res_buffer1 = getResStr( IDS_DISPLAY_SETCHANGED, "Display Einstellungen wurden ver�ndert. Bitte Einstellungen �berpr�fen.");
-				res_buffer2 = getResStr( IDS_INFO, "Info");
-
-				MessageBox(this->m_hWindow, res_buffer1, res_buffer2 ,MB_ICONWARNING | MB_OK);
-
-				free(res_buffer1);
-				free(res_buffer2);
-
-				pAtmoConfig->setLiveView_DisplayNr(0);
-				ShowSettingsDialog();
-			}
-
-			if((pAtmoConfig->getEffectMode() == emDisabled) && (oldEffectMode == emLivePicture))
-			{
-				CAtmoTools::SwitchEffect(m_pDynData, oldEffectMode);
-			}
-			break;
-		}
-
-	case WM_QUERYENDSESSION:
-		// wenn sich der User abmeldet, oder Windows herunterf�hrt... das Programm beenden... bevors abgeschossen wird (von Wegen Anwendung reagiert nicht!)
-		CAtmoTools::SwitchEffect(this->m_pDynData, emDisabled);
-		CAtmoTools::ShowShutdownColor(this->m_pDynData);
-		DestroyWindow(m_hWindow);
-		return ATMO_TRUE;
-
-	case WM_SETEFFECT:
-		{
-			if((wParam>=0) && (wParam<=4)) 
-			{
-				EffectMode oldEffectMode = CAtmoTools::SwitchEffect(this->m_pDynData, (EffectMode)wParam);
-				return (int)oldEffectMode;
-			} else {
-				return -1;
-			}
-		}
-
-	case WM_NEXTEFFECT: 
-		{
-			EffectMode oldEffectMode = this->m_pDynData->getAtmoConfig()->getEffectMode();
-			int i = ((int)oldEffectMode)+1;
-			if(i > (int)emLrColorChange) i = (int)emStaticColor;
-			CAtmoTools::SwitchEffect(this->m_pDynData, (EffectMode)i);
-			return oldEffectMode;
-		}
-	default:
-		return CBasicWindow::HandleMessage(message,wParam,lParam);
-	}
-
-	return 0;
+  char *res_buffer1;
+  char *res_buffer2;
+
+  switch (message)
+  {
+  case WM_TRAYMESSAGE:
+    if (wParam == TrayIconId)
+    {
+      switch (lParam)
+      {
+      case WM_RBUTTONDOWN:
+      {
+        UpdatePopupMenu();
+        POINT mouse_cursor_pos;
+        GetCursorPos(&mouse_cursor_pos);
+        // (Fenster ist zwar nicht sichtbar - aber windows gibt sich damit zufrieden - sonst wird das Menu nicht mehr ausgeblendet?)
+        SetForegroundWindow(m_hWindow);
+        TrackPopupMenu(m_hTrayIconPopupMenu, TPM_RIGHTALIGN | TPM_LEFTBUTTON, mouse_cursor_pos.x, mouse_cursor_pos.y, 0, m_hWindow, NULL);
+        PostMessage(m_hWindow, WM_NULL, 0, 0);
+        break;
+      }
+
+      case WM_LBUTTONDOWN:
+        // MessageBox(0,"WM_LBUTTONDOWN","",0);
+        break;
+
+      case WM_LBUTTONDBLCLK:
+        // MessageBox(0,"WM_LBUTTONDBLCLK","",0);
+        // Show Config Dialog?
+        ShowSettingsDialog();
+        break;
+      }
+    }
+    break;
+
+  case WM_POWERBROADCAST:
+  case WM_POWER:
+  {
+    // m_eEffectModeBeforeSuspend
+    switch (wParam)
+    {
+    case PBT_APMSUSPEND:
+    case PBT_APMSTANDBY:
+    case PWR_SUSPENDREQUEST:
+    case PBT_APMQUERYSUSPEND:
+    {
+      m_eEffectModeBeforeSuspend = CAtmoTools::SwitchEffect(this->m_pDynData, emDisabled);
+      CAtmoTools::ShowShutdownColor(this->m_pDynData);
+      CAtmoConnection *pAtmoConnection = this->m_pDynData->getAtmoConnection();
+      if (pAtmoConnection)
+        pAtmoConnection->CloseConnection();
+      break;
+    }
+    case PBT_APMRESUMEAUTOMATIC:
+    case PBT_APMRESUMECRITICAL:
+    case PBT_APMRESUMESUSPEND:
+    case PBT_APMRESUMESTANDBY:
+    case PWR_SUSPENDRESUME:
+    {
+      int i = 0;
+      do
+      {
+        Sleep(2000);
+        i++;
+      } while (!CAtmoTools::RecreateConnection(this->m_pDynData) && (i < 30));
+      CAtmoTools::SwitchEffect(this->m_pDynData, m_eEffectModeBeforeSuspend);
+      break;
+    }
+    }
+    break;
+  }
+
+  case WM_DISPLAYCHANGE:
+  {
+    CAtmoConfig *pAtmoConfig = m_pDynData->getAtmoConfig();
+
+    CAtmoDisplays *pAtmoDisplays = m_pDynData->getAtmoDisplays();
+    pAtmoDisplays->ReloadList();
+
+    EffectMode oldEffectMode = pAtmoConfig->getEffectMode();
+    if (oldEffectMode == emLivePicture)
+    {
+      CAtmoTools::SwitchEffect(m_pDynData, emDisabled);
+    }
+
+    if (pAtmoConfig->getLiveView_DisplayNr() >= pAtmoDisplays->getCount())
+    {
+      // show Setup.. dialog?
+      res_buffer1 = getResStr(IDS_DISPLAY_SETCHANGED, "Display Einstellungen wurden ver�ndert. Bitte Einstellungen �berpr�fen.");
+      res_buffer2 = getResStr(IDS_INFO, "Info");
+
+      MessageBox(this->m_hWindow, res_buffer1, res_buffer2, MB_ICONWARNING | MB_OK);
+
+      free(res_buffer1);
+      free(res_buffer2);
+
+      pAtmoConfig->setLiveView_DisplayNr(0);
+      ShowSettingsDialog();
+    }
+
+    if ((pAtmoConfig->getEffectMode() == emDisabled) && (oldEffectMode == emLivePicture))
+    {
+      CAtmoTools::SwitchEffect(m_pDynData, oldEffectMode);
+    }
+    break;
+  }
+
+  case WM_QUERYENDSESSION:
+    // wenn sich der User abmeldet, oder Windows herunterf�hrt... das Programm beenden... bevors abgeschossen wird (von Wegen Anwendung reagiert nicht!)
+    CAtmoTools::SwitchEffect(this->m_pDynData, emDisabled);
+    CAtmoTools::ShowShutdownColor(this->m_pDynData);
+    DestroyWindow(m_hWindow);
+    return ATMO_TRUE;
+
+  case WM_SETEFFECT:
+  {
+    if ((wParam >= 0) && (wParam <= 4))
+    {
+      EffectMode oldEffectMode = CAtmoTools::SwitchEffect(this->m_pDynData, (EffectMode)wParam);
+      return (int)oldEffectMode;
+    }
+    else {
+      return -1;
+    }
+  }
+
+  case WM_NEXTEFFECT:
+  {
+    EffectMode oldEffectMode = this->m_pDynData->getAtmoConfig()->getEffectMode();
+    int i = ((int)oldEffectMode) + 1;
+    if (i > (int)emLrColorChange) i = (int)emStaticColor;
+    CAtmoTools::SwitchEffect(this->m_pDynData, (EffectMode)i);
+    return oldEffectMode;
+  }
+  default:
+    return CBasicWindow::HandleMessage(message, wParam, lParam);
+  }
+
+  return 0;
 }
 
-void CTrayIconWindow::SetRestart(bool parameter) 
-{ 
-	AppRestart = parameter;
+void CTrayIconWindow::SetRestart(bool parameter)
+{
+  AppRestart = parameter;
 }
 
 bool CTrayIconWindow::GetRestart()
-{ 
-	return AppRestart; 
+{
+  return AppRestart;
 }
 
 LRESULT CTrayIconWindow::HandleWmCommand(HWND control, int wmId, int wmEvent)
 {
-	if((wmId>=MENUID_FIRST_CHANNELMAPPING) && (wmId<=MENUID_LAST_CHANNELMAPPING)) 
-	{
-		int index = wmId - MENUID_FIRST_CHANNELMAPPING;
-		CAtmoTools::SetChannelAssignment(this->m_pDynData, index);
-		return 0;
-	}
-
-	if((wmId>=MENUID_FIRST_LANGUAGE) && (wmId<=MENUID_LAST_LANGUAGE)) 
-	{
-		CAtmoConfig *pAtmoConfig = this->m_pDynData->getAtmoConfig();
-		pAtmoConfig->SaveSettings(HKEY_CURRENT_USER, pAtmoConfig->profile);
-		CAtmoConnection *pAtmoConnection = this->m_pDynData->getAtmoConnection();
-		if(pAtmoConnection) pAtmoConnection->CloseConnection(); 
-
-		int index = wmId - MENUID_FIRST_LANGUAGE;
-		GetMenuString(this->m_hLanguageSubMenu, index, data, 1023, MF_BYPOSITION);
-
-		CLanguage *Lng = new CLanguage;		
-		WritePrivateProfileString("Common", "Language", data, Lng->szFileINI);
-		PostMessage(m_hWindow, WM_QUIT, 0, 0); 				
-		ShowNotifyIcon(false);
-		SetRestart(true);
-		return 0;
-	}
-
-	switch (wmId) 
-	{
-	case MENUID_QUITATMO:
-		{
-			CAtmoConfig *pAtmoConfig = this->m_pDynData->getAtmoConfig();
-			pAtmoConfig->SaveSettings(HKEY_CURRENT_USER, pAtmoConfig->profile);
-			CAtmoConnection *pAtmoConnection = this->m_pDynData->getAtmoConnection();
-			if(pAtmoConnection) pAtmoConnection->CloseConnection();  			 
-			PostMessage(m_hWindow, WM_QUIT, 0, 0); 		
-			ShowNotifyIcon(false);
-			//DestroyWindow(m_hWindow);
-			break;											 
-		}
-
-	case MENUID_EFFECTS_OFF:
-		CAtmoTools::SwitchEffect(this->m_pDynData,emDisabled);
-		break;
-
-	case MENUID_EFFECT_STATIC:
-		CAtmoTools::SwitchEffect(this->m_pDynData,emStaticColor);
-		break;
-
-	case MENUID_EFFECT_LIVE:
-		CAtmoTools::SwitchEffect(this->m_pDynData,emLivePicture);
-		break;
-
-	case MENUID_EFFECT_CCHANGER:
-		CAtmoTools::SwitchEffect(this->m_pDynData,emColorChange);
-		break;
-
-	case MENUID_EFFECT_LRCHANGER:
-		CAtmoTools::SwitchEffect(this->m_pDynData,emLrColorChange);
-		break;
-
-	case MENUID_SETTINGS:
-		// setup Dialog zeigen ...
-		ShowSettingsDialog();
-		break;
-
-	case MENUID_INFO: 
-		{
-			CInfoDialog *dlg = new CInfoDialog(this->m_hInst, this->m_hWindow);
-			dlg->ShowModal();
-			delete dlg;
-			break;
-		}
-
-	default:
-		return CBasicWindow::HandleWmCommand(control,wmId,wmEvent);
-	}
-	return 0;
+  if ((wmId >= MENUID_FIRST_CHANNELMAPPING) && (wmId <= MENUID_LAST_CHANNELMAPPING))
+  {
+    int index = wmId - MENUID_FIRST_CHANNELMAPPING;
+    CAtmoTools::SetChannelAssignment(this->m_pDynData, index);
+    return 0;
+  }
+
+  if ((wmId >= MENUID_FIRST_LANGUAGE) && (wmId <= MENUID_LAST_LANGUAGE))
+  {
+    CAtmoConfig *pAtmoConfig = this->m_pDynData->getAtmoConfig();
+    pAtmoConfig->SaveSettings(HKEY_CURRENT_USER, pAtmoConfig->profile);
+    CAtmoConnection *pAtmoConnection = this->m_pDynData->getAtmoConnection();
+    if (pAtmoConnection) pAtmoConnection->CloseConnection();
+
+    int index = wmId - MENUID_FIRST_LANGUAGE;
+    GetMenuString(this->m_hLanguageSubMenu, index, data, 1023, MF_BYPOSITION);
+
+    CLanguage *Lng = new CLanguage;
+    WritePrivateProfileString("Common", "Language", data, Lng->szFileINI);
+    PostMessage(m_hWindow, WM_QUIT, 0, 0);
+    ShowNotifyIcon(false);
+    SetRestart(true);
+    return 0;
+  }
+
+  switch (wmId)
+  {
+  case MENUID_QUITATMO:
+  {
+    m_bShuttingDown = true;
+    CAtmoConfig *pAtmoConfig = this->m_pDynData->getAtmoConfig();
+    pAtmoConfig->SaveSettings(HKEY_CURRENT_USER, pAtmoConfig->profile);
+    CAtmoConnection *pAtmoConnection = this->m_pDynData->getAtmoConnection();
+    if (pAtmoConnection) pAtmoConnection->CloseConnection();
+    PostMessage(m_hWindow, WM_QUIT, 0, 0);
+    ShowNotifyIcon(false);
+    //DestroyWindow(m_hWindow);
+    break;
+  }
+
+  case MENUID_EFFECTS_OFF:
+    CAtmoTools::SwitchEffect(this->m_pDynData, emDisabled);
+    break;
+
+  case MENUID_EFFECT_STATIC:
+    CAtmoTools::SwitchEffect(this->m_pDynData, emStaticColor);
+    break;
+
+  case MENUID_EFFECT_LIVE:
+    CAtmoTools::SwitchEffect(this->m_pDynData, emLivePicture);
+    break;
+
+  case MENUID_EFFECT_CCHANGER:
+    CAtmoTools::SwitchEffect(this->m_pDynData, emColorChange);
+    break;
+
+  case MENUID_EFFECT_LRCHANGER:
+    CAtmoTools::SwitchEffect(this->m_pDynData, emLrColorChange);
+    break;
+
+  case MENUID_SETTINGS:
+    // setup Dialog zeigen ...
+    ShowSettingsDialog();
+    break;
+
+  case MENUID_INFO:
+  {
+    CInfoDialog *dlg = new CInfoDialog(this->m_hInst, this->m_hWindow);
+    dlg->ShowModal();
+    delete dlg;
+    break;
+  }
+
+  default:
+    return CBasicWindow::HandleWmCommand(control, wmId, wmEvent);
+  }
+  return 0;
 }
 
 void CTrayIconWindow::HandleWmDestroy()
 {
-	// Do nothing or AutoRestart not work
-	//PostQuitMessage(0);
+  // Do nothing or AutoRestart not work
+  //PostQuitMessage(0);
 }
 
 
 void CTrayIconWindow::ShowNotifyIcon(ATMO_BOOL bAdd) // Tray Icon Anzeigen/Ausblenden
 {
-	NOTIFYICONDATA nid;
-	ZeroMemory(&nid,sizeof(nid));
-
-	nid.cbSize   =  sizeof(NOTIFYICONDATA);
-	nid.hWnd     = m_hWindow;
-	nid.uID      = TrayIconId;
-	nid.uFlags   = NIF_ICON | NIF_MESSAGE | NIF_TIP;
-	nid.uCallbackMessage = WM_TRAYMESSAGE;
-	nid.hIcon    = LoadIcon(m_hInst,MAKEINTRESOURCE(IDI_ATMOICON));
-	lstrcpy(nid.szTip,TEXT("AtmoWinX"));
-	if( bAdd == ATMO_TRUE )
-		Shell_NotifyIcon(NIM_ADD,&nid);
-	else
-		Shell_NotifyIcon(NIM_DELETE,&nid);
+  NOTIFYICONDATA nid;
+  ZeroMemory(&nid, sizeof(nid));
+
+  nid.cbSize = sizeof(NOTIFYICONDATA);
+  nid.hWnd = m_hWindow;
+  nid.uID = TrayIconId;
+  nid.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;
+  nid.uCallbackMessage = WM_TRAYMESSAGE;
+  nid.hIcon = LoadIcon(m_hInst, MAKEINTRESOURCE(IDI_ATMOICON));
+  lstrcpy(nid.szTip, TEXT("AtmoWinX"));
+  if (bAdd == ATMO_TRUE)
+    Shell_NotifyIcon(NIM_ADD, &nid);
+  else
+    Shell_NotifyIcon(NIM_DELETE, &nid);
 }
 
-ATMO_BOOL CTrayIconWindow::AddMenuSeperator(HMENU toMenu) 
+ATMO_BOOL CTrayIconWindow::AddMenuSeperator(HMENU toMenu)
 {
-	MENUITEMINFO menuiteminfo;
-	menuiteminfo.cbSize        = sizeof(MENUITEMINFO);
-	menuiteminfo.fMask         = MIIM_CHECKMARKS | MIIM_DATA | MIIM_ID | MIIM_STATE | MIIM_TYPE | MIIM_SUBMENU;
-	menuiteminfo.fType         = MFT_SEPARATOR;
-	menuiteminfo.fState        = MFS_UNCHECKED | MFS_ENABLED;
-	menuiteminfo.wID           = 0;
-	menuiteminfo.hSubMenu      = 0;
-	menuiteminfo.hbmpChecked   = 0;
-	menuiteminfo.hbmpUnchecked = 0;
-	menuiteminfo.dwTypeData    = NULL;
-	return (InsertMenuItem(toMenu,(DWORD)-1,ATMO_TRUE, &menuiteminfo) != 0);
+  MENUITEMINFO menuiteminfo;
+  menuiteminfo.cbSize = sizeof(MENUITEMINFO);
+  menuiteminfo.fMask = MIIM_CHECKMARKS | MIIM_DATA | MIIM_ID | MIIM_STATE | MIIM_TYPE | MIIM_SUBMENU;
+  menuiteminfo.fType = MFT_SEPARATOR;
+  menuiteminfo.fState = MFS_UNCHECKED | MFS_ENABLED;
+  menuiteminfo.wID = 0;
+  menuiteminfo.hSubMenu = 0;
+  menuiteminfo.hbmpChecked = 0;
+  menuiteminfo.hbmpUnchecked = 0;
+  menuiteminfo.dwTypeData = NULL;
+  return (InsertMenuItem(toMenu, (DWORD)-1, ATMO_TRUE, &menuiteminfo) != 0);
 }
 
-ATMO_BOOL CTrayIconWindow::AddMenuItem(HMENU toMenu,HMENU subMenu,char *caption,ATMO_BOOL enabled,ATMO_BOOL defaultMenu,ATMO_BOOL radioItem,UINT menuID) 
+ATMO_BOOL CTrayIconWindow::AddMenuItem(HMENU toMenu, HMENU subMenu, char *caption, ATMO_BOOL enabled, ATMO_BOOL defaultMenu, ATMO_BOOL radioItem, UINT menuID)
 {
-	MENUITEMINFO menuiteminfo;
-	menuiteminfo.cbSize        = sizeof(MENUITEMINFO);
-	menuiteminfo.fMask         = MIIM_CHECKMARKS | MIIM_DATA | MIIM_ID | MIIM_STATE | MIIM_TYPE | MIIM_SUBMENU;
-
-	if(subMenu!=0)
-		menuiteminfo.fMask = menuiteminfo.fMask |  MIIM_SUBMENU;
-
-	menuiteminfo.fType         = MFT_STRING;
-	if(radioItem)
-		menuiteminfo.fType      = menuiteminfo.fType | MFT_RADIOCHECK;
-
-
-	menuiteminfo.fState        = MFS_UNCHECKED;
-	if(defaultMenu)
-		menuiteminfo.fState = menuiteminfo.fState | MFS_DEFAULT;
-	if(enabled)
-		menuiteminfo.fState = menuiteminfo.fState | MFS_ENABLED;
-	else
-		menuiteminfo.fState = menuiteminfo.fState | MFS_DISABLED;
-
-	menuiteminfo.wID           = menuID; // MENUID_QUITATMO;
-	menuiteminfo.hSubMenu      = subMenu;
-	menuiteminfo.hbmpChecked   = 0;
-	menuiteminfo.hbmpUnchecked = 0;
-	menuiteminfo.dwTypeData    = caption;
-	return (InsertMenuItem(toMenu,(DWORD)-1,ATMO_TRUE, &menuiteminfo) != 0);
+  MENUITEMINFO menuiteminfo;
+  menuiteminfo.cbSize = sizeof(MENUITEMINFO);
+  menuiteminfo.fMask = MIIM_CHECKMARKS | MIIM_DATA | MIIM_ID | MIIM_STATE | MIIM_TYPE | MIIM_SUBMENU;
+
+  if (subMenu != 0)
+    menuiteminfo.fMask = menuiteminfo.fMask | MIIM_SUBMENU;
+
+  menuiteminfo.fType = MFT_STRING;
+  if (radioItem)
+    menuiteminfo.fType = menuiteminfo.fType | MFT_RADIOCHECK;
+
+
+  menuiteminfo.fState = MFS_UNCHECKED;
+  if (defaultMenu)
+    menuiteminfo.fState = menuiteminfo.fState | MFS_DEFAULT;
+  if (enabled)
+    menuiteminfo.fState = menuiteminfo.fState | MFS_ENABLED;
+  else
+    menuiteminfo.fState = menuiteminfo.fState | MFS_DISABLED;
+
+  menuiteminfo.wID = menuID; // MENUID_QUITATMO;
+  menuiteminfo.hSubMenu = subMenu;
+  menuiteminfo.hbmpChecked = 0;
+  menuiteminfo.hbmpUnchecked = 0;
+  menuiteminfo.dwTypeData = caption;
+  return (InsertMenuItem(toMenu, (DWORD)-1, ATMO_TRUE, &menuiteminfo) != 0);
 }
 
-void CTrayIconWindow::ShowSettingsDialog() 
+void CTrayIconWindow::ShowSettingsDialog()
 {
-	static ATMO_BOOL showing = ATMO_TRUE;
+  static ATMO_BOOL showing = ATMO_TRUE;
 
-	m_pDynData->LockCriticalSection();
-	if(showing == ATMO_FALSE) 
-	{ 
-		m_pDynData->UnLockCriticalSection(); 
-		return; 
-	}
-	showing = ATMO_FALSE;
-	m_pDynData->UnLockCriticalSection();
+  m_pDynData->LockCriticalSection();
+  if (showing == ATMO_FALSE)
+  {
+    m_pDynData->UnLockCriticalSection();
+    return;
+  }
+  showing = ATMO_FALSE;
+  m_pDynData->UnLockCriticalSection();
 
-	CAtmoSettingsDialog *pSetupDlg = new CAtmoSettingsDialog(this->m_hInst,this->m_hWindow, this->m_pDynData);
+  CAtmoSettingsDialog *pSetupDlg = new CAtmoSettingsDialog(this->m_hInst, this->m_hWindow, this->m_pDynData);
 
-	pSetupDlg->ShowModal();
+  pSetupDlg->ShowModal();
 
-	delete pSetupDlg;
+  delete pSetupDlg;
 
+  if (m_bShuttingDown)
+    return;
 
-	m_pDynData->LockCriticalSection();
-	showing = ATMO_TRUE;
-	m_pDynData->UnLockCriticalSection();
+  m_pDynData->LockCriticalSection();
+  showing = ATMO_TRUE;
+  m_pDynData->UnLockCriticalSection();
 }
 
 
 
 void CTrayIconWindow::UpdatePopupMenu()
 {
-	// Update the Enabled and Radio state of the Popupmenu...
-	// before show the menu...
-	CAtmoConnection *pAtmoConnection = this->m_pDynData->getAtmoConnection();
-	CAtmoConfig *pAtmoConfig = this->m_pDynData->getAtmoConfig();
-	if((pAtmoConnection == NULL) || (pAtmoConnection->isOpen()==ATMO_FALSE)) 
-	{
-		// disable change effect submenu!
-		EnableMenuItem(this->m_hTrayIconPopupMenu, MENUID_EFFECT_SUBMENU, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED );
-	} 
-	else 
-	{
-		// enable submenu
-		EnableMenuItem(this->m_hTrayIconPopupMenu, MENUID_EFFECT_SUBMENU, MF_BYCOMMAND | MF_ENABLED);
-	}
-
-	CheckMenuItem(this->m_hModusSubMenu,MENUID_EFFECTS_OFF,      MF_BYCOMMAND |  
-		((pAtmoConfig->getEffectMode()==emDisabled) ? MF_CHECKED : MF_UNCHECKED) );
-	CheckMenuItem(this->m_hModusSubMenu,MENUID_EFFECT_STATIC,    MF_BYCOMMAND |  
-		((pAtmoConfig->getEffectMode()==emStaticColor) ? MF_CHECKED : MF_UNCHECKED) );
-	CheckMenuItem(this->m_hModusSubMenu,MENUID_EFFECT_LIVE,      MF_BYCOMMAND | 
-		((pAtmoConfig->getEffectMode()==emLivePicture) ? MF_CHECKED : MF_UNCHECKED) );
-	CheckMenuItem(this->m_hModusSubMenu,MENUID_EFFECT_CCHANGER,  MF_BYCOMMAND |  
-		((pAtmoConfig->getEffectMode()==emColorChange) ? MF_CHECKED : MF_UNCHECKED) );
-	CheckMenuItem(this->m_hModusSubMenu,MENUID_EFFECT_LRCHANGER, MF_BYCOMMAND |  
-		((pAtmoConfig->getEffectMode()==emLrColorChange) ? MF_CHECKED : MF_UNCHECKED) );
-
-	//Default Language Submenu english
-	CheckMenuItem(this->m_hLanguageSubMenu, nCurrentLanguage, MF_CHECKED);
-
-	for(int i=0;i<10;i++)
-		if(DeleteMenu(this->m_hChannelMappingSubMenu,MENUID_CHANNELMAPPING+1+i,MF_BYCOMMAND) == ATMO_FALSE) break;
-
-	int currentAssignment = pAtmoConfig->getCurrentChannelAssignment();
-	for(int i=0;i<pAtmoConfig->getNumChannelAssignments();i++) 
-	{
-		CAtmoChannelAssignment *ca = pAtmoConfig->getChannelAssignment(i);
-		AddMenuItem(this->m_hChannelMappingSubMenu, 0, ca->getName(), ATMO_TRUE, ATMO_FALSE, ATMO_TRUE, MENUID_CHANNELMAPPING+1+i);
-		if(currentAssignment == i) 
-		{
-			CheckMenuItem(this->m_hChannelMappingSubMenu,MENUID_CHANNELMAPPING+1+i, MF_BYCOMMAND | MF_CHECKED);
-		}
-	}
+  // Update the Enabled and Radio state of the Popupmenu...
+  // before show the menu...
+  CAtmoConnection *pAtmoConnection = this->m_pDynData->getAtmoConnection();
+  CAtmoConfig *pAtmoConfig = this->m_pDynData->getAtmoConfig();
+  if ((pAtmoConnection == NULL) || (pAtmoConnection->isOpen() == ATMO_FALSE))
+  {
+    // disable change effect submenu!
+    EnableMenuItem(this->m_hTrayIconPopupMenu, MENUID_EFFECT_SUBMENU, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
+  }
+  else
+  {
+    // enable submenu
+    EnableMenuItem(this->m_hTrayIconPopupMenu, MENUID_EFFECT_SUBMENU, MF_BYCOMMAND | MF_ENABLED);
+  }
+
+  CheckMenuItem(this->m_hModusSubMenu, MENUID_EFFECTS_OFF, MF_BYCOMMAND |
+    ((pAtmoConfig->getEffectMode() == emDisabled) ? MF_CHECKED : MF_UNCHECKED));
+  CheckMenuItem(this->m_hModusSubMenu, MENUID_EFFECT_STATIC, MF_BYCOMMAND |
+    ((pAtmoConfig->getEffectMode() == emStaticColor) ? MF_CHECKED : MF_UNCHECKED));
+  CheckMenuItem(this->m_hModusSubMenu, MENUID_EFFECT_LIVE, MF_BYCOMMAND |
+    ((pAtmoConfig->getEffectMode() == emLivePicture) ? MF_CHECKED : MF_UNCHECKED));
+  CheckMenuItem(this->m_hModusSubMenu, MENUID_EFFECT_CCHANGER, MF_BYCOMMAND |
+    ((pAtmoConfig->getEffectMode() == emColorChange) ? MF_CHECKED : MF_UNCHECKED));
+  CheckMenuItem(this->m_hModusSubMenu, MENUID_EFFECT_LRCHANGER, MF_BYCOMMAND |
+    ((pAtmoConfig->getEffectMode() == emLrColorChange) ? MF_CHECKED : MF_UNCHECKED));
+
+  //Default Language Submenu english
+  CheckMenuItem(this->m_hLanguageSubMenu, nCurrentLanguage, MF_CHECKED);
+
+  for (int i = 0; i < 10; i++)
+    if (DeleteMenu(this->m_hChannelMappingSubMenu, MENUID_CHANNELMAPPING + 1 + i, MF_BYCOMMAND) == ATMO_FALSE) break;
+
+  int currentAssignment = pAtmoConfig->getCurrentChannelAssignment();
+  for (int i = 0; i < pAtmoConfig->getNumChannelAssignments(); i++)
+  {
+    CAtmoChannelAssignment *ca = pAtmoConfig->getChannelAssignment(i);
+    AddMenuItem(this->m_hChannelMappingSubMenu, 0, ca->getName(), ATMO_TRUE, ATMO_FALSE, ATMO_TRUE, MENUID_CHANNELMAPPING + 1 + i);
+    if (currentAssignment == i)
+    {
+      CheckMenuItem(this->m_hChannelMappingSubMenu, MENUID_CHANNELMAPPING + 1 + i, MF_BYCOMMAND | MF_CHECKED);
+    }
+  }
 }
\ No newline at end of file
diff --git a/AtmoWinTrayIconHandler.h b/AtmoWinTrayIconHandler.h
index aea7e71..cd0bb18 100644
--- a/AtmoWinTrayIconHandler.h
+++ b/AtmoWinTrayIconHandler.h
@@ -50,6 +50,7 @@ private:
   int nLanguages;
 	TCHAR data[1024];
 	CAtmoDynData *m_pDynData;
+  BOOL m_bShuttingDown;
 
 protected: // --siehe CBasicWindow
 	LPCTSTR ClassName();
diff --git a/dlldata.c b/dlldata.c
new file mode 100644
index 0000000..5ff2121
--- /dev/null
+++ b/dlldata.c
@@ -0,0 +1,37 @@
+/*********************************************************
+   DllData file -- generated by MIDL compiler 
+
+        DO NOT ALTER THIS FILE
+
+   This file is regenerated by MIDL on every IDL file compile.
+
+   To completely reconstruct this file, delete it and rerun MIDL
+   on all the IDL files in this DLL, specifying this file for the
+   /dlldata command line option
+
+*********************************************************/
+
+
+#include <rpcproxy.h>
+
+#ifdef __cplusplus
+extern "C"   {
+#endif
+
+EXTERN_PROXY_FILE( AtmoWin )
+
+
+PROXYFILE_LIST_START
+/* Start of list */
+  REFERENCE_PROXY_FILE( AtmoWin ),
+/* End of list */
+PROXYFILE_LIST_END
+
+
+DLLDATA_ROUTINES( aProxyFileList, GET_DLL_CLSID )
+
+#ifdef __cplusplus
+}  /*extern "C" */
+#endif
+
+/* end of generated dlldata file */
-- 
1.8.0.msysgit.0

