当用户拖动面板或标签或我想要的任何项目时,我希望移动整个表单。我如何在 VisualC++ 中做到这一点?我知道在 VB 中这样做,但我正在使用 VisualC++。有什么帮助吗?
问问题
127 次
2 回答
0
我不知道是否有其他选择,但您可以为 WM_MOUSEDOWN 创建自己的处理程序(不记得确切)。然后你要做的就是计算出点击位置和控制器之间的差异。
此外,为了让它移动,您需要处理 WM_MOUSEMOVE 或其他东西,以使用指针移动表单。
您可以通过简单地使用布尔值来告诉 mousemove 它是否应该对鼠标移动做出反应来做到这一点。
于 2012-11-03T22:39:17.150 回答
0
- 选择主窗体
- 从属性窗口选择事件并添加MouseMove事件
编码:
public int X_cood; bool Mouse_Cord_Stored = false; int MainForm_Mouse_X_Coordinates; int MainForm_Mouse_Y_Coordinates; Point p = new Point(ActiveForm.Location.X, ActiveForm.Location.Y); private void MainForm_MouseMove(object sender, MouseEventArgs e) { switch (e.Button) { case (MouseButtons.Left)://To Let user move the Form1 when Left mouse button is pressed { switch (Mouse_Cord_Stored) { case false: { //If Mouse Coordinates are not stored, then store them. MainForm_Mouse_X_Coordinates = e.X; MainForm_Mouse_Y_Coordinates= e.Y; Mouse_Cord_Stored = true; break; } case true: { //Move the Form using ActiveForm.Location if mouse coordinates are stored Form1.ActiveForm.Location = new Point(Form1.ActiveForm.Location.X + e.X - MainForm_Mouse_X_Coordinates , Form1.ActiveForm.Location.Y + e.Y - MainForm_Mouse_Y_Coordinates); break; } } break; } default: { switch (Mouse_Cord_Stored) { case true: { Mouse_Cord_Stored = false; break; } } break; } }
于 2014-07-16T09:06:33.717 回答