日期:2014-05-17  浏览次数:20948 次

求流畅的C#移动代码,我的来回移动了几次桌面就出了"影子"如何去掉呢?


调用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);
   }

------解决方案--------------------
楼主,你试试重写WndProc方法试试。以下是代码
protected override void WndProc(ref Message m)
        {
            if (m.Msg == 0x0084)
            {
                m.Result = (IntPtr)2;
            }
            else
            {
                base.WndProc(ref m);
            }
        }



如果这种方式还是不行的话,个人认为原因有3
其一:你窗体或者窗体上的控件的代码有问题
其二:你电脑配置有问题
其三:接其二原因,是否因为你电脑配置差,为提高电脑的性能而把一些效果给关闭了?
本人Win7系统,计算机-【右键】属性-【选择 高级 选项卡】高级-【性能】设置