다음을 통해 공유


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 Interop 등록 옵션을 선택합니다. 이렇게 하지 않으면 컨트롤이 제대로 마샬링되지 않고 CreateToolWindow2는 null 값을 반환합니다.

도구 창을 표시하지 않은 채 높이, 너비 또는 위치 같이 새 도구 창의 표시 상태를 설정하려고 시도하면 오류가 발생합니다. 이러한 속성을 설정하려면 먼저 창을 표시해야 합니다.

이 메서드를 사용하는 방법의 다른 예제는 Visual Studio Automation Samples 웹 페이지(https://www.microsoft.com/downloads/details.aspx?familyid=3ff9c915-30e5-430e-95b3-621dccd25150&displaylang=en)에서 ToolWindow 샘플을 참조하십시오. ActiveX 컨트롤을 만드는 방법에 대한 자세한 내용은 MFC ActiveX 컨트롤 만들기를 참조하십시오.

예제

다음 예제를 실행하려면 먼저 Windows 컨트롤 라이브러리 프로젝트를 빌드하여 사용자 정의 컨트롤을 만들어야 합니다. 다음 코드에서 사용하는 컨트롤의 프로젝트 및 클래스 이름에 특히 주의하십시오. 어셈블리 경로 문자열을 사용자 정의 컨트롤의 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 네임스페이스

기타 리소스

방법: 도구 창 만들기 및 제어

방법: 자동화 개체 모델 코드의 예제 컴파일 및 실행