我的对话框有一组按钮,我想在程序运行时通过拖拽实现按钮位置的改变,如何处理?(如果只是按下按钮,需要执行对应的操作)

解决方案 »

  1.   

    捕捉鼠标的移动消息,判断它是否在按钮的范围内,用SetWindowPos()函数来重新设置位置
      

  2.   

    避免干扰正常的按钮单击消息,可以:在按钮类的OnMouseMove中,判断时候鼠标左键按下了。
    SHORT GetAsyncKeyState(
      int vKey   // virtual-key code
    );
     
    参数为VK_LBUTTON。或者判断OnMouseMove函数的参数nFlag是否为MK_LBUTTON。
      

  3.   

    重载按钮类CMyButton : public CButton
    在CMyButton中响应鼠标左键按下消息,记录下按下标志
    在CMyButton中响应鼠标移动消息,如果按下标志为true则表示用户移动按钮
    然后发消息给父窗口,父窗口处理消息(也可以啥都不做,或者改变鼠标指针形状),
    在鼠标弹起后,父窗口就调用m_myButton.MoveWindow(&rect);来移动按钮
    我没有实际的试,不知道实际行不行。楼主试试看吧
      

  4.   

    to  flyelf(空谷清音) ,移动按钮用MoveWindow.在OnMouseMove中判断是否左键按下,如果按下,则用MoveWindow移动按钮。或者给按钮发送一个WM_NCHITTEXT消息,参数为HTCAPTION.具体察看msdn.