none
C# 拖动无边框窗体 RRS feed

  • 问题

  • 在win7平台下,使用C#2008开发的无边框窗体需要实现鼠标拖动。请问我该怎么样实现呢?我想使用API实现。这样简洁方便。但是使用网上找到的那种方式的API在xp系统下是正确的,但是我在win7下把这个同样的代码应用到视频播放器的播放窗口上则不正确。虽然鼠标放到上面能够拖动,但是出现一个奇怪的现象。当我鼠标放到播放窗口上面按下鼠标的时候,窗体会跑到一边去。不再鼠标的下面。这个时候我按住移动,窗体也会移动,但是我该怎么样设置才能够让我按住鼠标的时候原来的窗体不跑到一边去。同样的代码则xp下则完全没有问题。谢谢。视频播放器使用的是directx方式制作的。
    2011年6月29日 10:09

答案

  •         protected override void WndProc(ref Message m)
            {
               
    if (m.Msg == 163 && this.ClientRectangle.Contains(this.PointToClient(new Point(m.LParam.ToInt32()))) && m.WParam.ToInt32() == 2)
                    m.WParam
    = (IntPtr)1;
               
    base.WndProc(ref m);
               
    if (m.Msg == 132 && m.Result.ToInt32() == 1)
                    m.Result
    = (IntPtr)2;
            }


    请测试这些代码
    • 已建议为答案 Aspen VJ 2011年7月4日 7:14
    • 已标记为答案 pucx 2011年7月5日 15:58
    2011年6月30日 14:17
  • 您好

    建議您可以透過 MouseDown, MouseMove, MouseUp 事件去處理,參考

    [程式] 無框視窗拖曳效果 (C#)

    http://guessi.pixnet.net/blog/post/26223120

     


    歡迎參觀我的Blog.NET菜鳥自救會
    • 已标记为答案 pucx 2011年7月5日 15:58
    2011年7月4日 8:07

全部回复