Visio ActiveX あれこれ

Visio Drawing Control の詳細を、というリクエストをいただいたのでこちらを…

1 クライアントでの利用が前提
Visio Control は基本的にクライアント アプリケーションでの利用が前提で、サーバー用のコントロールではありません。ただ、SharePoint の Web パーツに挿入することで擬似サーバー用アプリケーションとすることは可能です。Web パーツで使う際には、アクセスするユーザーの PC に Visio がインストールされている必要があります。でないとコントロールが初期化されず、灰色の四角い箱が表示されてしまいます。

2 VS.NET でインターフェース統合
コントロールのプロパティを使って Visio のインターフェースをホストのアプリケーションの一部に統合することができます…がこの点に注意してください。統合できるホスト: VB6、C++、Office。統合できないホスト: VB.NET、C#。要するに古い OLE コンテナでしか統合ができない仕組みになっています。

VB.NET や C# で Visio のインターフェース、たとえば印刷画面など、を表示する場合は、DoCmd を使ってください。

3 Internet Explorer での注意点
Internet Explorer でコントロールをホストしているときは、やはり Visio インターフェースの統合はできません。無理やり統合すると Internet Explorer の既存のメニューが 2 つ表示されるなどうまく動作しません。これは Internet Explorer の仕様によるものです。

4 複数の図面を表示するには
Visio Control は SDI なので、図面は 1 つしか扱えません。複数の図面を扱うにはコントロールのインスタンスを複数用意する必要があります。その際、次のことにきをつけてください。まずフォーカスをアクティブにできるコントロールはやはり 1 つだけです。また、複数インスタンスをホストするときは Visio インターフェースの統合はやめたほうがよいです。統合はできますが、フォーカスを切り替えるたびにツールバーが妙な動きをします。

5 Internet Explorer のスレッドに注意
Internet Explorer をホストにする場合、Visio コントロールは Internet Explorer のプロセス内の最初のスレッドでのみ動作します。Visio コントロールの入った Web ページを開くときは、必ず Internet Explorer のプロセスを新規作成し、そのプロセスでファイルを開くようにしてください (そのプロセスの最初のスレッドでファイルを開いています)。既に Internet Explorer が実行されているときに、Web ページをダブルクリックして開くと、Internet Explorer の同じプロセス内に新しいスレッドが作成される形になるので、このファイルの中にコントロールがあっても動作しません。

続きは後ほど…

<担当: M>
この投稿は現状のまま何の保証もなく掲載しているものであり、何らかの権利を許諾するものでもありません。マイクロソフト社員による発言やコメントは、マイクロソフトの正式な見解またはコメントではありません。