次の方法で共有


NativeWindow.WndProc メソッド

ウィンドウに関連付けられている既定のウィンドウ プロシージャを呼び出します。

Protected Overridable Sub WndProc( _
   ByRef m As Message _)
[C#]
protected virtual void WndProc(   ref Messagem);
[C++]
protected: virtual void WndProc(Message* m);
[JScript]
protected function WndProc(
   m : Message);

パラメータ

  • m
    現在の Windows メッセージに関連付けられている Message

解説

このメソッドは、ウィンドウ メッセージがウィンドウのハンドルに送信されると呼び出されます。

継承時の注意: 特定のメッセージ処理を実装するには、このメソッドをオーバーライドします。未処理のメッセージの base.WndProc を呼び出します。

使用例

[Visual Basic, C#, C++] ウィンドウ プロシージャでオペレーティング システムのウィンドウ メッセージを受け取る方法を次の例に示します。この例では、これを達成するために、 NativeWindow から継承するクラスを作成します。

[Visual Basic, C#, C++] MyNativeWindowListener クラスは、コンストラクタに渡されたフォームのウィンドウ プロシージャにフックし、 WndProc メソッドをオーバーライドして WM_ACTIVATEAPP ウィンドウ メッセージを受け取ります。このクラスでは、 NativeWindow が使用するウィンドウ ハンドルを識別するために AssignHandle メソッドと ReleaseHandle メソッドを使用する方法を示しています。このハンドルは、 Control.HandleCreated イベントと Control.HandleDestroyed イベントを基に割り当てられます。 WM_ACTIVATEAPP ウィンドウ メッセージが受信されると、このクラスは form1 ApplicationActivated メソッドを呼び出します。

[Visual Basic, C#, C++] このコードは、 NativeWindow クラスの概要で紹介されている例からの抜粋です。簡略にするため、コードの一部は示されていません。コード全体については、 NativeWindow を参照してください。

 
' NativeWindow class to listen to operating system messages.
Public Class MyNativeWindowListener
    Inherits NativeWindow

    ' Constant value was found in the "windows.h" header file.
    Private Const WM_ACTIVATEAPP As Integer = &H1C

    Private parent As Form1

    Public Sub New(ByVal parent As Form1)

        AddHandler parent.HandleCreated, AddressOf Me.OnHandleCreated
        AddHandler parent.HandleDestroyed, AddressOf Me.OnHandleDestroyed
        Me.parent = parent
    End Sub

    ' Listen for the control's window creation and hook into it.    
    Private Sub OnHandleCreated(ByVal sender As Object, ByVal e As EventArgs)
        ' Window is now created, assign handle to NativeWindow.
        AssignHandle(CType(sender, Form).Handle)
    End Sub

    Private Sub OnHandleDestroyed(ByVal sender As Object, ByVal e As EventArgs)
        ' Window was destroyed, release hook.
        ReleaseHandle()
    End Sub
    
<System.Security.Permissions.PermissionSetAttribute(System.Security.Permissions.SecurityAction.Demand, Name:="FullTrust")> _
    Protected Overrides Sub WndProc(ByRef m As Message)
        ' Listen for operating system messages

        Select Case (m.Msg)
            Case WM_ACTIVATEAPP

                ' Notify the form that this message was received.
                ' Application is activated or deactivated, 
                ' based upon the WParam parameter.
                parent.ApplicationActived(m.WParam.ToInt32() <> 0)

        End Select

        MyBase.WndProc(m)
    End Sub
End Class

[C#] 
// NativeWindow class to listen to operating system messages.
public class MyNativeWindowListener: NativeWindow{

    // Constant value was found in the "windows.h" header file.
    private const int WM_ACTIVATEAPP = 0x001C;

    private Form1 parent;

    public MyNativeWindowListener(Form1 parent){

        parent.HandleCreated += new EventHandler(this.OnHandleCreated);
        parent.HandleDestroyed+= new EventHandler(this.OnHandleDestroyed);
        this.parent = parent;
    }

    // Listen for the control's window creation and then hook into it.
    internal void OnHandleCreated(object sender, EventArgs e){
        // Window is now created, assign handle to NativeWindow.
        AssignHandle(((Form1)sender).Handle);
    }
    internal void OnHandleDestroyed(object sender, EventArgs e) {
        // Window was destroyed, release hook.
        ReleaseHandle();
    }
[System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand, Name="FullTrust")]
    protected override void WndProc(ref Message m){
        // Listen for operating system messages

        switch (m.Msg){
            case WM_ACTIVATEAPP:

                // Notify the form that this message was received.
                // Application is activated or deactivated, 
                // based upon the WParam parameter.
                parent.ApplicationActived(((int)m.WParam != 0));

                break;                
        }
        base.WndProc(ref m);
    }        
}

[C++] 
// NativeWindow class to listen to operating system messages.
__gc class MyNativeWindowListener : public NativeWindow {

    // Constant value was found in the S"windows.h" header file.
private:
    const static int  WM_ACTIVATEAPP = 0x001C;
    Form1*  parent;

public:
    MyNativeWindowListener(Form1* parent) {
        parent->HandleCreated += new EventHandler(this, &MyNativeWindowListener::OnHandleCreated);
        parent->HandleDestroyed += new EventHandler(this, &MyNativeWindowListener::OnHandleDestroyed);
        this->parent = parent;
    }

    public private: 
        // Listen for the control's window creation and then hook into it.
        void OnHandleCreated(Object* sender, EventArgs* /*e*/) {
            // Window is now created, assign handle to NativeWindow.
            AssignHandle((dynamic_cast<Form1*>(sender))->Handle);
        }
        void OnHandleDestroyed(Object* /*sender*/, EventArgs* /*e*/) {
            // Window was destroyed, release hook.
            ReleaseHandle();
        }

protected:
    [System::Security::Permissions::PermissionSet(System::Security::Permissions::SecurityAction::Demand, Name="FullTrust")] 
    void WndProc(Message* m) {
        // Listen for operating system messages

        switch (m->Msg) {
            case WM_ACTIVATEAPP:

                // Notify the form that this message was received.
                // Application is activated or deactivated,
                // based upon the WParam parameter.
                parent->ApplicationActived(((int)m->WParam != 0));

                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 | Handle | AssignHandle | CreateHandle | DestroyHandle | ReleaseHandle | Message