を拡張するかなり複雑なクラスがありますSystem.Windows.Forms.UserControl
。/clr
ネイティブ C++ dll を使用するため、スイッチを使用して C++/CLI で記述されています。このクラスの主な役割は、テクスチャ、ズーム、パンなどで画像をレンダリングするアンマネージ Direct3D9 dll のラッパーとして機能することです。
このクラスを .NET Web アプリケーションで再利用する方法はありますか? つまり、ユーザー コントロールをブラウザー内で実行できるようにしたいと考えています。ここでの主な不確実性は、ネイティブ dll へのアクセスと、Direct3D の使用です。これを機能させることができるかどうかを確認するために小さなテストを設定していますが、他の誰かからの入力が必要です.
更新:このガイドに従いました。最初の試行で、コントロールの dll またはその依存関係の 1 つを読み込めないというエラーが表示されました。したがって、テストのために、使用するすべてのアンマネージ dll を system32 にコピーしました。エラーなしでページを読み込めるようになりましたが、まだコントロールが表示されません。About
次のように、既定の C# Web アプリ プロジェクトのページに参照を配置しました。
<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
<h2>
About
</h2>
<p>
Put content here.
</p>
<object id="MyWinControl1" height="200" width="200" classid="http:MNeoConsole.dll#MNeoConsole.MNeoConsoleControl">
<param name="Title" value="Locura loca" />
<param name="Visible" value="true" />
</object>
</asp:Content>
ここで ActiveX のアプローチを試してみますが、それが機能したとしても、クライアントは Internet Explorer を使用するか、何らかのプラグインをインストールする必要があると思います。それは本当に面倒です。
編集:今のところ、他のアプローチを試してみたいと思っています。たとえば、私の C++/CLI クラスは単なるラッパーなので、別の言語で別のラッパーを作成したいと考えています。もし私がそうするなら、その言語は可能な限り Web アプリケーションと友好的であるべきです。