Handling WM_MOVING in Windows Forms

Just a quick snippet:

public class FormWithWmMoving :
    Form
{
    private const int WM_MOVING = 0x0216;

    private static readonly object EVENT_MOVING = new object();

    public event EventHandler Moving
    {
        add { Events.AddHandler(EVENT_MOVING, value); }
        remove { Events.RemoveHandler(EVENT_MOVING, value); }
    }

    public class MovingEventArgs : EventArgs
    {
        private readonly Rectangle _rectangle;

        public MovingEventArgs(
            Rectangle rectangle)
        {
            _rectangle = rectangle;
        }

        public Rectangle Rectangle
        {
            get { return _rectangle; }
        }
    }

    protected virtual void OnMoving(MovingEventArgs e)
    {
        var h = (EventHandler)Events[EVENT_MOVING];
        if (h != null)
        {
            h(this, e);
        }
    }

    protected override void WndProc(ref Message m)
    {
        if (m.Msg == WM_MOVING)
        {
            var r = (Win32NativeMethods.RECT)Marshal.PtrToStructure(m.LParam, typeof(Win32NativeMethods.RECT));
            var rectangle = new Rectangle(r.left, r.top, r.Bounds.Width, r.Bounds.Height);

            var args = new MovingEventArgs(rectangle);
            OnMoving(args);
        }

        base.WndProc(ref m);
    }
}

Hope this is helpful someday to me or others.

Visual-Basic-Code (VBA) aus Microsoft-Access-Datenbank-Projekten exportieren

Falls Ihr Euren (oder fremden) Programmcode aus einem Access-Datenbank-Projekt (also einer MDB-Datei mit enhaltenem Basic-Code) exportieren wollt, so gibt es ein tolles Script, das mir hier weitergeholfen hat:

„Export All VBA Code“

Dort findet Ihr ein paar 10 Zeilen Code, den Ihr in Eurem Projekt einfügt, geringfügig anpasst (Pfade) und dann alle Module exportiert bekommt, auch den Codebehind von Formularen.