Author: mjansen Date: Wed Mar 15 19:17:44 2017 New Revision: 74177
URL: http://svn.reactos.org/svn/reactos?rev=74177&view=rev Log: [ATL][ATL_APITEST] Allow CString to be initialized with a resource ID + add tests for this. Patch by Katayama Hirofumi MZ. CORE-12917 #resolve #comment Thanks!
Added: trunk/rostests/apitests/atl/devenv/CString.vcxproj Modified: trunk/reactos/sdk/lib/atl/cstringt.h trunk/rostests/apitests/atl/CMakeLists.txt trunk/rostests/apitests/atl/CString.cpp trunk/rostests/apitests/atl/CString.inl trunk/rostests/apitests/atl/devenv/ATLTest.sln
Modified: trunk/reactos/sdk/lib/atl/cstringt.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/sdk/lib/atl/cstringt.h?rev=... ============================================================================== --- trunk/reactos/sdk/lib/atl/cstringt.h [iso-8859-1] (original) +++ trunk/reactos/sdk/lib/atl/cstringt.h [iso-8859-1] Wed Mar 15 19:17:44 2017 @@ -326,48 +326,52 @@ *this = static_cast<const YCHAR*>(strSrc); }
+protected: + /* helper function */ + template <typename T_CHAR> + void LoadFromPtr_(_In_opt_z_ const T_CHAR* pszSrc) + { + if (pszSrc == NULL) + return; + if (IS_INTRESOURCE(pszSrc)) + LoadString(LOWORD(pszSrc)); + else + *this = pszSrc; + } + +public: CStringT(_In_opt_z_ const XCHAR* pszSrc) : - CThisSimpleString( StringTraits::GetDefaultManager() ) - { - // FIXME: Check whether pszSrc is not a resource string ID! - *this = pszSrc; - } - - CStringT( - _In_opt_z_ const XCHAR* pszSrc, - _In_ IAtlStringMgr* pStringMgr) : - CThisSimpleString( pStringMgr ) - { - // FIXME: Check whether pszSrc is not a resource string ID! - *this = pszSrc; + CThisSimpleString(StringTraits::GetDefaultManager()) + { + LoadFromPtr_(pszSrc); + } + + CStringT(_In_opt_z_ const XCHAR* pszSrc, + _In_ IAtlStringMgr* pStringMgr) : CThisSimpleString(pStringMgr) + { + LoadFromPtr_(pszSrc); }
CStringT(_In_opt_z_ const YCHAR* pszSrc) : - CThisSimpleString( StringTraits::GetDefaultManager() ) - { - // FIXME: Check whether pszSrc is not a resource string ID! - *this = pszSrc; - } - - CStringT( - _In_opt_z_ const YCHAR* pszSrc, - _In_ IAtlStringMgr* pStringMgr) : - CThisSimpleString( pStringMgr ) - { - // FIXME: Check whether pszSrc is not a resource string ID! - *this = pszSrc; - } - - CStringT( - _In_reads_z_(nLength) const XCHAR* pch, - _In_ int nLength) : + CThisSimpleString(StringTraits::GetDefaultManager()) + { + LoadFromPtr_(pszSrc); + } + + CStringT(_In_opt_z_ const YCHAR* pszSrc, + _In_ IAtlStringMgr* pStringMgr) : CThisSimpleString(pStringMgr) + { + LoadFromPtr_(pszSrc); + } + + CStringT(_In_reads_z_(nLength) const XCHAR* pch, + _In_ int nLength) : CThisSimpleString(pch, nLength, StringTraits::GetDefaultManager()) { }
- CStringT( - _In_reads_z_(nLength) const YCHAR* pch, - _In_ int nLength) : + CStringT(_In_reads_z_(nLength) const YCHAR* pch, + _In_ int nLength) : CThisSimpleString(pch, nLength, StringTraits::GetDefaultManager()) { }
Modified: trunk/rostests/apitests/atl/CMakeLists.txt URL: http://svn.reactos.org/svn/reactos/trunk/rostests/apitests/atl/CMakeLists.tx... ============================================================================== --- trunk/rostests/apitests/atl/CMakeLists.txt [iso-8859-1] (original) +++ trunk/rostests/apitests/atl/CMakeLists.txt [iso-8859-1] Wed Mar 15 19:17:44 2017 @@ -17,7 +17,7 @@ testlist.c atl_apitest.rc)
-target_link_libraries(atl_apitest wine uuid) +target_link_libraries(atl_apitest wine atlnew uuid) set_module_type(atl_apitest win32cui) add_importlibs(atl_apitest rpcrt4 ole32 oleaut32 msimg32 gdi32 advapi32 user32 msvcrt kernel32 ntdll) add_rostests_file(TARGET atl_apitest)
Modified: trunk/rostests/apitests/atl/CString.cpp URL: http://svn.reactos.org/svn/reactos/trunk/rostests/apitests/atl/CString.cpp?r... ============================================================================== --- trunk/rostests/apitests/atl/CString.cpp [iso-8859-1] (original) +++ trunk/rostests/apitests/atl/CString.cpp [iso-8859-1] Wed Mar 15 19:17:44 2017 @@ -2,12 +2,70 @@ * PROJECT: ReactOS api tests * LICENSE: LGPLv2.1+ - See COPYING.LIB in the top level directory * PURPOSE: Test for CString - * PROGRAMMER: Mark Jansen + * PROGRAMMERS: Mark Jansen + * Katayama Hirofumi MZ */
#include <atlstr.h> -#include <apitest.h> - +#include "resource.h" + +#ifdef __REACTOS__ + #include <apitest.h> +#else + #include <stdlib.h> + #include <stdio.h> + #include <stdarg.h> + #include <windows.h> + int g_tests_executed = 0; + int g_tests_failed = 0; + int g_tests_skipped = 0; + const char *g_file = NULL; + int g_line = 0; + void set_location(const char *file, int line) + { + g_file = file; + g_line = line; + } + void ok_func(int value, const char *fmt, ...) + { + va_list va; + va_start(va, fmt); + if (!value) + { + printf("%s (%d): ", g_file, g_line); + vprintf(fmt, va); + g_tests_failed++; + } + g_tests_executed++; + va_end(va); + } + void skip_func(const char *fmt, ...) + { + va_list va; + va_start(va, fmt); + printf("%s (%d): test skipped: ", g_file, g_line); + vprintf(fmt, va); + g_tests_skipped++; + va_end(va); + } + #undef ok + #define ok(value, ...) do { \ + set_location(__FILE__, __LINE__); \ + ok_func(value, __VA_ARGS__); \ + } while (0) + #define ok_(x1,x2) set_location(x1,x2); ok_func + #define skip(...) do { \ + set_location(__FILE__, __LINE__); \ + skip_func(__VA_ARGS__); \ + } while (0) + #define START_TEST(x) int main(void) + char *wine_dbgstr_w(const wchar_t *wstr) + { + static char buf[512]; + WideCharToMultiByte(CP_ACP, 0, wstr, -1, buf, _countof(buf), NULL, NULL); + return buf; + } +#endif
struct traits_test { @@ -113,7 +171,11 @@
// Allocation strategy seems to differ a bit between us and MS's atl. // if someone cares enough to find out why, feel free to change the macro below. +#ifdef __REACTOS__ #define ALLOC_EXPECT(a, b) b +#else +#define ALLOC_EXPECT(a, b) a +#endif
#undef ok @@ -123,9 +185,12 @@ #define CStringX CStringW #define _X(x) L ## x #define XCHAR WCHAR +#define YCHAR CHAR #define dbgstrx(x) wine_dbgstr_w(x) #define ok ok_("CStringW:\n" __FILE__, __LINE__) #define GetWindowsDirectoryX GetWindowsDirectoryW +#define MAKEINTRESOURCEX(x) MAKEINTRESOURCEW(x) +#define MAKEINTRESOURCEY(x) MAKEINTRESOURCEA(x) #include "CString.inl"
@@ -133,17 +198,23 @@ #undef TEST_NAMEX #undef _X #undef XCHAR +#undef YCHAR #undef dbgstrx #undef ok #undef GetWindowsDirectoryX +#undef MAKEINTRESOURCEX +#undef MAKEINTRESOURCEY
#define TEST_NAMEX(name) void test_##name##A() #define CStringX CStringA #define _X(x) x #define XCHAR CHAR +#define YCHAR WCHAR #define dbgstrx(x) (const char*)x #define ok ok_("CStringA:\n" __FILE__, __LINE__) #define GetWindowsDirectoryX GetWindowsDirectoryA +#define MAKEINTRESOURCEX(x) MAKEINTRESOURCEA(x) +#define MAKEINTRESOURCEY(x) MAKEINTRESOURCEW(x) #include "CString.inl"
@@ -179,4 +250,12 @@
test_envW(); test_envA(); + + test_load_strW(); + test_load_strA(); + +#ifndef __REACTOS__ + printf("CString: %i tests executed (0 marked as todo, %i failures), %i skipped.\n", g_tests_executed, g_tests_failed, g_tests_skipped); + return 0; +#endif }
Modified: trunk/rostests/apitests/atl/CString.inl URL: http://svn.reactos.org/svn/reactos/trunk/rostests/apitests/atl/CString.inl?r... ============================================================================== --- trunk/rostests/apitests/atl/CString.inl [iso-8859-1] (original) +++ trunk/rostests/apitests/atl/CString.inl [iso-8859-1] Wed Mar 15 19:17:44 2017 @@ -388,3 +388,39 @@ ok(test.IsEmpty() == true, "Expected test to be empty\n"); ok(test.GetLength() == 0, "Expected GetLength() to be 0, was: %i\n", test.GetLength()); } + +TEST_NAMEX(load_str) +{ + CStringX str; + + ok(str.LoadString(0) == FALSE, "LoadString should fail.\n"); + + ok(str.LoadString(IDS_TEST1) == TRUE, "LoadString failed.\n"); + ok(str == _X("Test string one."), "The value was '%s'\n", dbgstrx(str)); + + ok(str.LoadString(IDS_TEST2) == TRUE, "LoadString failed.\n"); + ok(str == _X("I am a happy BSTR"), "The value was '%s'\n", dbgstrx(str)); + + ok(str.LoadString(0) == FALSE, "LoadString should fail.\n"); + ok(str == _X("I am a happy BSTR"), "The value was '%s'\n", dbgstrx(str)); + + XCHAR *xNULL = NULL; + CStringX str0(xNULL); + ok(str0.IsEmpty(), "str0 should be empty.\n"); + + YCHAR *yNULL = NULL; + CStringX str1(yNULL); + ok(str1.IsEmpty(), "str1 should be empty.\n"); + + CStringX str2(MAKEINTRESOURCEX(IDS_TEST1)); + ok(str2 == _X("Test string one."), "The value was '%s'\n", dbgstrx(str2)); + + CStringX str3(MAKEINTRESOURCEX(IDS_TEST2)); + ok(str3 == _X("I am a happy BSTR"), "The value was '%s'\n", dbgstrx(str3)); + + CStringX str4(MAKEINTRESOURCEY(IDS_TEST1)); + ok(str4 == _X("Test string one."), "The value was '%s'\n", dbgstrx(str4)); + + CStringX str5(MAKEINTRESOURCEY(IDS_TEST2)); + ok(str5 == _X("I am a happy BSTR"), "The value was '%s'\n", dbgstrx(str5)); +}
Modified: trunk/rostests/apitests/atl/devenv/ATLTest.sln URL: http://svn.reactos.org/svn/reactos/trunk/rostests/apitests/atl/devenv/ATLTes... ============================================================================== --- trunk/rostests/apitests/atl/devenv/ATLTest.sln [iso-8859-1] (original) +++ trunk/rostests/apitests/atl/devenv/ATLTest.sln [iso-8859-1] Wed Mar 15 19:17:44 2017 @@ -1,13 +1,15 @@  Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 14 -VisualStudioVersion = 14.0.24720.0 +VisualStudioVersion = 14.0.25420.1 MinimumVisualStudioVersion = 10.0.40219.1 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CImage", "CImage.vcxproj", "{AE520E17-2DAE-40FF-B082-F32A7A935FB2}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CSimpleArray", "CSimpleArray.vcxproj", "{9F029341-87C2-4BFD-B1FC-D5F5B8D28D55}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CSimpleMap", "CSimpleMap.vcxproj", "{EC560DE6-6DB3-437D-85CA-582491FE6F95}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CString", "CString.vcxproj", "{FBA6DAE7-7996-4DE1-BD03-9E44F7DB4ABD}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -41,6 +43,14 @@ {EC560DE6-6DB3-437D-85CA-582491FE6F95}.Release|x64.Build.0 = Release|x64 {EC560DE6-6DB3-437D-85CA-582491FE6F95}.Release|x86.ActiveCfg = Release|Win32 {EC560DE6-6DB3-437D-85CA-582491FE6F95}.Release|x86.Build.0 = Release|Win32 + {FBA6DAE7-7996-4DE1-BD03-9E44F7DB4ABD}.Debug|x64.ActiveCfg = Debug|x64 + {FBA6DAE7-7996-4DE1-BD03-9E44F7DB4ABD}.Debug|x64.Build.0 = Debug|x64 + {FBA6DAE7-7996-4DE1-BD03-9E44F7DB4ABD}.Debug|x86.ActiveCfg = Debug|Win32 + {FBA6DAE7-7996-4DE1-BD03-9E44F7DB4ABD}.Debug|x86.Build.0 = Debug|Win32 + {FBA6DAE7-7996-4DE1-BD03-9E44F7DB4ABD}.Release|x64.ActiveCfg = Release|x64 + {FBA6DAE7-7996-4DE1-BD03-9E44F7DB4ABD}.Release|x64.Build.0 = Release|x64 + {FBA6DAE7-7996-4DE1-BD03-9E44F7DB4ABD}.Release|x86.ActiveCfg = Release|Win32 + {FBA6DAE7-7996-4DE1-BD03-9E44F7DB4ABD}.Release|x86.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE
Added: trunk/rostests/apitests/atl/devenv/CString.vcxproj URL: http://svn.reactos.org/svn/reactos/trunk/rostests/apitests/atl/devenv/CStrin... ============================================================================== --- trunk/rostests/apitests/atl/devenv/CString.vcxproj (added) +++ trunk/rostests/apitests/atl/devenv/CString.vcxproj [iso-8859-1] Wed Mar 15 19:17:44 2017 @@ -0,0 +1,189 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" ToolsVersion="14.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|Win32"> + <Configuration>Release</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Debug|x64"> + <Configuration>Debug</Configuration> + <Platform>x64</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|x64"> + <Configuration>Release</Configuration> + <Platform>x64</Platform> + </ProjectConfiguration> + </ItemGroup> + <PropertyGroup Label="Globals"> + <ProjectGuid>{FBA6DAE7-7996-4DE1-BD03-9E44F7DB4ABD}</ProjectGuid> + <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion> + <Keyword>AtlProj</Keyword> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> + <ConfigurationType>Application</ConfigurationType> + <UseDebugLibraries>true</UseDebugLibraries> + <PlatformToolset>v120_xp</PlatformToolset> + <CharacterSet>Unicode</CharacterSet> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> + <ConfigurationType>Application</ConfigurationType> + <UseDebugLibraries>false</UseDebugLibraries> + <PlatformToolset>v120_xp</PlatformToolset> + <CharacterSet>Unicode</CharacterSet> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> + <ConfigurationType>Application</ConfigurationType> + <UseDebugLibraries>true</UseDebugLibraries> + <PlatformToolset>v120_xp</PlatformToolset> + <CharacterSet>Unicode</CharacterSet> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> + <ConfigurationType>Application</ConfigurationType> + <UseDebugLibraries>false</UseDebugLibraries> + <PlatformToolset>v120_xp</PlatformToolset> + <CharacterSet>Unicode</CharacterSet> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> + <ImportGroup Label="ExtensionSettings"> + </ImportGroup> + <ImportGroup Label="Shared"> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <PropertyGroup Label="UserMacros" /> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <IgnoreImportLibrary>true</IgnoreImportLibrary> + <LinkIncremental>true</LinkIncremental> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> + <IgnoreImportLibrary>true</IgnoreImportLibrary> + <LinkIncremental>true</LinkIncremental> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <IgnoreImportLibrary>true</IgnoreImportLibrary> + <LinkIncremental>false</LinkIncremental> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> + <IgnoreImportLibrary>true</IgnoreImportLibrary> + <LinkIncremental>false</LinkIncremental> + </PropertyGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <ClCompile> + <PrecompiledHeader>NotUsing</PrecompiledHeader> + <WarningLevel>Level3</WarningLevel> + <Optimization>Disabled</Optimization> + <PreprocessorDefinitions>WIN32;_WINDOWS;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <SDLCheck>true</SDLCheck> + </ClCompile> + <ResourceCompile> + <Culture>0x0409</Culture> + <AdditionalIncludeDirectories>$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> + </ResourceCompile> + <Link> + <SubSystem>Console</SubSystem> + <GenerateDebugInformation>true</GenerateDebugInformation> + <RegisterOutput>true</RegisterOutput> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> + <ClCompile> + <PrecompiledHeader>NotUsing</PrecompiledHeader> + <WarningLevel>Level3</WarningLevel> + <Optimization>Disabled</Optimization> + <PreprocessorDefinitions>_WINDOWS;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <SDLCheck>true</SDLCheck> + </ClCompile> + <ResourceCompile> + <Culture>0x0409</Culture> + <AdditionalIncludeDirectories>$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> + </ResourceCompile> + <Link> + <SubSystem>Console</SubSystem> + <GenerateDebugInformation>true</GenerateDebugInformation> + <RegisterOutput>true</RegisterOutput> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <ClCompile> + <PrecompiledHeader>NotUsing</PrecompiledHeader> + <WarningLevel>Level3</WarningLevel> + <Optimization>MaxSpeed</Optimization> + <PreprocessorDefinitions>WIN32;_WINDOWS;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <SDLCheck>true</SDLCheck> + </ClCompile> + <ResourceCompile> + <Culture>0x0409</Culture> + <AdditionalIncludeDirectories>$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> + </ResourceCompile> + <Link> + <SubSystem>Console</SubSystem> + <GenerateDebugInformation>true</GenerateDebugInformation> + <EnableCOMDATFolding>true</EnableCOMDATFolding> + <OptimizeReferences>true</OptimizeReferences> + <RegisterOutput>true</RegisterOutput> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> + <ClCompile> + <PrecompiledHeader>NotUsing</PrecompiledHeader> + <WarningLevel>Level3</WarningLevel> + <Optimization>MaxSpeed</Optimization> + <PreprocessorDefinitions>_WINDOWS;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <SDLCheck>true</SDLCheck> + </ClCompile> + <ResourceCompile> + <Culture>0x0409</Culture> + <AdditionalIncludeDirectories>$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> + </ResourceCompile> + <Link> + <SubSystem>Console</SubSystem> + <GenerateDebugInformation>true</GenerateDebugInformation> + <EnableCOMDATFolding>true</EnableCOMDATFolding> + <OptimizeReferences>true</OptimizeReferences> + <RegisterOutput>true</RegisterOutput> + </Link> + </ItemDefinitionGroup> + <ItemGroup> + <ClCompile Include="../CString.cpp"> + <RuntimeLibrary Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MultiThreaded</RuntimeLibrary> + <RuntimeLibrary Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MultiThreaded</RuntimeLibrary> + <RuntimeLibrary Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">MultiThreadedDebug</RuntimeLibrary> + <RuntimeLibrary Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">MultiThreadedDebug</RuntimeLibrary> + <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">NotUsing</PrecompiledHeader> + <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">NotUsing</PrecompiledHeader> + <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">NotUsing</PrecompiledHeader> + <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">NotUsing</PrecompiledHeader> + </ClCompile> + </ItemGroup> + <ItemGroup> + <ClInclude Include="..\resource.h" /> + </ItemGroup> + <ItemGroup> + <ResourceCompile Include="..\atl_apitest.rc" /> + </ItemGroup> + <ItemGroup> + <None Include="..\cstring.inl" /> + </ItemGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> + <ImportGroup Label="ExtensionTargets"> + </ImportGroup> +</Project>