可移动按钮的实现

预期的效果是鼠标左键按下,选中鼠标开始移动按钮。

主要思路:

可移动按钮的实现_第1张图片

如图:在Mouse Positon1时左键按下选中按钮,OnMouseDown函数里计算出鼠标点击位置和按钮左下角的偏移量,  OnMouseMotion函数,鼠标开始拖着按钮移动,二者保持相对静止,每次根据鼠标位置和偏移量计算出按钮新的位置。

 使用glut中鼠标响应函数,此时:

// 鼠标主要移动 就会调用OnMouseMove函数 void OnMouseMove(int x, int y) { if( m_bIsDragging ) { // m_vStartPos为移动过程中的鼠标位置相对于按钮左下角的偏移量,里面的数值为负... m_ix = m_vOffset.x + x; m_iy = m_vOffset.y + y; } } bool OnMouseDown(int x, int y) { if ( CButton::OnMouseDown(x, y) ) { m_bIsDragging = true; // 记录下鼠标的起始位置 m_vOffset.x = m_ix - x; m_vOffset.y = m_iy - y; return true; } return false; }

 其中的m_ix, m_iy为按钮的位置

 

你可能感兴趣的:(可移动按钮的实现)