zoukankan      html  css  js  c++  java
  • C#无边框窗体移动的三种方法

    1. 重写WndProc

    protected override void WndProc(ref Message m)
    {       
            const int WM_NCHITTEST = 0x84;
            const int HTCLIENT = 0x01;
            const int HTCAPTION = 0x02;
             if (m.Msg == WM_NCHITTEST)
            {
                    this.DefWndProc(ref m);
                    if (m.Result.ToInt32() == HTCLIENT)
                        m.Result = new IntPtr(HTCAPTION);
                    else
                        base.WndProc(ref m);
            }
            else
            {
                    base.WndProc(ref m);
            }
    }
    View Code

    2.创建消息

    private const int WM_NCLBUTTONDOWN = 0x00A1;
    private const int WM_NCHITTEST = 0x84;
    private const int HT_CAPTION = 0x2;
    private const int HT_CLIENT = 0x1;
    
    private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
    {
        //this.Capture = false;
        pictureBox1.Capture = false;
        Message msg = Message.Create(Handle, WM_NCLBUTTONDOWN, (IntPtr)HT_CAPTION, IntPtr.Zero);
        WndProc(ref   msg);   
    } 
    View Code

    3.调用API代码

    using System.Runtime.InteropServices;
    
    [DllImport("user32.dll")]
     public static extern bool ReleaseCapture();
    [DllImport("user32.dll")]
    public static extern bool SendMessage(IntPtr hwnd, int wMsg, int wParam, int lParam);
       public const int WM_SYSCOMMAND = 0x0112;
       public const int SC_MOVE = 0xF010;
    public const int HTCAPTION = 0x0002;
    
    
       //在窗体的_MouseDown中加入如下代码:
    如:
    private void Form1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
    {
    ReleaseCapture();
    SendMessage(this.Handle, WM_SYSCOMMAND, SC_MOVE + HTCAPTION, 0);
    }
    View Code
    慎于行,敏于思!GGGGGG
  • 相关阅读:
    .net web开发经典图书总结
    Asp.net Web API实战
    扩展方法之二分查找
    在线转换图片文件等
    如何减少代码中的分支语句
    web插件化解决方案 开发分享
    .NET 4.5 MEF 基于约定的编程模型重典
    所有排序总结(内排序)
    生成zip文件
    open source ESB and integration platform
  • 原文地址:https://www.cnblogs.com/GarsonZhang/p/6605499.html
Copyright © 2011-2022 走看看