2009-07-15 3 views
0

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

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

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

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

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

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

Спасибо.

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

Neria

ответ

1

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

0

Должен добавить: WindowsFormsHost .Child = Новый System.Windows.Forms.Control перед использованием SetParent передать HWND

+0

Пожалуйста, расшифруйте свой ответ. –

0

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

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

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

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

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