【问题标题】:Is it possible to set the Window (x, y) Position in RAD Studio 10 c++?是否可以在 RAD Studio 10 c++ 中设置窗口(x,y)位置?
【发布时间】:2018-04-02 19:41:43
【问题描述】:

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

我在顶部有一个标签作为标题栏,在 c# 中,我可以使用鼠标坐标和窗口坐标的组合来使窗口在用户单击和拖动时随鼠标移动。但是,在 C++(与 RAD 工作室一起)中,似乎没有任何在线我可以用作参考来实现这一点。

我已经尝试过以下方式的 windows api:

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

有诸如窗口位置之类的东西,但它只接受整数或像“poScreenCenter”这样的变量。

任何关于这如何可能的见解都会很棒。

【问题讨论】:

  • 好的,我会看看我是否能以某种方式实现它
  • 好吧,这似乎行得通!如果您留下您的答案,我会将其标记为正确

标签: c++ winapi c++builder


【解决方案1】:

TForm(以及所有一般的 UI 控件)具有 LeftTop(以及 WidthHeight)属性。

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

一个更简单、更有效的解决方案是让OnMouseDown 事件向表单的HWND 发送一个未记录的WM_COMMAND(SC_DRAGMOVE) 消息,让操作系统为您处理其余的事情。请参阅Moving a caption-less window by using a "drag area"(为 Delphi 编写,但它也适用于 C++Builder,因为它们使用相同的 VCL 框架)。

【讨论】:

  • 我已经安装了自己的版本,效果很好。感谢总部的回答
猜你喜欢
  • 2021-11-20
  • 2011-02-17
  • 2018-09-11
  • 1970-01-01
  • 2011-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多