お世話になります。
 表題のとおりなんですが、C#でウィンドウメッセージを受信したときに、イベントを発生させたいと考えています。
 とりあえず、ウィンドウメッセージを受信する処理とイベントクラスの作成はできたのですが、イベントを発生させる方法がよくわかりません。
 下記のコードでは、コンパイルエラーが起きてしまうようです。
 アドバイスを頂けないでしょうか。
 よろしくお願いします。

using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;

namespace WndMessage{
    public class WndMessage{

        // メッセージ処理関数用デリゲート
        private delegate int D_MyWndProc(IntPtr hwnd, int msg, int wParam, int lParam);

        // ウィンドウをサブクラス化するAPI
        private static int GWL_WNDPROC = -4;
        [System.Runtime.InteropServices.DllImport("user32.dll", EntryPoint = "GetWindowLongA")]
        extern static int GetWindowLong(IntPtr hwnd, int nIndex);
        [System.Runtime.InteropServices.DllImport("user32.dll", EntryPoint = "SetWindowLongA")]
        extern static int SetWindowLong(IntPtr hwnd, int nIndex, int dwNewLong);
        [System.Runtime.InteropServices.DllImport("user32.dll", EntryPoint = "SetWindowLongA")]
        extern static int SetWindowLong(IntPtr hwnd, int nIndex, D_MyWndProc dwNewLong);
        [System.Runtime.InteropServices.DllImport("user32.dll", EntryPoint = "CallWindowProcA")]
        extern static int CallWindowProc(int lpPrevWndFunc, IntPtr hwnd, int msg, int wParam, int lParam);

        // デフォルトのメッセージ処理関数
        private static int lngWnP;

        // 独自メッセージの処理を開始
        public void StartReceiveMessage(IntPtr hwnd){
            lngWnP = GetWindowLong(hwnd, GWL_WNDPROC);
            SetWindowLong(hwnd, GWL_WNDPROC, MyWndProc);
        }

        // 独自メッセージの処理を終了
        public void ExitReceiveMessage(IntPtr hwnd){
            SetWindowLong(hwnd, GWL_WNDPROC, lngWnP);
        }

        // ウィンドウに来たメッセージを振り分ける関数
        private static int MyWndProc(IntPtr hwnd, int msg, int wParam, int lParam){
            return CallWindowProc(lngWnP, hwnd, msg, wParam, lParam);
        }

        public class MessageEventArgs : EventArgs {
            private readonly int msg;
            private readonly int lParam;
            private readonly int wParam;

            public MessageEventArgs(int msg, int lParam, int wParam){
                this.msg = msg;
                this.lParam = lParam;
                this.wParam = wParam;
            }

            public int msg{
                get { return msg; }
            }

            public int lParam{
                get { return lParam; }
            }

            public int wParam{
                get { return wParam; }
            }
        }
    }
}