SetParent COM и WPF - PullRequest
       32

SetParent COM и WPF

0 голосов
/ 15 июля 2009

У меня есть два экрана. один создан в vb, а второй - в WPF.

Я должен вставить VB внутри wpf.

Поэтому у меня возникла идея сначала создать форму новой формы Windows и использовать функцию Win32 API SetParent, чтобы встроить экран vb в форму окна. Во-вторых, разместите winform внутри формы wpf, используя элемент управления wpf WindowsFormsHost.

Все идет нормально в отдельном тестовом приложении. но когда я пытаюсь сделать это в полном огромном wpf-приложении, winform загружается пустым, а экран vb мигает, а затем сразу исчезает.

есть какое-то возможное решение ???

пожалуйста, помогите .. это действительно спешка.

Спасибо.

P.S .: если у кого-то есть лучший способ встроить vb6 в wpf ... я бы хотел это услышать.

Neria

Ответы [ 3 ]

1 голос
/ 15 июля 2009

Можно ли выставить экран VB6 как элемент управления ActiveX? Если это так, то, вероятно, было бы целесообразнее добавить импорт элемента управления ActiveX, а затем добавить его в экземпляр WindowsFormsHost . Затем вы можете рассматривать WindowsFormsHost как обычный элемент управления WPF и добавлять его в приложение WPF.

0 голосов
/ 26 января 2011

вы запускаете приложение vb программно? Если это так, вам нужно дождаться загрузки процесса и создать правильный дескриптор окна для vb-окна.

Окно WPF также необходимо сначала инициализировать, затем попытаться встроить другие окна.

Вы установили правильный размер для ребенка (окно vb)?

Если вы хотите узнать дескриптор окна, используйте либо FindWindow / FindWindowEx, либо WindowEnum. Если вы хотите использовать FindWindow для окна, имеющего динамический заголовок, вам следует искать имя класса (возможно, с ним только одно окно).

Вы установили стили WS_Child и ~ WS_Popup для ребенка?

0 голосов
/ 24 января 2010

Необходимо добавить: WindowsFormsHost? .Child = Новая система.Windows.Forms.Control перед использованием SetParent для передачи hWnd

...