次の方法で共有


NativeWindow.Handle プロパティ

ウィンドウのハンドルを取得します。

Public ReadOnly Property Handle As IntPtr
[C#]
public IntPtr Handle {get;}
[C++]
public: __property IntPtr get_Handle();
[JScript]
public function get Handle() : IntPtr;

プロパティ値

ウィンドウのハンドル。ウィンドウに関連付けられているハンドルがない場合は 0 を返します。

解説

このメソッドは、ウィンドウまたはコントロールのハンドルが必要とされる Windows API メソッドを呼び出すときに使用します。

使用例

[Visual Basic, C#, C++] 特定のオペレーティング システム ウィンドウ クラス名を使用してウィンドウを作成する例を次に示します。この例では、これを達成するために、 NativeWindow から継承するクラスを作成します。また、この例では、 Handle が変更されたときに通知される OnHandleChange メソッドをオーバーライドしています。

[Visual Basic, C#, C++] MyNativeWindow クラスは、 ClassName が BUTTON に設定された新しいウィンドウを作成します。これは Win32 ボタン ウィンドウを作成します。ボタンの位置とサイズは、追加のウィンドウ スタイルと併せて設定されます。このクラスは、 CreateHandle メソッドを使用し、 WndProc メソッドをオーバーライドして、受信されたウィンドウ メッセージを受け取る方法を示しています。この例では WM_ACTIVATEAPP メッセージを処理していますが、実際のプログラムでは、作成した型に対応するウィンドウ メッセージを使用できます。

[Visual Basic, C#, C++] メモ   コントロールの種類によっては、ウィンドウではなく、ウィンドウの親にウィンドウ メッセージを送信します。詳細については、Windows プラットフォーム SDK を参照してください。

 
' MyNativeWindow class to create a window given a class name.
Public Class MyNativeWindow
    Inherits NativeWindow

    ' Constant values were found in the "windows.h" header file.
    Private Const WS_CHILD As Integer = &H40000000, _
                  WS_VISIBLE As Integer = &H10000000, _
                  WM_ACTIVATEAPP As Integer = &H1C

    private windowHandle as integer

    Public Sub New(ByVal parent As Form)

        Dim cp As CreateParams = New CreateParams()

        ' Fill in the CreateParams details.
        cp.Caption = "Click here"
        cp.ClassName = "Button"

        ' Set the position on the form
        cp.X = 100
        cp.Y = 100
        cp.Height = 100
        cp.Width = 100

        ' Specify the form as the parent.
        cp.Parent = parent.Handle

        ' Create as a child of the specified parent
        cp.Style = WS_CHILD Or WS_VISIBLE

        ' Create the actual window
        Me.CreateHandle(cp)
    End Sub

    ' Listen to when the handle changes to keep the variable in sync
 <System.Security.Permissions.PermissionSetAttribute(System.Security.Permissions.SecurityAction.Demand, Name:="FullTrust")> _
Protected Overrides Sub OnHandleChange()
        windowHandle = Me.Handle.ToInt32()
    End Sub

<System.Security.Permissions.PermissionSetAttribute(System.Security.Permissions.SecurityAction.Demand, Name:="FullTrust")> _
    Protected Overrides Sub WndProc(ByRef m As Message)
        ' Listen for messages that are sent to the button window. Some messages are sent
        ' to the parent window instead of the button's window.

        Select Case (m.Msg)
            Case WM_ACTIVATEAPP
                ' Do something here in response to messages
        End Select

        MyBase.WndProc(m)
    End Sub

End Class

[C#] 
// MyNativeWindow class to create a window given a class name.
public class MyNativeWindow: NativeWindow{

    // Constant values were found in the "windows.h" header file.
    private const int WS_CHILD = 0x40000000,
                      WS_VISIBLE = 0x10000000,
                      WM_ACTIVATEAPP = 0x001C;
    
    private int windowHandle ;

    public MyNativeWindow(Form parent){

        CreateParams cp = new CreateParams();

        // Fill in the CreateParams details.
        cp.Caption = "Click here";
        cp.ClassName = "Button";
        
        // Set the position on the form
        cp.X = 100;
        cp.Y = 100;
        cp.Height = 100;
        cp.Width = 100;

        // Specify the form as the parent.
        cp.Parent = parent.Handle;
        
        // Create as a child of the specified parent
        cp.Style = WS_CHILD | WS_VISIBLE;

        // Create the actual window
        this.CreateHandle(cp);
    }

    // Listen to when the handle changes to keep the variable in sync
    [System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand, Name="FullTrust")]
    protected override void OnHandleChange(){
        windowHandle  = (int)this.Handle;
    }

[System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand, Name="FullTrust")]
    protected override void WndProc(ref Message m){
        // Listen for messages that are sent to the button window. Some messages are sent
        // to the parent window instead of the button's window.

        switch (m.Msg){
            case WM_ACTIVATEAPP:
                // Do something here in response to messages
                break;
        }
        base.WndProc(ref m);
    }       
}

[C++] 
// MyNativeWindow class to create a window given a class name.
__gc class MyNativeWindow : public NativeWindow {

    // Constant values were found in the S"windows.h" header file.
private:
    const static int
        WS_CHILD = 0x40000000,
        WS_VISIBLE = 0x10000000,
        WM_ACTIVATEAPP = 0x001C;

    int windowHandle;

public:
    MyNativeWindow(Form* parent) {

        CreateParams* cp = new CreateParams();

        // Fill in the CreateParams details.
        cp->Caption = S"Click here";
        cp->ClassName = S"Button";

        // Set the position on the form
        cp->X = 100;
        cp->Y = 100;
        cp->Height = 100;
        cp->Width = 100;

        // Specify the form as the parent.
        cp->Parent = parent->Handle;

        // Create as a child of the specified parent
        cp->Style = WS_CHILD | WS_VISIBLE;

        // Create the actual window
        this->CreateHandle(cp);
    }

protected:
    // Listen to when the handle changes to keep the variable in sync
    [System::Security::Permissions::PermissionSet(System::Security::Permissions::SecurityAction::Demand, Name="FullTrust")] 
    void OnHandleChange() {
        windowHandle  = (int)this->Handle;
    }

    [System::Security::Permissions::PermissionSet(System::Security::Permissions::SecurityAction::Demand, Name="FullTrust")] 
    void WndProc(Message* m) {
        // Listen for messages that are sent to the button window. Some messages are sent
        // to the parent window instead of the button's window.

        switch (m->Msg) {
            case WM_ACTIVATEAPP:
                // Do something here in response to messages
                break;
        }
        NativeWindow::WndProc(m);
    }
};

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

参照

NativeWindow クラス | NativeWindow メンバ | System.Windows.Forms 名前空間 | NativeWindow | AssignHandle | CreateHandle | DestroyHandle | ReleaseHandle | WndProc