프로그래밍

WPF 및 Win32 상호 운용성 개요

건우아빠유리남편 2009. 8. 27. 23:29
반응형


WPF 만으로 프로그램을 짜는것도 좋지만,
실제로 쓰이는 프로그램을 만들려다보면,
기존에 작성된 Win32 기반의 프로그램들과의 관계를
무시할 수가 없습니다.

DataGrid 처럼 막강한 기능의 Windows Form 기반의 Control 을
다시 WPF 로 재작성 하고자 마음을 먹는다면,
먼저 침낭이 필요할 지도 모르겠습니다^^

이 글은 아래 문서를 참고하여, 작성되었습니다.
WPF 및 Win32 상호 운용성 개요
http://msdn.microsoft.com/ko-kr/library/ms742522.aspx


에어스페이스에 대한 개념 이해
http://msdn.microsoft.com/ko-kr/library/aa970688.aspx

상호 운용을 하는 프로그램을 구성하고자 한다면,
에어스페이스를 먼저 살펴 봐야 합니다.

wpf1.png

위와 같이 하나의 프로그램내부에, 여러 가지의 기술을 혼합하여,
작성할 수 있습니다.
각각의 에어스페이스가 고유의 영역을 침범하지 않으면,
문제가 없지만,

wpf2.png
 
각자의 에어스페이스에는 제약이 따르기 때문에
위와 같이, 서로의 영역을 침범하게 되면,
주의해서 프로그램을 작성해야 합니다.

제약조건

WPF 와 다른 기술을 상호운용하게 되면,
아래와 같은 제약 조건이 존재하므로, 주의 해야 합니다.

1.     상호운용으로 작성한 프로그램은 XBAP 으로 실행할 수 없음.
2.     WPF 가 아닌 요소에 대해서, 레이어, 투명효과, 형태변환( 회전 등 ) 이 적용되지 않음.

WPF에 포함된 상호 운용을 위한 기술

WPF 상호운용을 위해서, 이미 4가지 상호운용 클래스가 구현되어 있습니다.

HwndHost.png
WPF 에서 HWND를 호스팅할 경우
Sample : http://msdn.microsoft.com/en-us/library/ms771352.aspx

WindowsFormsHost.png
WPF 에서 윈폼을 호스팅 할 경우
Sample : http://msdn.microsoft.com/en-us/library/ms771499.aspx

참고 : ActiveX 의 경우는 WindowsFormsHost를 이용하여, 쉽게 넣을 수 있습니다.

HwndSource.png
HWND 에서 WPF 를 호스팅 할 경우
Sample : http://msdn.microsoft.com/en-us/library/ms771373.aspx

ElementHost.png
윈폼에서 WPF를 호스팅 할 경우
Sample : http://msdn.microsoft.com/en-us/library/ms771521.aspx


반응형