2017-10-22 9 views
0

私はアプリケーションを開発していて、Formオブジェクトには正確な座標を指定することができないかのように見えます。RAD Studio 10 C++でWindow(x、y)の位置を設定することはできますか?

タイトルバーとして機能する上部のラベルがあります。ユーザーがクリックしてドラッグしたときにウィンドウをマウスで移動させるために、マウス座標とウィンドウ座標の組み合わせを使用できます。しかし、C++(サイドRADスタジオに沿って)では、これを取り除くためにリファレンスとして使用できるオンラインのものはないようです。

私が試したのWindows APIはと:

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

ウィンドウの位置のようなものがあるのですが、それは唯一の "poScreenCenter" のように整数またはVARSを受け入れます。

これがどのように可能かについての洞察はすばらしいことです。

+0

さて、私は何とかそれを実装することができるかどうか見てみましょう –

+0

さて、それは動作するようです!あなたが答えとして残しておけば、私はそれが正しいとマークします –

答えて

1

TForm(及び一般にすべてのUIコントロール)LeftTop(及びWidthHeight)特性を有します。

ラベルのOnMouse(Down|Up)イベントを使用してboolを設定/設定解除し、ラベルのOnMouseMoveイベントでboolが設定されている場合はフォームの位置を変更できます。

OnMouseDownイベントをフォームのHWNDに文書化されていないWM_COMMAND(SC_DRAGMOVE)メッセージを送信し、OSが残りの部分を処理するようにするのがより簡単で効率的なソリューションです。 Moving a caption-less window by using a "drag area"(Delphi用に書かれていますが、同じVCLフレームワークを使用するためC++ Builderにも当てはまります)を参照してください。

+0

私はすでに自分のバージョンに入れて、完璧に動作します。 HQの答えをありがとう –

関連する問題