【问题标题】:fire event after mouse moves form - FMX C++鼠标移动表单后触发事件 - FMX C++
【发布时间】:2019-05-09 19:10:57
【问题描述】:

我想在我的表单通过传统的“鼠标左键在标题栏上向下拖动到新位置”在屏幕上移动后运行一段代码。 OnMouseUp 仅适用于表单本身,不适用于鼠标单击标题栏。

这是 C++ 和 Win32 应用程序。

谢谢, 罗斯

更新 1:显示我根据 Remy 的回答实现的代码。我从其他帖子中实现了他的代码,然后将另一个项目添加到 switch(uMsg) 以捕获 WM_MOVE 消息。这不起作用。

case WM_MOVE:
{
ShowMessage("Moved");
}

更新 2:我根据 Remy 的评论将上述内容从 WM_MOVE 更改为 WM_EXITSIZEMOVE,现在效果很好。当我完成移动表单时触发 1 次。

case WM_EXITSIZEMOVE:
{
ShowMessage("Moved");
}

正是我想要的。

【问题讨论】:

    标签: firemonkey c++builder


    【解决方案1】:

    FireMonkey 本身并不支持您的要求。您必须手动子类化表单的 HWND(请参阅 this answer)以拦截 WM_MOVINGWM_MOVEWM_ENTERSIZEMOVEWM_EXITSIZEMOVE 等消息。

    【讨论】:

    • 我使用了reference you gave,并为WM_MOVE 添加了代码。当我启动应用程序时,它只会触发 1 次。当我移动表格时,它再也不会触发了。请参阅上面的“更新 1”代码。
    • @relayman357 WM_MOVING、WM_ENTERSIZEMOVE 和 WM_EXITSIZEMOVE 怎么样?
    • 太棒了,WM_EXITSIZEMOVE 是可以使用的。在我通过标题栏拖动表单(鼠标左键向上)后,它会起作用并触发。这正是我想要的。谢谢楼主!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-17
    • 2020-03-10
    • 2014-06-19
    • 2012-02-04
    • 2019-05-20
    相关资源
    最近更新 更多