본문 바로가기
프로그래밍

WPF 및 Win32 상호 운용성 개요

by 건우아빠유리남편 2009. 8. 27.
반응형


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


반응형

댓글