Хостинг Win32 Windows в приложении WPF? - PullRequest
4 голосов
/ 24 ноября 2010

У меня есть старое Win32-приложение c ++, и расширение его с помощью окон wpf работает.

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

Итак, к моему старому проекту на c ++ я хочу добавить Bootstrapper, окно оболочки, загрузчик MEF, все функции. И там я хочу поместить некоторые команды, которые открывают устаревшие окна win32, когда они необходимы.

Теперь открыть окна WPF в приложении win32 просто, мне просто нужно использовать

System::Windows::Forms::Integration::ElementHost::EnableModelessKeyboardInterop(mywindow);

Но как открыть окно win32 в приложении WPF? Окну win32 понадобится цикл прокачки сообщений, но куда мне его поместить:

MSG  msg;
while (GetMessage(&msg, NULL, NULL, NULL))
{
  TranslateMessage(&msg);
  DispatchMessage(&msg);
}

Могу ли я просто создать новую тему для цикла? Или для этого тоже есть помощник по взаимодействию?

Или моя идея просто безумна?

1 Ответ

5 голосов
/ 24 ноября 2010

Вы видели это ?: Как WPF использует HWNDs

Я также рекомендую прочитать это: Пошаговое руководство. Размещение элемента управления Win32 в WPF

Как вы увидите, есть окно хоста, которое будет содержать элемент управления. Окно хоста также может содержать самокрашенный контент или что угодно.

Вы должны переопределить WndProc из HwndHost. Может быть, от этого можно переслать вашему родному обработчику. Еще не сделали этого.

Как отметил @Tergiver, в рассылке сообщений нет необходимости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...