wpf改变默认的窗口边框大小,去掉边框,并且可以拖动大小

..
       protected override void OnSourceInitialized(EventArgs e)
        {
            base.OnSourceInitialized(e);
            //WindowResizer r = new WindowResizer(this);
            //r.addResizerLeft(left);
            //r.addResizerLeftDown(leftdown);
            //r.addResizerRightDown(rightdown);
            //r.addResizerRight(right);
            //r.addResizerUp(up);
            //r.addResizerDown(down);
            HwndSource hs = HwndSource.FromHwnd(new WindowInteropHelper(this).Handle); 
            hs.AddHook( new HwndSourceHook(HookWnd));
        }
        struct NCCALCSIZE_PARAMS
        {
            public _RECT rcNewWindow;
            public _RECT rcOldWindow;
            public _RECT rcClient;
            IntPtr lppos;
        }

        struct _RECT
        {
            public int left;
            public int top;
            public int right;
            public int bottom;
        }
        private void AdjustClientRect(ref _RECT rcClient)
        {
            rcClient.left -= SystemInformation.FrameBorderSize.Width;
            rcClient.right += SystemInformation.FrameBorderSize.Width;
            rcClient.bottom += SystemInformation.FrameBorderSize.Width;
            rcClient.top -= SystemInformation.FrameBorderSize.Width + SystemInformation.CaptionHeight;
        }  
        IntPtr HookWnd(IntPtr hwnd,int msg, IntPtr w, IntPtr l , ref bool handle)
        {
            switch(msg)
            {
                case 0x83:
                    {
                        NCCALCSIZE_PARAMS p = (NCCALCSIZE_PARAMS)Marshal.PtrToStructure(l, typeof(NCCALCSIZE_PARAMS));
                        AdjustClientRect(ref p.rcClient);
                        Marshal.StructureToPtr(p, l, false);
                        handle = true;
                    }
                    break;
                case WindowsMessage.WM_NCACTIVATE:
                    handle = true;
                    break;
            }
            return IntPtr.Zero;
        }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值