/* -*- Mode: C; tab-width: 4 -*-
 *
 * Copyright (c) 2009 Apple Computer, Inc. All rights reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *     http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */



#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;