2010-06-08 4 views
0

저는 공급 업체의 Outlook 추가 기능에 대한 "추가 기능"으로 실행되는 어셈블리를 구축하고 있습니다. 내 "행동"을 실행할 때가되면 몇 가지 간단한 컨트롤을 사용하여 간단한 창을 만들어야합니다. 벤더의 추가 기능은 부모 윈도우의 정수 핸들을 제공합니다. 내 어셈블리에서 다음과 같은 코드 System.Windows.Forms 참조 추가하여 윈폼으로 아주 쉽게 양식을 넣을 수 있습니다 이니 ParentWindowWrapper 내가 '창 핸들 주위에 심 클래스입니다추가 기능 DLL에서 간단한 기술을 사용하기 위해 어떤 기술을 사용해야합니까?

 FrmHistoryDisplay frm = new FrmHistoryDisplay(); 
     frm.ShowDialog(new ParentWindowWrapper(_parentWindowHandle)); 

m 주어진

 private class ParentWindowWrapper : IWin32Window { 

     private int _parentWindowHandle; 

     public ParentWindowWrapper(int parentWindowHandle) { 
      _parentWindowHandle = parentWindowHandle; 
     } 

     public IntPtr Handle { 
      get { return new IntPtr(_parentWindowHandle); } 
     } 
    } 

양식의 ShowDialog 메서드는 부모의 창 핸들을 래핑하기 위해 IWin32Window 구현자를 사용합니다.

이 모든 것이 효과적이고 간단 해 보입니다. WinForm Form 대신 WPF 창을 사용하여 유사한 작업을 수행 할 수 있는지 궁금합니다. 내가 신경 써야 할까?

답변

2

예, WPF와 유사하게 임의의 Win32 창 핸들이 소유하거나 상위가되는 WPF 창을 호스팅 할 수 있습니다. WPF 양식 방법의 맥락에서 wHandle을 감안할 때, 당신은이 작업을 수행 할 수 있습니다

var helper = new WindowInteropHelper(this); 
helper.Owner = wHandle; 

this.Show(); 

이 주어진 wHandle에 의해 소유되는 표준 최상위 창으로 WPF 창을 설정합니다. Win32 창 핸들 소유권은 모달 대화 상자 동작, 비활성화 된 응용 프로그램의 창 중 하나를 클릭 할 때 창의 활성화 및 포커스에 중요합니다.

Outlook 추가 기능에 대해 WinForms 또는 WPF를 사용해야하는지 여부는 실제로 최대 당신과 당신의 선호. 나는 Outlook의 UI가 WinForms도 WPF도 사용하지 않기 때문에 추가 기능이 설치 될 때 올바른 라이브러리가 컴퓨터에 설치되어 있는지 확인해야합니다.

1

나는 방법은 주석으로 사용하십시오됩니다

"꽤 easly 윈폼과에서를 넣어"이 때문에 지원 후 더 구축 된 한의 기능이 될 것이다 이 방법으로 추가 기능을 사용하십시오.

+0

+1 동의합니다. winforms 스틱. – NotMe

+0

@Chris : 그러나 UI의 일부에 대해 WPF를 사용해야하는 매우 좋은 이유가있을 수 있습니다. 많은 경우에 훨씬 더 강력합니다. 문제의 응용 프로그램을 모른 채 좋은 생각인지 아닌지를 아는 것은 어렵습니다. –

+0

@Reed : 아래에 귀하의 답변이 귀하의 의견과 모순 된 것 같습니다. – NotMe

관련 문제