Windows2.CreateToolWindow2 メソッド

更新 : 2007 年 11 月

ツール ウィンドウを新規作成し、ユーザー定義の .NET コントロールをホストします。

名前空間 :  EnvDTE80
アセンブリ :  EnvDTE80 (EnvDTE80.dll 内)

構文

'宣言
Function CreateToolWindow2 ( _
    Addin As AddIn, _
    Assembly As String, _
    Class As String, _
    Caption As String, _
    GuidPosition As String, _
    <OutAttribute> ByRef ControlObject As Object _
) As Window
'使用
Dim instance As Windows2
Dim Addin As AddIn
Dim Assembly As String
Dim Class As String
Dim Caption As String
Dim GuidPosition As String
Dim ControlObject As Object
Dim returnValue As Window

returnValue = instance.CreateToolWindow2(Addin, _
    Assembly, Class, Caption, GuidPosition, _
    ControlObject)
Window CreateToolWindow2(
    AddIn Addin,
    string Assembly,
    string Class,
    string Caption,
    string GuidPosition,
    out Object ControlObject
)
Window^ CreateToolWindow2(
    AddIn^ Addin, 
    String^ Assembly, 
    String^ Class, 
    String^ Caption, 
    String^ GuidPosition, 
    [InAttribute] [OutAttribute] Object^% ControlObject
)
function CreateToolWindow2(
    Addin : AddIn, 
    Assembly : String, 
    Class : String, 
    Caption : String, 
    GuidPosition : String, 
    ControlObject : Object
) : Window

パラメータ

  • Addin
    型 : EnvDTE.AddIn

    ツール ウィンドウを作成するアドインのインスタンス。

  • Assembly
    型 : System.String

    ユーザー コントロールを含むアセンブリの完全名またはファイル パス。

  • Class
    型 : System.String

    ユーザー コントロールを実装するクラスの完全名。

  • Caption
    型 : System.String

    新しいツール ウィンドウに表示するキャプション。

  • GuidPosition
    型 : System.String

    新しいウィンドウの一意識別子 (これは、Windows コレクションにウィンドウを配置する場合に使用できます)。

  • ControlObject
    型 : System.Object%

    新しいツール ウィンドウ内でホストされるユーザー コントロール。

戻り値

型 : EnvDTE.Window

Window オブジェクト。

解説

CreateToolWindow2 を呼び出して新しいツール ウィンドウを作成する前に、アドインと同じアセンブリにユーザー コントロール (ControlObject) を移動するか、ユーザー コントロールのすべての属性を設定して COM から参照できるようにする必要があります。たとえば、プロジェクトのコンパイル オプションで [COM の相互運用機能に登録] チェック ボックスをオンにします。これを行わないと、コントロールが正しくマーシャリングされず、CreateToolWindow2 は null 値を返します。

ツール ウィンドウが表示される前に、新しいツール ウィンドウの表示状態 (高さ、幅、位置など) を設定すると、エラーが発生します。このようなプロパティを設定する前にウィンドウが表示されていることを確認してください。

このメソッドの使用方法に関するその他の例については、Visual Studio Automation Samples Web ページの ToolWindow サンプル (https://www.microsoft.com/downloads/details.aspx?familyid=3ff9c915-30e5-430e-95b3-621dccd25150&displaylang=en) を参照してください。ActiveX コントロールの作成方法については、「MFC ActiveX コントロールの作成」を参照してください。

次の例では、まず Windows コントロール ライブラリ プロジェクトをビルドしてユーザー コントロールを作成する必要があります。次のコードでは、コントロールのプロジェクトと使用するクラスの名前に注目します。文字列 assemblypath をユーザー コントロールの DLL ファイルのディレクトリに変更してください。また、このコードは、アドイン プロジェクトの OnConnection メソッドを置き換えるように設計されています。

[C#]

public void OnConnection(object application, ext_ConnectMode 
  connectMode, object addInInst, ref Array custom)
{
    _applicationObject = (DTE2)application;
    _addInInstance = (AddIn)addInInst;
    EnvDTE80.Windows2 wins2obj;
    AddIn addinobj;
    object ctlobj = null;
    Window newWinobj;

    // A toolwindow must be connected to an add-in, so this line 
    // references one.
    addinobj = _applicationObject.AddIns.Item(1);
    wins2obj = (Windows2)_applicationObject.Windows;

    // This section specifies the path and class name of the windows 
    // control that you want to host in the new tool window, as well as 
    // its caption and a unique GUID.
    string assemblypath = "C:\\temp\\WindowsControlLibrary1.dll";
    string classname = "WindowsControlLibrary1.UserControl1";
    string guidpos = "{426E8D27-3D33-4fc8-B3E9-9883AADC679F}";
    string caption = "CreateToolWindow2 Test";

    // Create the new tool window and insert the user control in it.
    newWinobj = wins2obj.CreateToolWindow2(addinobj, assemblypath, 
      classname, caption, guidpos, ref ctlobj);
    newWinobj.Visible = true;
}

アクセス許可

  • 直前の呼び出し元に対する完全な信頼。このメンバは、部分的に信頼されているコードから使用することはできません。詳細については、「部分信頼コードからのライブラリの使用」を参照してください。

参照

参照

Windows2 インターフェイス

Windows2 メンバ

EnvDTE80 名前空間

その他の技術情報

方法 : ツール ウィンドウを作成および制御する

方法 : オートメーション オブジェクト モデルのコード例をコンパイルおよび実行する