C++ Builder 中的自动锁定 Form2 定位

Automatic Lock Form2 Positioning in C++ Builder

我的应用程序使用两种形式。当我单击主窗体中的面板时,应该会显示 Form2。 Main Form 和 Form2 之间有几个像素的距离。

现在我需要的是当我将主窗体移动到任何地方时,Form2 将移动到主窗体所在的位置。我的意思是我需要 Form2 锁定主窗体。

每当收到 WM_WINDOWPOSCHANGINGWM_WINDOWPOSCHANGED 消息时,让 MainForm 覆盖虚拟 WndProc() 方法以根据需要相对于 MainForm 当前位置重新定位 Form2。

class TMainForm : public TForm
{
...
protected:
   void __fastcall WndProc(TMessage &Message);
...
};

...
#include "Form2.h"

...

void __fastcall TMainForm::WndProc(TMessage &Message)
{
    TForm::WndProc(Message);
    switch (Message.Msg)
    {
        case WM_WINDOWPOSCHANGING:
        case WM_WINDOWPOSCHANGED:
        {
            if ((Form2) && (Form2->Visible))
            {
                Form2->Left = ...; // such as this->Left
                Form2->Top = ...; // such as this->Top + this->Height
            }
            break;
        }
    }
}