您可以将WM_SETREDRAW
消息发送到 MainForm 的 ClientHandle,其中一个 wParam 设置为 False,然后稍后将 wParam 设置为 True,以避免在设置 MDI 子窗口时闪烁,例如:
德尔福:
SendMessage(Application.MainForm.ClientHandle, WM_SETREDRAW, False, 0);
try
Child := TChildForm.Create(Self);
Child.Left := ...;
Child.Top := ...;
Child.Show;
finally
SendMessage(Application.MainForm.ClientHandle, WM_SETREDRAW, True, 0);
InvalidateRect(Application.MainForm.ClientHandle, nil, True);
end;
C++:
SendMessage(Application->MainForm->ClientHandle, WM_SETREDRAW, FALSE, 0);
try
{
Child = new TChildForm(this);
Child->Left = ...;
Child->Top = ...;
Child->Show();
}
__finally
{
SendMessage(Application->MainForm->ClientHandle, WM_SETREDRAW, TRUE, 0);
InvalidateRect(Application->MainForm->ClientHandle, NULL, TRUE);
}