Beispiel #1
0
        private bool WndProc_Window(WinProcMessage msg)
        {
            string swParam = null;
            bool bCallBaseWndProc = true;  // si bCallBaseWndProc = true base.WndProc() est appelé

            //Form parentWindow;
            switch (msg.wm)
            {
                case User.WM.WM_ENDSESSION:
                    string slParam = Win32.Windows.GetEndSessionLParamString((uint)msg.msg.LParam);
                    if (gbTrace)
                        pb.Trace.WriteLine("WinProc Child Window              : {0,-20} {1,-20} window {2,-25} hWnd {3} lParam {4}", msg.wm, msg.msg.WParam, msg.form.Text, msg.form.Handle, slParam);
                    break;
                case User.WM.WM_CLOSE:
                    if (gbTrace)
                        pb.Trace.WriteLine("WinProc Child Window              : {0,-20} {1,-20} window {2,-25} hWnd {3}", msg.wm, swParam, msg.form.Text, msg.form.Handle);
                    RemoveWindow(msg.form);
                    ActivateFirstWindow();
                    break;
                case User.WM.WM_ACTIVATE:
                    short low = msg.msg.WParam.zGetLowValue();
                    User.WA wa = Messages.GetWA(low);
                    swParam = wa.ToString();
                    if (gbTrace)
                        pb.Trace.WriteLine("WinProc Child Window              : {0,-20} {1,-20} window {2,-25} hWnd {3}", msg.wm, swParam, msg.form.Text, msg.form.Handle);
                    if (wa == User.WA.WA_CLICKACTIVE || wa == User.WA.WA_ACTIVE)
                        SetFirstWindow(msg.form);
                    break;
                case User.WM.WM_SYSCOMMAND:
                    User.SC sc = Messages.GetSC((int)msg.msg.WParam);
                    //parentWindow = msg.form.Owner;
                    //if (parentWindow == null) break;
                    if (sc == User.SC.SC_CLOSE)
                    {
                        if (gbTrace)
                            pb.Trace.WriteLine("WinProc Child Window              : {0,-20} {1,-20} window {2,-25} hWnd {3} lParam = {4:x} Close window", msg.wm, sc, msg.form.Text, msg.form.Handle, msg.msg.LParam.ToInt32());
                        if (gbHideWindowWhenClose)
                        {
                            msg.form.Visible = false;
                            bCallBaseWndProc = false;
                        }
                    }
                    else if (sc == User.SC.SC_MINIMIZE)
                    {
                        if (gbTrace)
                            pb.Trace.WriteLine("WinProc Child Window              : {0,-20} {1,-20} window {2,-25} hWnd {3} lParam = {4:x} Minimize window", msg.wm, sc, msg.form.Text, msg.form.Handle, msg.msg.LParam.ToInt32());

                        if (gbMinimizeParentWindowWhenMinimize)
                        {
                            gbDisableSetFirstWindow = true;
                            Point pt = Cursor.Position;
                            //User.SendMessage(parentWindow.Handle, (uint)User.WM.WM_SYSCOMMAND, (IntPtr)User.SC.SC_MINIMIZE, new IntPtr(cu.MakeValue(pt.X, pt.Y)));
                            User.SendMessage(gParentWindow.Form.Handle, (uint)User.WM.WM_SYSCOMMAND, (IntPtr)User.SC.SC_MINIMIZE, new IntPtr(zconvert.MakeValue(pt.X, pt.Y)));
                            bCallBaseWndProc = false;
                        }
                        if (gbHideWindowWhenMinimize)
                        {
                            msg.form.Visible = false;
                            //HideWindow(msg.form);
                            bCallBaseWndProc = false;
                        }
                    }
                    else if (sc == User.SC.SC_RESTORE)
                    {
                        if (gbTrace)
                            pb.Trace.WriteLine("WinProc Child Window              : {0,-20} {1,-20} window {2,-25} hWnd {3} lParam = {4:x} Restore window", msg.wm, sc, msg.form.Text, msg.form.Handle, msg.msg.LParam.ToInt32());
                        //ShowWindow(msg.form);
                        //bCallBaseWndProc = false;
                    }
                    break;
                case User.WM.WM_SHOWWINDOW:
                    if (gbTrace)
                        pb.Trace.WriteLine("WinProc Child Window              : {0,-20} {1,-20} window {2,-25} hWnd {3} lParam = {4:x} Show or hide window", msg.wm, msg.msg.WParam, msg.form.Text, msg.form.Handle, msg.msg.LParam.ToInt32());
                    if ((int)msg.msg.WParam == 0) // 0 = false
                    {
                        // normalement pas besoin de tester gbHideWindowWhenMinimize
                        // si plus aucune fenetre n'est visible, la fenetre parent est cachée
                        // if (gbHideWindowWhenMinimize)
                        HideParentWindow(msg.form);
                    }
                    else // 1 = true
                    {
                        //gParentWindow.Form.Visible = true;
                        ShowParentWindow();
                    }
                    break;
            }

            return bCallBaseWndProc;
        }
Beispiel #2
0
        // Active la 1ère fenêtre fille si la fenêtre mère est activée
        // Désactive le changement de la 1ère fenêtre pendant SC_RESTORE (gbDisableSetFirstWindow)
        private bool WndProc_ParentWindow(WinProcMessage msg)
        {
            string swParam;
            bool bCallBaseWndProc = true;  // si bCallBaseWndProc = true base.WndProc() est appelé

            switch (msg.wm)
            {
                case User.WM.WM_ENDSESSION:
                    string slParam = Win32.Windows.GetEndSessionLParamString((uint)msg.msg.LParam);
                    if (gbTrace)
                        pb.Trace.WriteLine("WinProc ParentWindow              : {0,-20} {1,-20} window {2,-25} hWnd {3} lParam {4}", msg.wm, msg.msg.WParam, msg.form.Text, msg.form.Handle, slParam);
                    if ((int)msg.msg.WParam == 1)
                    {
                        ApplicationExit();
                    }
                    break;
                case User.WM.WM_ACTIVATE:
                    short low = msg.msg.WParam.zGetLowValue();
                    User.WA wa = Messages.GetWA(low);
                    swParam = wa.ToString();

                    if (gbTrace)
                        pb.Trace.WriteLine("WinProc ParentWindow              : {0,-20} {1,-20} window {2,-25} hWnd {3}", msg.wm, swParam, msg.form.Text, msg.form.Handle);

                    if ((wa == User.WA.WA_ACTIVE || wa == User.WA.WA_CLICKACTIVE) && msg.form.WindowState != FormWindowState.Minimized)
                    {
                        Form firstWindow = gOrderedWindows[0];
                        if (firstWindow != null)
                        {
                            firstWindow.Activate();
                            //Form.Activate();
                        }
                    }
                    break;
                case User.WM.WM_SYSCOMMAND:

                    User.SC sc = Messages.GetSC((int)msg.msg.WParam);
                    if (sc == User.SC.SC_CLOSE)
                    {
                        //if (gbTrace) 
                        pb.Trace.WriteLine("WinProc ParentWindow              : {0,-20} {1,-20} window {2,-25} hWnd {3} lParam = {4:x} Close window", msg.wm, sc, msg.form.Text, msg.form.Handle, msg.msg.LParam.ToInt32());
                        ApplicationExit();
                    }
                    else if (sc == User.SC.SC_MINIMIZE)
                    {
                        if (gbTrace)
                            pb.Trace.WriteLine("WinProc ParentWindow              : {0,-20} {1,-20} window {2,-25} hWnd {3} lParam = {4:x} Minimize window", msg.wm, sc, msg.form.Text, msg.form.Handle, msg.msg.LParam.ToInt32());
                    }
                    else if (sc == User.SC.SC_RESTORE)
                    {
                        gbDisableSetFirstWindow = false;
                        if (gbTrace)
                            pb.Trace.WriteLine("WinProc ParentWindow              : {0,-20} {1,-20} window {2,-25} hWnd {3} lParam = {4:x}, Restore window", msg.wm, sc, msg.form.Text, msg.form.Handle, msg.msg.LParam.ToInt32());
                    }
                    break;
            }

            return bCallBaseWndProc;
        }