2008-09-22 4 views
7

Я хочу, чтобы приложение Windows запустило другое приложение Direct3D и визуализировало приложение Direct3D в элемент управления, предоставляемый родительским процессом.Можете ли вы сделать окно Direct3D для одного процесса в другой процесс «HWND?

Возможно ли это? Если да, то как это сделать?

ответ

0

Это возможно. Я помню, как это делалось в VB6 при написании экранных заставок. Панель управления экранной заставкой отправляет командную строку в экранную заставку с помощью HWND окна предварительного просмотра. Используя этот HWND, вы можете получить HDC и оттуда все, что вам нужно.

5

Это можно сделать легко, все, что вам нужно сделать, это передать идентификатор окна HWND в качестве параметра при создании D3DDevice. Он работает даже во время взаимодействия - вы можете передать hWnd из .NET в C++ и визуализировать C# -команду с помощью собственного DirectX.

+0

как вы получаете .NET HWND из приложения C++? – Icebone1000 2014-02-21 14:24:48

1

Вот один пример, содержащий содержимое окна WPF в существующем окне Win32. Я сделал это при написании экранной заставки на основе WPF, чтобы отобразить в окне предварительного просмотра Screen Saver.

http://stuff.seans.com/2008/09/01/writing-a-screen-saver-in-wpf/