我在FormView上添加了一个控件,如何使该控件能够用鼠标自由拖动?

解决方案 »

  1.   

    WM_NCHITTEST
    return HT_CAPTION;
      

  2.   

    获取鼠标移动的时候的位置,然后用MoveWindow实时改变控件位置。
      

  3.   

    建议使用CRectTracker,不仅可以随意拖动,还可以改变大小之类的操作。msdn里头有帮助
      

  4.   

    WM_NCHITTEST
    return HT_CAPTION;
    是调用了那个函数?
      

  5.   

    一楼的意思是向控件发WM_NCHITTEST
      

  6.   

    在控件的onmousedown里写:
    ReleaseCapture();
    SendMessage(Handle, WM_NCLBUTTONDOWN, HTCAPTION, 0);
      

  7.   

    flyelf(空谷清音) 的方法原理和上边写的是一样的,
    就是截获消息处理结果为WM_NCHITTEST的,并把结果改为HT_CAPTION,
    其实就是把鼠标的操作拦截下来,并向改控件发送一个点在了标题栏的消息,
    那控件就会以为鼠标点在了自己的标题栏上(不管它有没有标题栏,或者说标题栏有没有显示出来),
    那么就可以拖着移动了。
      

  8.   

    这种写法通不过编译
    SendMessage(Handle, WM_NCLBUTTONDOWN, HTCAPTION, 0);
    SendMessage的参数应该是3个吧。
    其中的几个参数的意义能解释一下么?
      

  9.   

    怎么会是3个参数呢,我说的是api的sendmessage,不是dlg类里的sendmessage。
    第一个参数是要发送给的窗体的句柄,
    第二个参数是消息类型,
    后边2个参数,根据不同的消息类型,需要不同的参数。