У меня есть DLL (Player.dll), написанная на C ++, для внутреннего использования Windows GDI .У меня есть приложение (в основном, видеоплеер), написанное на Windows Forms, которое внутренне вызывает API из Player.dll
для визуализации фактической графики на экране, используя технику p / invoke:
public class ProxyPlayer
{
[DllImport("Player.dll", CharSet=CharSet.Unicode, EntryPoint="PlayVideo")]
public static extern void Play(int playerHandle, out TWResult result);
[DllImport("Player.dll", CharSet=CharSet.Unicode, EntryPoint="PauseVideo")]
public static extern void Pause(int playerHandle);
//other methods
}
Это работает.
Но теперь я хочу написать то же приложение, используя Silverlight 4.0.Как вы знаете, большинство Windows GDI работает с HWND
для визуализации графики на экране, поэтому я передаю playerHandle
методам ProxPlayer
, как вы можете видеть выше.Window Forms 'UserControl
определяет открытое свойство с именем Handle
типа IntPtr
, которое эквивалентно HWND
, поэтому я передаю его методам ProxyPlayer
.Это решило мою проблему.Но у Silverlight UserControl
такого свойства нет.
Итак, мой вопрос в основном, как бы я справился с управлением Silverlight?Потому что без него я не могу вызывать API с Player.dll
.Но я должен позвонить APS от этого.У меня нет других вариантов, , так как DLL - это настоящий движок, который делает буквально все, что связано с , интерпретирует огромный объем данных и затем отображает их .Поэтому, пожалуйста, предложите мне решение, которое соответствует моему требованию!
Примечание: Предположим, что мое приложение silverlight всегда будет работать в Microsoft Windows.Поэтому у меня нет проблем с привязкой GDI к Windows.