2010-08-11 4 views
3

앱에서 WPF를 사용하고 싶습니다. C++로 작성하고 싶습니다. 응용 프로그램을 관리해야합니까? 관리 형과 관리 형을 혼합 할 수 있다는 것을 알고 있습니다. 내가 전체 응용 프로그램을 관리되지 않도록 할 수 있는지 궁금하네요.WPF 응용 프로그램 관리 코드 만 있습니까?

+3

왜 비 관리 코드로 작성합니까? WPF는 .NET Framework를 기반으로하며 디자인에 의해 관리됩니다. 꼭 필요한 경우 interop에 관리되지 않는 코드를 호출 할 수 있습니다. – nukefusion

답변

7

쉽게 관리되지 않는 코드에서 WPF 응용 프로그램의 99 %를 개발하지만 100 % 관리되지 않는 만드는 것은 매우 어렵다 수 있습니다.

WPF 클래스에는 Guid 특성이 없으므로 COM에서 작동하지 않습니다. 따라서 100 % 비 관리 코드가있는 Button 및 Window와 같은 WPF 객체를 생성하려면 관리되지 않는 CLR API 중 하나가 필요합니다. Hosting API은 아마도 가장 쉬운 방법 일 수 있지만 여전히 많은 작업이 필요합니다.

99 % 관리되지 않는 코드를 사용하려면/clr 옵션을 사용하여 응용 프로그램을 컴파일하고 IJW를 사용하여 WPF 개체를 인스턴스화하고 Application.LoadComponent와 같은 메서드를 호출하면됩니다.

또한 관리되지 않는 개체에 바인딩하는 WPF는 이러한 개체가 IDispatch를 포함한 COM을 완벽하게 지원해야합니다.

1

이미 알고 있듯이 interop를 통해 관리되는 버전과 관리되지 않는 버전을 함께 사용할 수 있습니다. 그러나 WPF는 CLR에서 실행됩니다. 당신은 그 길을가는 것을 선택한다, 여기 http://neilmosafi.blogspot.com/2008/07/unmanaged-version-of-wpf-coming.html

는 WPF/기본 상호 운용성에 대한 추가 참조입니다 : 여기

어떤 사람들은 미래의 관리되지 않는 버전에 대해 추측 웹에 대한 기사입니다

http://msdn.microsoft.com/en-us/library/ms742522.aspx

+2

첫 번째 링크의 추측은 MIL에 관한 것으로 밝혀진 PDC08 세션에 대한 설명을 기반으로합니다. 지난 2 년 동안 MIL을 공개 API로 만들 수있는 다른 추측이나 다른 추측을 듣지 못했습니다. MIL에는 저급 프리미티브 만 포함되므로 WPF가 아닐지라도 WPF가 아닙니다. –

+0

고마워요, @ 레이. 그것은 좋은 정보입니다. – kbrimington