Это проблема борладовского VCL. На Delphi тоже самое (что не странно, ведь VCL используется тот же).
Модальное окно прячется в момент сворачивания/разворачивания окна. Мне в своё время помог следующий рецепт: для модального окна добавить такой код (код на Delphi, думаю перевести сможете):
type
TfrmModal = class(TForm)
private
procedure WMSYSCOMMAND(var Msg: TWMSYSCOMMAND); message WM_SYSCOMMAND;
end;
...
procedure TfrmModal.WMSYSCOMMAND(var Msg: TWMSYSCOMMAND);
begin
case (Msg.CmdType and $FFF0) of
SC_MINIMIZE:
begin
Msg.Result := 0;
EnableWindow(Application.Handle, True);
Application.Minimize;
end;
else inherited;
end;
end;
Эту процедуру можно добавить в каждое модальное окно, а можно создать класс с этим методом, от которого наследовать все модальные окна (вместо TForm).
----
UPD: Попробую перевести на C++, но проверить не могу:
header:
private: // of TForm1 class
void __fastcall WMSysCommand(TMessage &Msg);
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(WM_SYSCOMMAND, TMessage, WMSysCommand)
END_MESSAGE_MAP(TForm)
cpp:
void __fastcall TForm1::WMSysCommand(TMessage &Msg)
{
unsigned int const sys_code = Msg.WParam & 0xFFF0;
switch (sys_code)
{
case SC_MINIMIZE:
{
Msg.Result = 0;
EnableWindow(Application.Handle, True);
Application.Minimize();
return;
}
}
TForm::Dispatch(&Msg);
}