Beispiel #1
0
        private IntPtr DlgWndHookCallbackFunction(int code, IntPtr wParam,
                                                  IntPtr lParam)
        {
            PI.CWPSTRUCT msg = (PI.CWPSTRUCT)System.Runtime.InteropServices
                               .Marshal.PtrToStructure(lParam, typeof(PI.CWPSTRUCT));

            if (msg.hwnd == panelPtr)
            {
                switch (msg.message)
                {
                case (int)PI.WM.MOVE:
                case (int)PI.WM.SIZE:
                    ChangeUISize();
                    break;
                }

                return(PI.CallNextHookEx(IntPtr.Zero, code, wParam, lParam));
            }

            if (msg.hwnd == dialogHandle)
            {
                switch (msg.message)
                {
                case (int)PI.WM.GETTEXTLENGTH:
                    return((IntPtr)newCapt.Length);

                case (int)PI.WM.SETTEXT:
                    return(IntPtr.Zero);

                case (int)PI.WM.WINDOWPOSCHANGED:
                    PI.WINDOWPOS p = new PI.WINDOWPOS();
                    p = (PI.WINDOWPOS)
                        System.Runtime.InteropServices.Marshal
                        .PtrToStructure(lParam, typeof(PI.WINDOWPOS));

                    break;

                case (int)PI.WM.DESTROY:
                    PI.UnhookWindowsHookEx(dialogHookPtr);
                    dialogHookPtr = IntPtr.Zero;
                    dialogHandle  = IntPtr.Zero;

                    PI.SetParent(devicesTreeViewAdv.Handle, this.Handle);
                    PI.SetParent(toolStrip.Handle, this.Handle);
                    this.Controls.Add(devicesTreeViewAdv);
                    this.Controls.Add(toolStrip);
                    devicesTreeViewAdv.Hide();
                    System.Threading.Thread.Sleep(1);
                    deviceIsShown = false;
                    break;

                case (int)PI.WM.GETTEXT:
                    System.Runtime.InteropServices.Marshal.Copy(
                        newCapt, 0, lParam, newCapt.Length);
                    return((IntPtr)newCapt.Length);
                }
            }

            return(PI.CallNextHookEx(IntPtr.Zero, code, wParam, lParam));
        }
Beispiel #2
0
        private IntPtr DlgWndHookCallbackFunction(int code, IntPtr wParam, IntPtr lParam)
        {
            PI.CWPSTRUCT msg =
                (PI.CWPSTRUCT)System.Runtime.InteropServices.Marshal.PtrToStructure(lParam, typeof(PI.CWPSTRUCT));

            if (msg.hwnd == panelPtr)
            {
                switch (msg.message)
                {
                case (int)PI.WM.MOVE:
                case (int)PI.WM.SIZE:
                    IntPtr dialogPtr = PI.
                                       GetParent(modesTreeViewAdv.Handle);

                    PI.RECT rctDialog;
                    PI.RECT rctPanel;
                    PI.GetWindowRect(dialogPtr, out rctDialog);
                    PI.GetWindowRect(panelPtr, out rctPanel);

                    int w = rctDialog.Right - rctDialog.Left;
                    int h = rctDialog.Bottom - rctDialog.Top;

                    toolStrip.Location        = new Point(0, 0);
                    modesTreeViewAdv.Location =
                        new Point(0, 0 + toolStrip.Height);

                    toolStrip.Width         = w;
                    modesTreeViewAdv.Width  = w;
                    modesTreeViewAdv.Height = h - toolStrip.Height;
                    break;
                }

                return(PI.CallNextHookEx(IntPtr.Zero, code, wParam, lParam));
            }

            if (msg.hwnd == dialogHandle)
            {
                switch (msg.message)
                {
                case (int)PI.WM.GETTEXTLENGTH:
                    return((IntPtr)newCapt.Length);

                case (int)PI.WM.SETTEXT:
                    return(IntPtr.Zero);

                case (int)PI.WM.WINDOWPOSCHANGED:
                    PI.WINDOWPOS p = new PI.WINDOWPOS();
                    p = (PI.WINDOWPOS)
                        System.Runtime.InteropServices.Marshal.PtrToStructure(
                        lParam, typeof(PI.WINDOWPOS));

                    break;

                case (int)PI.WM.DESTROY:
                    PI.UnhookWindowsHookEx(dialogHookPtr);
                    dialogHookPtr = IntPtr.Zero;
                    dialogHandle  = IntPtr.Zero;

                    PI.SetParent(modesTreeViewAdv.Handle, this.Handle);
                    PI.SetParent(toolStrip.Handle, this.Handle);
                    this.Controls.Add(modesTreeViewAdv);
                    this.Controls.Add(toolStrip);
                    modesTreeViewAdv.Hide();
                    System.Threading.Thread.Sleep(1);
                    modeIsShown = false;
                    break;

                case (int)PI.WM.GETTEXT:
                    System.Runtime.InteropServices.Marshal.Copy(
                        newCapt, 0, lParam, newCapt.Length);
                    return((IntPtr)newCapt.Length);
                }
            }

            return(PI.CallNextHookEx(IntPtr.Zero, code, wParam, lParam));
        }