C++ Builder 中的自动锁定 Form2 定位
Automatic Lock Form2 Positioning in C++ Builder
我的应用程序使用两种形式。当我单击主窗体中的面板时,应该会显示 Form2。 Main Form 和 Form2 之间有几个像素的距离。
现在我需要的是当我将主窗体移动到任何地方时,Form2 将移动到主窗体所在的位置。我的意思是我需要 Form2 锁定主窗体。
每当收到 WM_WINDOWPOSCHANGING
或 WM_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;
}
}
}
我的应用程序使用两种形式。当我单击主窗体中的面板时,应该会显示 Form2。 Main Form 和 Form2 之间有几个像素的距离。
现在我需要的是当我将主窗体移动到任何地方时,Form2 将移动到主窗体所在的位置。我的意思是我需要 Form2 锁定主窗体。
每当收到 WM_WINDOWPOSCHANGING
或 WM_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;
}
}
}