代码之家  ›  专栏  ›  技术社区  ›  Piero Bird

是否可以在RAD Studio 10 c++中设置窗口(x,y)位置?

  •  0
  • Piero Bird  · 技术社区  · 7 年前

    我正在开发一个应用程序,它看起来好像我的表单对象没有任何东西可以让我指定它的精确坐标。

    我在顶部有一个标签作为标题栏,在c语言中,我可以使用鼠标坐标和窗口坐标的组合,在用户单击和拖动时使窗口随鼠标移动。然而,在c++(以及RAD studio)中,似乎没有任何在线内容可以作为实现这一目标的参考。

    我尝试了windows api:

    SetWindowPos(this->GetOwnerWindow(), HWND_TOPMOST, 5,5,5,5, SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW);
    

    有一些东西像窗口位置,但它只接受整数或变量,如“poScreenCenter”。

    任何关于如何实现这一点的见解都将是非常棒的。

    1 回复  |  直到 7 年前
        1
  •  2
  •   Remy Lebeau    7 年前

    TForm (通常所有UI控件)都具有 Left Top (和 Width Height )属性。

    您可以使用标签的 OnMouse(Down|Up) 事件来设置/取消设置布尔值,然后具有标签的 OnMouseMove 如果设置了bool,则事件重新定位表单。

    一个更简单、更有效的解决方案是 OnMouseDown 事件发送未记录的 WM_COMMAND(SC_DRAGMOVE) 将消息发送到表单的HWND,并让操作系统为您处理其余部分。看见 Moving a caption-less window by using a "drag area"