Commit 75eb671a authored by Elen.Subbotina's avatar Elen.Subbotina Committed by Alexander Trofimov

git-svn-id:...

git-svn-id: svn://fileserver/activex/AVS/Sources/TeamlabOffice/trunk/ServerComponents@54462 954022d7-b5bf-4e40-9824-e11837661b57
parent af658e6f
......@@ -146,7 +146,7 @@ HRESULT COfficeOdfFile::LoadFromFile(BSTR sSrcFileName, BSTR sDstPath, BSTR sXML
{
boost::filesystem::remove_all(srcTempPath);
}
catch(...)
catch(...)
{
}
......@@ -160,7 +160,7 @@ HRESULT COfficeOdfFile::LoadFromFile(BSTR sSrcFileName, BSTR sDstPath, BSTR sXML
{
}
#endif
return hr;
}
......
......@@ -2,6 +2,6 @@
//1
//0
//1
//185
#define INTVER 1,0,1,185
#define STRVER "1,0,1,185\0"
//187
#define INTVER 1,0,1,187
#define STRVER "1,0,1,187\0"
......@@ -50,6 +50,7 @@
WarningLevel="3"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="4"
DisableSpecificWarnings="4311;4267;4996;4172"
/>
<Tool
Name="VCManagedResourceCompilerTool"
......@@ -114,6 +115,7 @@
WarningLevel="3"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="3"
DisableSpecificWarnings="4311;4267;4996;4172"
/>
<Tool
Name="VCManagedResourceCompilerTool"
......
......@@ -50,7 +50,7 @@
WarningLevel="3"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="4"
DisableSpecificWarnings="4311;4267"
DisableSpecificWarnings="4311;4267;4996;4172"
/>
<Tool
Name="VCManagedResourceCompilerTool"
......@@ -115,7 +115,7 @@
WarningLevel="3"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="3"
DisableSpecificWarnings="4311;4267"
DisableSpecificWarnings="4311;4267;4996;4172"
/>
<Tool
Name="VCManagedResourceCompilerTool"
......
......@@ -50,6 +50,7 @@
WarningLevel="3"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="4"
DisableSpecificWarnings="4311;4267;4996;4172"
/>
<Tool
Name="VCManagedResourceCompilerTool"
......@@ -114,6 +115,7 @@
WarningLevel="3"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="3"
DisableSpecificWarnings="4311;4267;4996;4172"
/>
<Tool
Name="VCManagedResourceCompilerTool"
......
......@@ -46,6 +46,7 @@
WarningLevel="3"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="4"
DisableSpecificWarnings="4311;4267;4996;4172"
/>
<Tool
Name="VCManagedResourceCompilerTool"
......@@ -106,6 +107,7 @@
WarningLevel="3"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="3"
DisableSpecificWarnings="4311;4267;4996;4172"
/>
<Tool
Name="VCManagedResourceCompilerTool"
......
......@@ -12,7 +12,12 @@ namespace cpdoccore {
namespace xml {
class sax;
template <class StringT>
class attributes;
typedef attributes< ::std::wstring > attributes_wc;
typedef shared_ptr< attributes_wc >::Type attributes_wc_ptr;
}
namespace common {
......
......@@ -183,7 +183,7 @@ void media::write(const std::wstring & RootPath)
}
else if(file_name.extension().empty())
{
// .. svm, emf, wmf
// .. svm, emf, wmf, vclmtf ( )
//???
ImageFile::IImageFile3Ptr piImageFile = NULL;
piImageFile.CreateInstance( __uuidof(ImageFile::ImageFile3) );
......@@ -202,6 +202,10 @@ void media::write(const std::wstring & RootPath)
SysFreeString( bstrFilename );
pImage->Release();
}
if (vbSuccess == FALSE)
{
boost::filesystem::copy_file(item.href, file_name_out);// png ... ? :-)
}
}
}
......
......@@ -251,11 +251,19 @@ void draw_object::pptx_convert(oox::pptx_conversion_context & Context)
cpdoccore::odf::odf_document objectSubDoc(dbgObjectPathStr);
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// embd ... frame!!! RemanejamentoOrcamentario.ods
// embd , ... frame!!!
// RemanejamentoOrcamentario.ods
///////////////////////////////////////////////////////////////////////////
//
const office_element *contentSubDoc = objectSubDoc.get_impl()->get_content();
if (!contentSubDoc)return;
if (!contentSubDoc)
{
// xml ( Open Office)
// - ( )
Context.get_slide_context().start_object_ole();
return;
}
chart_build chartBuild;
......@@ -292,6 +300,11 @@ void draw_object::pptx_convert(oox::pptx_conversion_context & Context)
}
Context.get_slide_context().end_shape();
}
else
{
// - ( )
Context.get_slide_context().start_object_ole();
}
}
catch(...)
......
......@@ -397,17 +397,27 @@ void draw_enhanced_geometry::find_draw_type_oox()
int min = -1;
int max = -1;
min = parsing(handle->draw_handle_attlist_.draw_handle_range_y_minimum_);// ..
if (min<0)min =parsing(handle->draw_handle_attlist_.draw_handle_range_x_minimum_);
if (min<0)min = parsing(handle->draw_handle_attlist_.draw_handle_radius_range_minimum_);
try
{
min = parsing(handle->draw_handle_attlist_.draw_handle_range_y_minimum_);// ..
if (min<0)min =parsing(handle->draw_handle_attlist_.draw_handle_range_x_minimum_);
if (min<0)min = parsing(handle->draw_handle_attlist_.draw_handle_radius_range_minimum_);
}
catch(...)
{
}
if (min<0)min=0;
max = parsing(handle->draw_handle_attlist_.draw_handle_range_y_maximum_);
if (max<0)max = parsing(handle->draw_handle_attlist_.draw_handle_range_x_maximum_);
if (max<0)max = parsing(handle->draw_handle_attlist_.draw_handle_radius_range_maximum_);
try
{
max = parsing(handle->draw_handle_attlist_.draw_handle_range_y_maximum_);
if (max<0)max = parsing(handle->draw_handle_attlist_.draw_handle_range_x_maximum_);
if (max<0)max = parsing(handle->draw_handle_attlist_.draw_handle_radius_range_maximum_);
}
catch(...)
{
}
draw_handle_geometry elm={min, max};
draw_handle_geometry_.push_back(elm);
}
......
......@@ -11,12 +11,12 @@
#include <boost/noncopyable.hpp>
#include <boost/shared_ptr.hpp>
#include <boost/weak_ptr.hpp>
#include <regex.h>
#include <lexical_cast.h>
#include <boost/regex.hpp>
#include <boost/lexical_cast.hpp>
#include <boost/function.hpp>
#include <boost/thread/mutex.hpp>
#include <boost/thread/shared_mutex.hpp>
#include <boost/filesystem.hpp>
#include <boost_string.h>
#include <boost/algorithm/string.hpp>
static float getDefaultDpi(){return 96;}
// ASCOfficeOdfFileW.cpp : Implementation of DLL Exports.
#include "stdafx.h"
#include "resource.h"
#include "ASCOfficeOdfFileW.h"
class CASCOfficeOdfFileWModule : public CAtlDllModuleT< CASCOfficeOdfFileWModule >
{
public :
DECLARE_LIBID(LIBID_ASCOfficeOdfFileWLib)
DECLARE_REGISTRY_APPID_RESOURCEID(IDR_ASCOFFICEODFFILEW, "{A5D1961C-EE80-4038-A6CA-21F8C454571D}")
};
CASCOfficeOdfFileWModule _AtlModule;
#ifdef _MANAGED
#pragma managed(push, off)
#endif
// DLL Entry Point
extern "C" BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
{
hInstance;
return _AtlModule.DllMain(dwReason, lpReserved);
}
#ifdef _MANAGED
#pragma managed(pop)
#endif
// Used to determine whether the DLL can be unloaded by OLE
STDAPI DllCanUnloadNow(void)
{
return _AtlModule.DllCanUnloadNow();
}
// Returns a class factory to create an object of the requested type
STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv)
{
return _AtlModule.DllGetClassObject(rclsid, riid, ppv);
}
// DllRegisterServer - Adds entries to the system registry
STDAPI DllRegisterServer(void)
{
// registers object, typelib and all interfaces in typelib
HRESULT hr = _AtlModule.DllRegisterServer();
return hr;
}
// DllUnregisterServer - Removes entries from the system registry
STDAPI DllUnregisterServer(void)
{
HRESULT hr = _AtlModule.DllUnregisterServer();
return hr;
}
; ASCOfficeOdfFileW.def : Declares the module parameters.
LIBRARY "ASCOfficeOdfFileW.DLL"
EXPORTS
DllCanUnloadNow PRIVATE
DllGetClassObject PRIVATE
DllRegisterServer PRIVATE
DllUnregisterServer PRIVATE
/* this ALWAYS GENERATED file contains the definitions for the interfaces */
/* File created by MIDL compiler version 7.00.0555 */
/* at Tue Feb 18 14:17:15 2014
*/
/* Compiler settings for .\ASCOfficeOdfFileW.idl:
Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 7.00.0555
protocol : dce , ms_ext, c_ext
error checks: allocation ref bounds_check enum stub_data
VC __declspec() decoration level:
__declspec(uuid()), __declspec(selectany), __declspec(novtable)
DECLSPEC_UUID(), MIDL_INTERFACE()
*/
/* @@MIDL_FILE_HEADING( ) */
#pragma warning( disable: 4049 ) /* more than 64k source lines */
/* verify that the <rpcndr.h> version is high enough to compile this file*/
#ifndef __REQUIRED_RPCNDR_H_VERSION__
#define __REQUIRED_RPCNDR_H_VERSION__ 440
#endif
#include "rpc.h"
#include "rpcndr.h"
#ifndef __ASCOfficeOdfFileW_h__
#define __ASCOfficeOdfFileW_h__
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
#pragma once
#endif
/* Forward Declarations */
/* header files for imported files */
#include "oaidl.h"
#include "ocidl.h"
#ifdef __cplusplus
extern "C"{
#endif
#ifndef __ASCOfficeOdfFileWLib_LIBRARY_DEFINED__
#define __ASCOfficeOdfFileWLib_LIBRARY_DEFINED__
/* library ASCOfficeOdfFileWLib */
/* [helpstring][version][uuid] */
EXTERN_C const IID LIBID_ASCOfficeOdfFileWLib;
#endif /* __ASCOfficeOdfFileWLib_LIBRARY_DEFINED__ */
/* Additional Prototypes for ALL interfaces */
/* end of Additional Prototypes */
#ifdef __cplusplus
}
#endif
#endif
// ASCOfficeOdfFileW.idl : IDL source for ASCOfficeOdfFileW
//
// This file will be processed by the MIDL tool to
// produce the type library (ASCOfficeOdfFileW.tlb) and marshalling code.
import "oaidl.idl";
import "ocidl.idl";
[
uuid(EDB084E5-EC38-47EF-B421-D5E1A71F98A6),
version(1.0),
helpstring("ASCOfficeOdfFileW 1.0 Type Library")
]
library ASCOfficeOdfFileWLib
{
importlib("stdole2.tlb");
};
//Microsoft Visual C++ generated resource script.
//
#include "resource.h"
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include "winres.h"
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS)
LANGUAGE 25, 1
#pragma code_page(1251)
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//
1 TEXTINCLUDE
BEGIN
"resource.h\0"
END
2 TEXTINCLUDE
BEGIN
"#include ""winres.h""\r\n"
"\0"
END
3 TEXTINCLUDE
BEGIN
"1 TYPELIB ""ASCOfficeOdfFileW.tlb""\r\n"
"\0"
END
#endif // APSTUDIO_INVOKED
#ifndef _MAC
/////////////////////////////////////////////////////////////////////////////
//
// Version
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION 1,0,0,1
PRODUCTVERSION 1,0,0,1
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
#else
FILEFLAGS 0x0L
#endif
FILEOS 0x4L
FILETYPE 0x2L
FILESUBTYPE 0x0L
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904e4"
BEGIN
VALUE "CompanyName", "TODO: <Company name>"
VALUE "FileDescription", "TODO: <File description>"
VALUE "FileVersion", "1.0.0.1"
VALUE "LegalCopyright", "TODO: (c) <Company name>. All rights reserved."
VALUE "InternalName", "ASCOfficeOdfFileW.dll"
VALUE "OriginalFilename", "ASCOfficeOdfFileW.dll"
VALUE "ProductName", "TODO: <Product name>"
VALUE "ProductVersion", "1.0.0.1"
VALUE "OLESelfRegister", ""
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x0409, 1252
END
END
#endif // !_MAC
/////////////////////////////////////////////////////////////////////////////
//
// String Table
//
STRINGTABLE
BEGIN
IDS_PROJNAME "ASCOfficeOdfFileW"
END
IDR_ASCOFFICEODFFILEW REGISTRY "ASCOfficeOdfFileW.rgs"
////////////////////////////////////////////////////////////////////////////
#endif
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
1 TYPELIB "ASCOfficeOdfFileW.tlb"
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED
HKCR
{
NoRemove AppID
{
'%APPID%' = s 'ASCOfficeOdfFileW'
'ASCOfficeOdfFileW.DLL'
{
val AppID = s '%APPID%'
}
}
}

Microsoft Visual Studio Solution File, Format Version 9.00
# Visual Studio 2005
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ASCOfficeOdfFileW", "ASCOfficeOdfFileW.vcproj", "{6258296E-ABCE-4BC6-9F4A-8522CD615603}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DocxFormat", "..\Common\DocxFormat\Projects\DocxFormat2005.vcproj", "{A100103A-353E-45E8-A9B8-90B87CC5C0B0}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "OdfFormat", "source\OdfFormat.vcproj", "{E5A67556-44DA-4481-8F87-0A3AEDBD20DD}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
Release|Win32 = Release|Win32
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{6258296E-ABCE-4BC6-9F4A-8522CD615603}.Debug|Win32.ActiveCfg = Debug|Win32
{6258296E-ABCE-4BC6-9F4A-8522CD615603}.Debug|Win32.Build.0 = Debug|Win32
{6258296E-ABCE-4BC6-9F4A-8522CD615603}.Release|Win32.ActiveCfg = Release|Win32
{6258296E-ABCE-4BC6-9F4A-8522CD615603}.Release|Win32.Build.0 = Release|Win32
{A100103A-353E-45E8-A9B8-90B87CC5C0B0}.Debug|Win32.ActiveCfg = Debug|Win32
{A100103A-353E-45E8-A9B8-90B87CC5C0B0}.Debug|Win32.Build.0 = Debug|Win32
{A100103A-353E-45E8-A9B8-90B87CC5C0B0}.Release|Win32.ActiveCfg = Release|Win32
{A100103A-353E-45E8-A9B8-90B87CC5C0B0}.Release|Win32.Build.0 = Release|Win32
{E5A67556-44DA-4481-8F87-0A3AEDBD20DD}.Debug|Win32.ActiveCfg = Debug|Win32
{E5A67556-44DA-4481-8F87-0A3AEDBD20DD}.Debug|Win32.Build.0 = Debug|Win32
{E5A67556-44DA-4481-8F87-0A3AEDBD20DD}.Release|Win32.ActiveCfg = Release|Win32
{E5A67556-44DA-4481-8F87-0A3AEDBD20DD}.Release|Win32.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal
<?xml version="1.0" encoding="windows-1251"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="8,00"
Name="ASCOfficeOdfFileW"
ProjectGUID="{6258296E-ABCE-4BC6-9F4A-8522CD615603}"
Keyword="AtlProj"
>
<Platforms>
<Platform
Name="Win32"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="2"
UseOfATL="2"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="_DEBUG"
MkTypLibCompatible="false"
TargetEnvironment="1"
GenerateStublessProxies="true"
TypeLibraryName="$(IntDir)/ASCOfficeOdfFileW.tlb"
HeaderFileName="ASCOfficeOdfFileW.h"
DLLDataFileName=""
InterfaceIdentifierFileName="ASCOfficeOdfFileW_i.c"
ProxyFileName="ASCOfficeOdfFileW_p.c"
ValidateParameters="false"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
PreprocessorDefinitions="WIN32;_WINDOWS;_DEBUG;_USRDLL"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
UsePrecompiledHeader="2"
WarningLevel="3"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="4"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG"
Culture="1033"
AdditionalIncludeDirectories="$(IntDir)"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
RegisterOutput="true"
IgnoreImportLibrary="true"
LinkIncremental="2"
ModuleDefinitionFile=".\ASCOfficeOdfFileW.def"
GenerateDebugInformation="true"
SubSystem="2"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="2"
UseOfATL="2"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="NDEBUG"
MkTypLibCompatible="false"
TargetEnvironment="1"
GenerateStublessProxies="true"
TypeLibraryName="$(IntDir)/ASCOfficeOdfFileW.tlb"
HeaderFileName="ASCOfficeOdfFileW.h"
DLLDataFileName=""
InterfaceIdentifierFileName="ASCOfficeOdfFileW_i.c"
ProxyFileName="ASCOfficeOdfFileW_p.c"
ValidateParameters="false"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
PreprocessorDefinitions="WIN32;_WINDOWS;NDEBUG;_USRDLL"
RuntimeLibrary="2"
UsePrecompiledHeader="2"
WarningLevel="3"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG"
Culture="1033"
AdditionalIncludeDirectories="$(IntDir)"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
RegisterOutput="true"
IgnoreImportLibrary="true"
LinkIncremental="1"
ModuleDefinitionFile=".\ASCOfficeOdfFileW.def"
GenerateDebugInformation="true"
SubSystem="2"
OptimizeReferences="2"
EnableCOMDATFolding="2"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
>
<File
RelativePath=".\ASCOfficeOdfFileW.cpp"
>
</File>
<File
RelativePath=".\ASCOfficeOdfFileW.def"
>
</File>
<File
RelativePath=".\ASCOfficeOdfFileW.idl"
>
</File>
<File
RelativePath=".\stdafx.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="1"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="1"
/>
</FileConfiguration>
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
>
<File
RelativePath=".\Resource.h"
>
</File>
<File
RelativePath=".\stdafx.h"
>
</File>
</Filter>
<Filter
Name="Resource Files"
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
>
<File
RelativePath=".\ASCOfficeOdfFileW.rc"
>
</File>
<File
RelativePath=".\ASCOfficeOdfFileW.rgs"
>
</File>
</Filter>
<Filter
Name="Generated Files"
SourceControlFiles="false"
>
<File
RelativePath=".\ASCOfficeOdfFileW.h"
>
</File>
<File
RelativePath=".\ASCOfficeOdfFileW_i.c"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="0"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="0"
/>
</FileConfiguration>
</File>
</Filter>
<File
RelativePath=".\ReadMe.txt"
>
</File>
</Files>
<Globals>
</Globals>
</VisualStudioProject>
========================================================================
ACTIVE TEMPLATE LIBRARY : ASCOfficeOdfFileW Project Overview
========================================================================
AppWizard has created this ASCOfficeOdfFileW project for you to use as the starting point for
writing your Dynamic Link Library (DLL).
This file contains a summary of what you will find in each of the files that
make up your project.
ASCOfficeOdfFileW.vcproj
This is the main project file for VC++ projects generated using an Application Wizard.
It contains information about the version of Visual C++ that generated the file, and
information about the platforms, configurations, and project features selected with the
Application Wizard.
ASCOfficeOdfFileW.idl
This file contains the IDL definitions of the type library, the interfaces
and co-classes defined in your project.
This file will be processed by the MIDL compiler to generate:
C++ interface definitions and GUID declarations (ASCOfficeOdfFileW.h)
GUID definitions (ASCOfficeOdfFileW_i.c)
A type library (ASCOfficeOdfFileW.tlb)
Marshaling code (ASCOfficeOdfFileW_p.c and dlldata.c)
ASCOfficeOdfFileW.h
This file contains the C++ interface definitions and GUID declarations of the
items defined in ASCOfficeOdfFileW.idl. It will be regenerated by MIDL during compilation.
ASCOfficeOdfFileW.cpp
This file contains the object map and the implementation of your DLL's exports.
ASCOfficeOdfFileW.rc
This is a listing of all of the Microsoft Windows resources that the
program uses.
ASCOfficeOdfFileW.def
This module-definition file provides the linker with information about the exports
required by your DLL. It contains exports for:
DllGetClassObject
DllCanUnloadNow
GetProxyDllInfo
DllRegisterServer
DllUnregisterServer
/////////////////////////////////////////////////////////////////////////////
Other standard files:
StdAfx.h, StdAfx.cpp
These files are used to build a precompiled header (PCH) file
named ASCOfficeOdfFileW.pch and a precompiled types file named StdAfx.obj.
Resource.h
This is the standard header file that defines resource IDs.
/////////////////////////////////////////////////////////////////////////////
Proxy/stub DLL project and module definition file:
ASCOfficeOdfFileWps.vcproj
This file is the project file for building a proxy/stub DLL if necessary.
The IDL file in the main project must contain at least one interface and you must
first compile the IDL file before building the proxy/stub DLL. This process generates
dlldata.c, ASCOfficeOdfFileW_i.c and ASCOfficeOdfFileW_p.c which are required
to build the proxy/stub DLL.
ASCOfficeOdfFileWps.def
This module definition file provides the linker with information about the exports
required by the proxy/stub.
/////////////////////////////////////////////////////////////////////////////
//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used by ASCOfficeOdfFileW.rc
//
#define IDS_PROJNAME 100
#define IDR_ASCOFFICEODFFILEW 101
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 201
#define _APS_NEXT_COMMAND_VALUE 32768
#define _APS_NEXT_CONTROL_VALUE 201
#define _APS_NEXT_SYMED_VALUE 102
#endif
#endif
This diff is collapsed.
#pragma once
#include <vector>
#include <boost/algorithm/string/replace.hpp>
#include <cpdoccore/CPSharedPtr.h>
#include <cpdoccore/CPWeakPtr.h>
#include <cpdoccore/xml/xmlelement.h>
//#include <cpdoccore/common/readdocelement.h>
#include <cpdoccore/common/writedocelement.h>
#include <cpdoccore/CPAssert.h>
#include "office_elements_type.h"
//#include "visitor.h"
//#include "..\conversionelement.h"
namespace cpdoccore {
namespace odf {
class document_context;
class office_element;
typedef shared_ptr<office_element>::Type office_element_ptr;
typedef weak_ptr<office_element>::Type office_element_weak_ptr;
typedef ::std::vector<office_element_ptr> office_element_ptr_array;
class office_element : public xml::element<wchar_t>,
public common::write_doc_element
{
public:
office_element() : is_root_(false), context_(NULL) {}
virtual ElementType get_type() const = 0;
virtual ~office_element() = 0;
void set_root(bool isRoot) { is_root_ = isRoot; }
bool is_root() const { return is_root_; }
virtual void afterCreate() {};
virtual void afterReadContent() {};
void setContext(document_context * Context) { context_ = Context; }
public:
virtual ::std::wostream & text_to_stream(::std::wostream & _Wostream) const
{
//_CP_LOG(info) << L"[warning] use base text_to_stream\n";
return _Wostream;
}
virtual ::std::wostream & xml_to_stream(::std::wostream & _Wostream) const
{
//_CP_LOG(info) << L"[warning] use base xml_to_stream\n";
return _Wostream;
}
document_context * getContext() { return context_; }
//
//protected:
const document_context * getContext() const { return context_; }
private:
bool is_root_;
document_context * context_;
};
#define CPDOCCORE_OFFICE_DOCUMENT_IMPL_NAME_FUNCS_ public:\
virtual const wchar_t * get_ns() const { return ns; }\
virtual const wchar_t * get_name() const { return name; }\
virtual xml::NodeType get_xml_type() const { return xml_type; }\
virtual ElementType get_type() const { return type; }
inline office_element::~office_element()
{
}
/// \class office_element_impl
template <class Element>
class office_element_impl : public virtual office_element
{
// xml::element impl
public:
virtual const wchar_t * get_ns() const
{
return Element::ns;
}
virtual const wchar_t * get_name() const
{
return Element::name;
}
virtual xml::NodeType get_xml_type() const
{
return Element::xml_type;
}
private:
virtual void add_text(const std::wstring & Text)
{
std::wstring text = Text;
boost::algorithm::erase_all(text, L" ");
boost::algorithm::erase_all(text, L"\t");
boost::algorithm::erase_all(text, L"\n");
boost::algorithm::erase_all(text, L"\r");
//CP_ASSERT(false);
}
// office_element impl
public:
virtual ElementType get_type() const
{
return Element::type;
}
};
}
}
#include "precompiled_cpodf.h"
#include "office_elements_create.h"
#include <iostream>
#include <boost/thread/mutex.hpp>
#include <boost/thread/shared_mutex.hpp>
#include "logging.h"
#include "skipelement.h"
namespace cpdoccore {
namespace odf {
namespace {
static boost::mutex create_lock_;
}
office_element_creator * office_element_creator::instance_ = NULL;
office_element_creator::office_element_creator() : rw_lock_( new boost::shared_mutex() )
{
}
office_element_ptr office_element_creator::create(const ::std::wstring & ns, const ::std::wstring & name, document_context * Context, bool isRoot) const
{
const std::wstring fullName = ns + (ns.size() > 0 ? L":" : L"") + name;
boost::shared_lock< boost::shared_mutex > lock( *rw_lock_ );
MapType::const_iterator i = map_.find( fullName );
if (i != map_.end() )
{
office_element_ptr element = (i->second)();
if (element)
{
element->setContext(Context);
}
if (element && isRoot)
element->set_root(true);
if (element)
element->afterCreate();
return element;
}
else
{
return office_element_ptr();
}
}
office_element_creator * office_element_creator::get()
{
if (!instance_)
{
boost::mutex::scoped_lock lock(create_lock_);
if (!instance_)
{
office_element_creator * temp = new office_element_creator();
instance_ = temp;
}
}
return instance_;
}
bool office_element_creator::register_element(const std::wstring &ns, const std::wstring & name, CreateFuncImpl f)
{
const std::wstring fullName = ns + (ns.size() > 0 ? L":" : L"") + name;
boost::unique_lock< boost::shared_mutex > lock( *rw_lock_ );
MapType::iterator i = map_.find( fullName );
if ( i == map_.end() )
{
map_.insert( MapType::value_type(fullName, f) );
}
else
{
// TODO: ,
CP_ASSERT(false);
i->second = f;
}
return true;
}
void not_applicable_element(const std::wstring & Current,const std::wstring & Ns, const std::wstring & Name)
{
#ifdef _DEBUG
std::wstringstream ss;
ss << L"[warning] : element " << Ns << L":" << Name << " not applicable in current place";
if (!Current.empty())
ss << L" ("<< Current << ")";
ss << L"\n";
_CP_LOG(error) << ss.str();
#endif
}
void not_applicable_element(const office_element * CurrentElm, const std::wstring & Ns, const std::wstring & Name)
{
std::wstringstream ss;
if (CurrentElm)
ss << CurrentElm->get_ns() << L":" << CurrentElm->get_name();
not_applicable_element(ss.str(), Ns, Name);
}
}
}
#ifndef _CPDOCCORE_ODF_OFFCIE_ELEMENTS_CREATE_H_
#define _CPDOCCORE_ODF_OFFCIE_ELEMENTS_CREATE_H_
#include <string>
#include <map>
#include <boost/function.hpp>
#include <cpdoccore/CPAssert.h>
#include <cpdoccore/CPSharedPtr.h>
#include "office_elements.h"
namespace boost {
class shared_mutex;
}
namespace xml
{
class sax;
}
namespace cpdoccore {
namespace odf {
class document_context;
class office_element;
typedef shared_ptr<office_element>::Type office_element_ptr;
#define CP_REGISTER_OFFICE_ELEMENT2(A) \
namespace { \
RegisterElement<A> RegisterElement##A;\
}
class office_element_creator
{
public:
typedef boost::function< office_element_ptr () > CreateFuncImpl;
public:
//
bool register_element(const std::wstring &ns, const std::wstring & name, CreateFuncImpl f);
//
office_element_ptr create(const ::std::wstring & ns, const ::std::wstring & name, document_context * Context = NULL, bool isRoot = false) const;
private:
typedef std::map<::std::wstring, CreateFuncImpl> MapType;
MapType map_;
public:
//
static office_element_creator * get();
private:
office_element_creator();
static office_element_creator * instance_;
shared_ptr<boost::shared_mutex>::Type rw_lock_;
};
/// ,
template <class T>
class RegisterElement
{
private:
template <class T>
class CreateImpl_
{
public:
static typename shared_ptr<T>::Type create()
{
//return shared_ptr<T>::Type( new T() );
return boost::make_shared<T>();
}
};
public:
RegisterElement()
{
if (class_registered_++ == 0)
{
// Jerry Schwarz counter
office_element_creator::get()->register_element(T::ns, T::name, &CreateImpl_<T>::create);
}
};
~RegisterElement()
{
};
private:
static int class_registered_;
};
template<class T> int RegisterElement<T>::class_registered_ = 0;
/// \brief SAX, shared_ptr
bool create_element_and_read(xml::sax * Reader,
const ::std::wstring & Ns,
const ::std::wstring & Name,
office_element_ptr & _Element,
document_context * Context,
bool isRoot = false);
/// \brief SAX, array
bool create_element_and_read(xml::sax * Reader,
const ::std::wstring & Ns,
const ::std::wstring & Name,
office_element_ptr_array & _Elements,
document_context * Context,
bool isRoot = false);
#define CP_CREATE_ELEMENT_SIMPLE(ELEMENT) create_element_and_read(Reader, Ns, Name, (ELEMENT), Context)
#define CP_CREATE_ELEMENT(ELEMENT) create_element_and_read(Reader, Ns, Name, (ELEMENT), getContext())
#define _CPDOCCORE_CREATE_ELEMENT_ROOT(ELEMENT) create_element_and_read(Reader, Ns, Name, (ELEMENT), getContext(), true)
#define CP_CHECK_NAME(NS, NAME) ((NS) == Ns && (NAME) == Name)
void not_applicable_element(const office_element * CurrentElm, xml::sax * Reader, const std::wstring & Ns, const std::wstring & Name);
void not_applicable_element(const std::wstring & Current, xml::sax * Reader, const std::wstring & Ns, const std::wstring & Name);
void not_applicable_element(const office_element * CurrentElm, const std::wstring & Ns, const std::wstring & Name);
void not_applicable_element(const std::wstring & Current, const std::wstring & Ns, const std::wstring & Name);
#define CP_NOT_APPLICABLE_ELM() \
not_applicable_element(this, Reader, Ns, Name)
#define CP_NOT_APPLICABLE_ELM_SIMPLE(A) \
not_applicable_element(A, Reader, Ns, Name)
}
}
#endif // #ifndef _CPDOCCORE_ODF_OFFCIE_ELEMENTS_CREATE_H_
#ifndef _CPDOCCORE_ODF_OFFCIE_ELEMENTS_TYPE_H_
#define _CPDOCCORE_ODF_OFFCIE_ELEMENTS_TYPE_H_
namespace cpdoccore {
namespace odf {
enum ElementType
{
typeNone = 0,
type_AbstractXml,
typeTextText = 1000,
typeTextS,
typeTextTab,
typeTextLineBreak,
typeTextBookmark,
typeTextBookmarkStart,
typeTextBookmarkEnd,
typeTextReferenceMark,
typeTextReferenceMarkStart,
typeTextReferenceMarkEnd,
typeTextSpan,
typeTextA,
typeTextNote,
typeTextNoteCitation,
typeTextNoteBody,
typeTextRuby,
typeTextRubyBase,
typeTextRubyText,
typeTextOfficeAnnotation,
typeTextTitle,
typeTextPlaceholder,
typeTextPageNumber,
typeTextPageCount,
typeTextDate,
typeTextTime,
typeTextFileName,
typeTextSequence,
typeTextSheetName,
typePresentationFooter,
typePresentationDateTime,
typeDcCreator,
typeDcDate,
typeTextH,
typeTextP,
typeTextList,
typeTextListItem,
typeTextListHeader,
typeTextNumber,
typeTextSoftPageBreak,
typeTextSection,
typeTextSectionSource,
typeTextIndexTitle,
typeTextIndexBody,
typeTextNumberedParagraph,
typeDrawA,
typeTextTableOfContent,
typeTextIllustrationIndex,
typeTextTableIndex,
typeTextObjectIndex,
typeTextUserIndex,
typeTextAlphabeticalIndex,
typeTextBibliography,
typeShape,
typeChangeMarks,
typeOfficeAutomaticStyles,
typeOfficeMasterStyles,
typeStyleMasterPage,
typeOfficeStyles,
typeStyleDefaultStyle,
typeStyleStyle,
typeTextListStyle,
typeTextListLevelStyleNumber,
typeTextListLevelStyleBullet,
typeStyleListLevelProperties,
typeStyleListLevelLabelAlignment,
typeStyleTabStop,
typeStyleTabStops,
typeStyleDropCap,
typeStyleBackgroundImage,
typeStyleTextProperties,
typeStyleParagraphProperties,
typeStyleTableProperties,
typeStyleTableColumnProperties,
typeStyleTableRowProperties,
typeStyleTableCellProperties,
typeStyleHeader,
typeStyleFooter,
typeStyleHeaderFirst,
typeStyleFooterFirst,
typeStyleHeaderLeft,
typeStyleFooterLeft,
typeStyleFootnoteSep,
typeStyleSectionProperties,
typeStyleHeaderStyle,
typeStyleFooterStyle,
typeStyleHeaderFooterProperties,
typeStylePresentationPageLayout,
typeStylePresentationPlaceholder,
typeStyleDrawingPageProperties,
typeStyleColumns,
typeStyleColumn,
typeStyleColumnSep,
typeStylePageLayout,
typeStyleMap,
typeTableBodyTemplate,
typeTableTemplate,
typeTextNotesConfiguration,
typeStyleFontFace,
typeSvgFontFaceUri,
typeSvgFontFaceFormat,
typeSvgFontFaceName,
typeSvgDefinitionSrc,
typeOfficeFontFaceDecls,
typeOfficeBinaryData,
typeTableTableSource,
typeTableNamedExpressions,
typeTableNamedExpression,
typeTableNamedRange,
typeTableTable,
typeTableTableColumn,
typeTableTableColumns,
typeTableTableHeaderColumns,
typeTableTableColumnGroup,
typeTableTableRow,
typeTableTableCell,
typeTableCoveredTableCell,
typeTableTableRows,
typeTableTableHeaderRows,
typeTableTableRowGroup,
typeTableTableRowNoGroup,
typeOfficeBody,
typeOfficeText,
typeOfficeDocument,
typeOfficeDocumentContent,
typeOfficeDocumentStyles,
typeOfficeDocumentMeta,
typeOfficeDocumentSettings,
typeManifest,
typeManifestEntry,
typeManifestEncryptionData,
typeOfficeSettings,
typeOfficeSettingsConfigItemSet,
typeOfficeSettingsConfigItem,
typeOfficeSettingsConfigItemMapIndexed,
typeOfficeSettingsConfigItemMapNamed,
typeOfficeSettingsConfigItemMapEntry,
typeDrawG,
typeDrawFrame,
typeDrawImage,
typeDrawTextBox,
typeDrawObject,
typeDrawObjectOle,
typeDrawChart,
typeDrawShape,
typeDrawRect,
typeDrawEllipse,
typeDrawLine,
typeDrawPolygon,
typeDrawPolyline,
typeDrawRegularPolyline,
typeDrawPath,
typeDrawCircle,
typeDrawg,
typeDrawPageThumbnail,
typeDrawMeasure,
typeDrawCaption,
typeDrawConnector,
typeDrawControl,
typeDraw3dScene,
typeDrawCustomShape,
typeDrawHandle,
typeDrawEquation,
typeDrawPage,
typePresentationFooterDecl,
typePresentationDateTimeDecl,
typeAnimPar,
typeAnimSeq,
typeAnimTransitionFilter,
typeStyleGraphicPropertis,
typeStyleDrawGradient,
typeStyleDrawFillImage,
typeStyleDrawHatch,
typeStyleDrawMarker,
typeOfficeSpreadsheet,
typeOfficeAnnotation,
typeStyleRegionLeft,
typeOfficeScripts,
typeOfficeScript,
typeOfficePresentation,
typeOfficeChart,
typeOfficeEventListeners,
typePresentationEventListener,
typeScriptEventListener,
typeTableCalculationSettings,
typeTableNullDate,
typeNumberNumberStyle,
typeNumberDataStyle,
typeNumberText,
typeNumberNumber,
typeNumberEmbeddedText,
typeNumberScientificNumber,
typeNumberFraction,
typeNumberCurrencyStyle,
typeNumberCurrencySymbol,
typeNumberTextContent,
typeNumberTextStyle,
typeNumberPercentageStyle,
typeNumberTimeStyle,
typeNumberDay,
typeNumberMonth,
typeNumberYear,
typeNumberDayOfWeek,
typeNumberQuarter,
typeNumberHours,
typeNumberMinutes,
typeNumberSeconds,
typeNumberAmPm,
typeTableShapes,
typeChartChart,
typeChartTitle,
typeChartSubtitle,
typeChartFooter,
typeChartLegend,
typeChartPlotArea,
typeChartWall,
typeChartFloor,
typeChartAxis,
typeChartGrid,
typeChartCategories,
typeChartSeries,
typeChartDomain,
typeChartDataPoint,
typeChartErrorIndicator,
typeChartMeanValue,
typeChartStockGainMarker,
typeChartStockLossMarker,
typeChartStockRangeLine,
typeChartRegressionCurve,
typeChartEquation,
typeStyleRegionCenter,
typeStyleRegionRight,
typeStyleChartProperties
};
}
}
#endif // #ifndef _CPDOCCORE_ODF_OFFCIE_ELEMENTS_TYPE_H_
#pragma once
#include <string>
#include <map>
#include <vector>
#include <ostream>
#include <boost/optional.hpp>
#include <boost/noncopyable.hpp>
#include <boost/shared_ptr.hpp>
#include <boost/weak_ptr.hpp>
#include <boost/regex.hpp>
#include <boost/lexical_cast.hpp>
#include <boost/function.hpp>
#include <boost/thread/mutex.hpp>
#include <boost/thread/shared_mutex.hpp>
#include <boost/filesystem.hpp>
#include <boost/algorithm/string.hpp>
static float getDefaultDpi(){return 96;}
#include "precompiled_cpodf.h"
#include "skipelement.h"
#include "logging.h"
#include <cpdoccore/xml/attributes.h>
namespace cpdoccore {
namespace odf {
_skip_element _skip_element::skip_element_;
const wchar_t * _skip_element::ns = L"";
const wchar_t * _skip_element::name = L"";
void _skip_element::add_attributes( const xml::attributes_wc_ptr & Attributes )
{
Attributes->reset_check();
return;
}
void _skip_element::add_child_element( xml::sax * Reader, const ::std::wstring & Ns, const ::std::wstring & Name)
{
std::wstringstream ss;
ss << L"[warning] : skip element " << Ns << L":" << Name << "\n";
_CP_LOG(error) << ss.str();
if (Reader)
skip_element_.read_sax(Reader);
}
void _skip_element::add_text(const std::wstring & Text)
{
std::wstringstream ss;
ss << L"[warning] : skip element text\n";
_CP_LOG(error) << ss.str();
}
}
}
#ifndef _CPDOCCORE_ODF_OFFCIE_SKIP_ELEMENT_
#define _CPDOCCORE_ODF_OFFCIE_SKIP_ELEMENT_
#include <cpdoccore/xml/xmlelement.h>
#include <cpdoccore/xml/nodetype.h>
#include "office_elements.h"
#include "office_elements_create.h"
namespace cpdoccore {
namespace odf {
/// \class _skip_element
class _skip_element : public office_element_impl<_skip_element>
{
public:
static const wchar_t * ns;
static const wchar_t * name;
static const xml::NodeType xml_type = xml::typeElement;
static const ElementType type = type_AbstractXml;
//CPDOCCORE_DEFINE_VISITABLE();
private:
virtual void add_attributes( const xml::attributes_wc_ptr & Attributes );
virtual void add_child_element( xml::sax * Reader, const ::std::wstring & Ns, const ::std::wstring & Name);
virtual void add_text(const std::wstring & Text);
public:
static _skip_element skip_element_;
};
}
}
#endif
========================================================================
STATIC LIBRARY : OdfFormat Project Overview
========================================================================
AppWizard has created this OdfFormat library project for you.
This file contains a summary of what you will find in each of the files that
make up your OdfFormat application.
OdfFormat.vcproj
This is the main project file for VC++ projects generated using an Application Wizard.
It contains information about the version of Visual C++ that generated the file, and
information about the platforms, configurations, and project features selected with the
Application Wizard.
/////////////////////////////////////////////////////////////////////////////
StdAfx.h, StdAfx.cpp
These files are used to build a precompiled header (PCH) file
named OdfFormat.pch and a precompiled types file named StdAfx.obj.
/////////////////////////////////////////////////////////////////////////////
Other notes:
AppWizard uses "TODO:" comments to indicate parts of the source code you
should add to or customize.
/////////////////////////////////////////////////////////////////////////////
// stdafx.cpp : source file that includes just the standard includes
// ASCOfficeOdfFileW.pch will be the pre-compiled header
// stdafx.obj will contain the pre-compiled type information
#include "stdafx.h"
// stdafx.h : include file for standard system include files,
// or project specific include files that are used frequently,
// but are changed infrequently
#pragma once
#ifndef STRICT
#define STRICT
#endif
// Modify the following defines if you have to target a platform prior to the ones specified below.
// Refer to MSDN for the latest info on corresponding values for different platforms.
#ifndef WINVER // Allow use of features specific to Windows XP or later.
#define WINVER 0x0501 // Change this to the appropriate value to target other versions of Windows.
#endif
#ifndef _WIN32_WINNT // Allow use of features specific to Windows XP or later.
#define _WIN32_WINNT 0x0501 // Change this to the appropriate value to target other versions of Windows.
#endif
#ifndef _WIN32_WINDOWS // Allow use of features specific to Windows 98 or later.
#define _WIN32_WINDOWS 0x0410 // Change this to the appropriate value to target Windows Me or later.
#endif
#ifndef _WIN32_IE // Allow use of features specific to IE 6.0 or later.
#define _WIN32_IE 0x0600 // Change this to the appropriate value to target other versions of IE.
#endif
#define _ATL_APARTMENT_THREADED
#define _ATL_NO_AUTOMATIC_NAMESPACE
#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // some CString constructors will be explicit
#include "resource.h"
#include <atlbase.h>
#include <atlcom.h>
using namespace ATL;
\ No newline at end of file
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment