如题,如果用SC_MOVE,鼠标拖动时,无法获取鼠标坐标,我本人想控制按钮在一个区域内移动,不能超出这个区域,请问怎么解决?

解决方案 »

  1.   

    sc_move是什么东东啊?本人孤陋寡闻了。“想控制按钮在一个区域内移动,不能超出这个区域”
    你是说拖动限制么?可以考虑win32 api:ClipCursor
      

  2.   

    我在dialog上画了一个背景图,然后创建两个按钮,我拖动一个按钮从另一个按钮上方划过的时候,发现控件一部分被没有了,但又马上重绘出来了.用的是MoveWindow()方法.
    但用SendMessage( WM_SYSCOMMAND,SC_MOVE+1,0)方法确不会出现那种情况.后来我就把背景去掉,拖动也没问题.是背景刷新问题?帮忙解决.
      

  3.   

    哈哈,SC_MOVE原来是个System Command,根据你说的“拖动一个按钮从另一个按钮上方划过的时候,发现控件一部分被没有了”,很少有拖动控件的操作,控件创建的时候就很少会让它们有重叠的,从设计的角度来说,但楼主有这个需求,就得帮控件加上一个属性“WS_CLIPSIBLING”,对子窗口而言,这个属性是默认没有的,有了这个属性就不会出现“控件一部分没有了”这种情况了,至于SendMessage( WM_SYSCOMMAND,SC_MOVE+1,0),我是没怎么看明白,真不好意思,一般来说System Command是系统发的,你这样手动发,是发往哪个窗口?
      

  4.   

    不好意思,忘了加button指针.还有一点你没注意,是先画了张背景图,然后再在上面创建两个button,这是拖动就会出现按钮消失一块然后又重绘出来.还有测试了,在创建按钮时加上WS_CLIPSIBLING,提示未定义的标识.
      

  5.   

    晕,打少了个S,应该是“WS_CLIPSIBLINGS”
    如果你不想让背景图遮挡住其子窗口(button)的话,给父窗口属性加上“WS_CLIPCHILDREN”属性