2009-07-15 2 views
0

두 개의 화면이 있습니다. 하나는 VB에서 생성되고 두 번째는 WPF에서 생성됩니다.SetParent COM 및 WPF

나는 wpf 안에 vb를 삽입해야합니다.

따라서 나는 먼저 새로운 Windows Form의 양식을 만들고 win32 API 함수 "SetParent"를 사용하여 vb 화면을 Windows 양식에 포함시키는 아이디어를 가지고있었습니다. 둘째, wpf WindowsFormsHost 컨트롤을 사용하여 wpf 양식 내에서 winform을 호스팅합니다.

별도의 테스트 응용 프로그램에서 모든 것이 잘 진행됩니다. 하지만 완전히 거대한 wpf 응용 프로그램에서 수행하려고하면 winform이 비어 있고 VB 화면이 깜박이며 즉시 사라집니다.

일부 가능한 해결책이 있습니까 ???

제발 .. 정말 서두르다.

감사합니다.

P.S : 누군가 wpf에 vb6을 삽입하는 더 좋은 방법이 있다면 ... 나는 그것을 듣고 싶어합니다.

Neria

답변

1

ActiveX 컨트롤로 VB6 화면을 노출 할 수 있습니까? 그렇다면 ActiveX 컨트롤을 가져 오기를 추가 한 다음 WindowsFormsHost 인스턴스에 추가하는 것이 더 깔끔합니다. 그런 다음 WindowsFormsHost을 일반 WPF 컨트롤로 처리하고 WPF 응용 프로그램에 추가 할 수 있습니다.

0

추가해야합니다 : WindowsFormsHost .Child = 새 System.Windows.Forms.Control 는 사용 setParent가 불려 갔을 전에 HWND

을 통과
+0

답변을 확장하십시오. –

0

당신이 프로그래밍 비주얼 베이직 응용 프로그램을 시작 ? 그렇다면 프로세스가로드되고 vb-window에 대한 올바른 창 핸들을 만들 때까지 기다려야합니다.

WPF 창을 먼저 초기화 한 다음 다른 창을 포함 시키십시오.

자녀 (vb 창)에 올바른 크기를 설정 했습니까?

창 핸들을 찾으려면 FindWindow/FindWindowEx 또는 WindowEnum을 사용하십시오. 동적 제목이있는 창에 대해 FindWindow를 사용하려면 클래스 이름을 검색해야합니다 (잘하면 하나의 창만 있음).

자식에 대해 WS_Child 및 ~ WS_Popup 스타일을 설정 했습니까?