CLR 통합(C++/CX)
일부 Windows 런타임 형식은 C++/CX 및 CLR(공용 언어 런타임)을 기반으로 하는 언어로 특수한 처리를 받습니다. 이 문서에서는 한 언어의 여러 형식을 다른 언어에 매핑하는 방법을 설명합니다. 예를 들어 CLR은 Windows.Foundation.IVector를 System.Collections.IList에 매핑하고, Windows.Foundation.IMap를 System.Collections.IDictionary에 매핑합니다. 마찬가지로 C++/CX는 Platform::D elegate 및 Platform::String과 같은 형식을 특별히 매핑합니다.
C++/CX에 Windows 런타임 매핑
C++/CX가 Windows 메타데이터(.winmd) 파일을 읽는 경우 컴파일러는 공통 Windows 런타임 네임스페이스 및 형식을 C++/CX 네임스페이스 및 형식에 자동으로 매핑합니다. 예를 들어 숫자 Windows 런타임 형식 UInt32
은 자동으로 매핑됩니다default::uint32
.
C++/CX는 플랫폼 네임스페이스에 다른 여러 Windows 런타임 형식을 매핑합니다. 예를 들어 읽기 전용 유니코드 텍스트 문자열을 나타내는 Windows::Foundation HSTRING 핸들은 C++/CX Platform::String
클래스에 매핑됩니다. Windows 런타임 작업에서 오류 HRESULT를 반환하면 C++/CXPlatform::Exception
에 매핑됩니다.
또한 C++/CX는 Windows 런타임 네임스페이스의 특정 형식을 매핑하여 형식의 기능을 향상시킵니다. 이러한 형식의 경우 C++/CX는 C++와 관련되고 형식의 표준 .winmd 파일에서 사용할 수 없는 도우미 생성자 및 메서드를 제공합니다.
다음 목록에서는 새 생성자 및 도우미 메서드를 지원하는 값 구조체를 보여 줍니다. 구조체 초기화 목록을 사용하는 이전에 작성된 코드가 있으면 새로 추가된 생성자를 사용하도록 이를 변경합니다.
Windows::Foundation
Point
Rect
크기
Windows::UI
- 색
Windows::UI::Xaml
CornerRadius
기간
GridLength
두께
Windows::UI::Xaml::Interop
- TypeName
Windows::UI::Xaml::Media
- 행렬
Windows::UI::Xaml::Media::Animation
KeyTime
RepeatBehavior
Windows::UI::Xaml::Media::Media3D
- Matrix3D
C++/CX에 CLR 매핑
Microsoft C++ 또는 C# 컴파일러가 .winmd 파일을 읽을 때 메타데이터 파일의 특정 형식을 적절한 C++/CX 또는 CLR 형식에 자동으로 매핑합니다. 예를 들어 CLR에서 IVector<T> 인터페이스는 IList<T>에 매핑됩니다. 그러나 C++/CX에서는 IVector<T> 인터페이스가 다른 형식에 매핑되지 않습니다.
Windows 런타임 IReference<T>는 .NET의 Nullable<T>에 매핑됩니다.