次の方法で共有


Windows2.CreateToolWindow2 メソッド

ツール ウィンドウを新規作成し、ユーザー定義の .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
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
)
abstract CreateToolWindow2 : 
        Addin:AddIn * 
        Assembly:string * 
        Class:string * 
        Caption:string * 
        GuidPosition:string * 
        ControlObject:Object byref -> Window 
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;
}

.NET Framework セキュリティ

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

参照

関連項目

Windows2 インターフェイス

EnvDTE80 名前空間

その他の技術情報

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

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