• Winform下去除MDI窗体边框


    做项目中间遇到了MDI窗体内边框的问题,经过苦苦寻找,最终得到了解决方案

    在Main窗体中调用API

      // Win32 Constants    
            private const int GWL_STYLE = -16;
            private const int GWL_EXSTYLE = -20;
            private const int WS_BORDER = 0x00800000;
            private const int WS_EX_CLIENTEDGE = 0x00000200;
            private const uint SWP_NOSIZE = 0x0001;
            private const uint SWP_NOMOVE = 0x0002;
            private const uint SWP_NOZORDER = 0x0004;
            private const uint SWP_NOACTIVATE = 0x0010;
            private const uint SWP_FRAMECHANGED = 0x0020;
            private const uint SWP_NOOWNERZORDER = 0x0200;
    
    
            // Win32 方法    
            [DllImport("user32.dll", CharSet = CharSet.Auto)]
            private static extern int GetWindowLong(IntPtr hWnd, int Index);
    
            [DllImport("user32.dll", CharSet = CharSet.Auto)]
            private static extern int SetWindowLong(IntPtr hWnd, int Index, int Value);
    
            [DllImport("user32.dll", ExactSpelling = true)]
            private static extern int SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter,
                int X, int Y, int cx, int cy, uint uFlags);


    获取到API后在Form_Load事件中加入如下代码
      //获取mdi客户区    
                for (int i = 0; i < this.Controls.Count; i++)
                {
                    var mdiClientForm = this.Controls[i] as MdiClient;
                    if (mdiClientForm == null) continue;
                    // 找到了mdi客户区    
                    // 取得客户区的边框    
                    int style = GetWindowLong(mdiClientForm.Handle, GWL_STYLE);
                    int exStyle = GetWindowLong(mdiClientForm.Handle, GWL_EXSTYLE);
                    style &= ~WS_BORDER;
                    exStyle &= ~WS_EX_CLIENTEDGE;
    
                    // 调用win32设定样式    
                    SetWindowLong(mdiClientForm.Handle, GWL_STYLE, style);
                    SetWindowLong(mdiClientForm.Handle, GWL_EXSTYLE, exStyle);
    
                    // 更新客户区    
                    SetWindowPos(mdiClientForm.Handle, IntPtr.Zero, 0, 0, 0, 0,
                        SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER |
                        SWP_NOOWNERZORDER | SWP_FRAMECHANGED);
                    UpdateStyles();
                    break;
                }

    重新运行程序,OK  

  • 相关阅读:
    Js五子棋游戏
    换肤
    jqzoom实战
    iphone开发笔记
    腾讯召实习生笔试题
    ajax( 汇率转化)
    20140805&nbsp;17:24
    加载上一级目录下的图片文件并得到加载图片的大小
    精确碰撞检测 bitmapData.hitTest
    buttonMode 与mouseChildren【替换鼠标之后不响应鼠标事件】
  • 原文地址:https://www.cnblogs.com/bryantzx/p/7845300.html
Copyright © 2020-2023  润新知