Example #1
0
        protected override void WndProc(ref Message msg)
        {
            switch (msg.Msg)
            {
            case WM_DRAWCLIPBOARD:
                if (Clipboard.ContainsImage())
                {
                    // クリップボードの内容がテキストの場合のみ
                    // クリップボードの内容を取得してハンドラを呼び出す
                    ClipboardHandler?.Invoke(this, new ClipboardImageEventArgs(Clipboard.GetImage()));
                }
                if (_NextHandle != IntPtr.Zero)
                {
                    SendMessage(
                        _NextHandle, msg.Msg, msg.WParam, msg.LParam);
                }
                msg.Result = IntPtr.Zero;
                return;

            case WM_CHANGECBCHAIN:
                if (msg.WParam == _NextHandle)
                {
                    _NextHandle = msg.LParam;
                }
                else if (_NextHandle != IntPtr.Zero)
                {
                    SendMessage(_NextHandle, msg.Msg, msg.WParam, msg.LParam);
                }
                msg.Result = IntPtr.Zero;
                return;
            }
            base.WndProc(ref msg);
        }