penso che l'unica soluzione sia quella di riuscire a far visualizzare subito la form principale a tutto schermo prima che venga mostrata la MessageBox.
Sono certo che Gianluigi darebbe la soluzione migliore al tuo problema, ma nel frattanto provo io.
Sì... è opportuno far visualizzare subito la finestra principale del programma lanciato con "Shell", perché questo programma potrebbe così imporre la sua finestra come quella che deve restare sempre "attiva" sulla Scrivania.
A tal proposito il programma, lanciato con "Shell", potrebbe contenere nel suo codice un Oggetto "Timer", che ogni tot tempo - sollevando l'Evento "_Timer()" - impone che la finestra "attiva" sulla Scrivania sia ancora quella principale del programma.
Per far funzionare tale soluzione è necessario attivare nel programma, che sarà lanciato da "Shell", anche il Componente "gb.desktop".
Mostro un semplice esempio:
Private tempus As Timer
Public Sub Form_Activate()
With tempus = New Timer As "Tempus"
.Delay = 250
.Start
End With
End
Public Sub Tempus_Timer()
Desktop.ActiveWindow = Me.Id
End
L'unica cosa che posso aggiungere è quella di dare un'occhiata alla proprietà Stacking delle form.
...ed è stato utilissimo. :ok:
L'unico problema che ho rilevato è che la finestra principale, pur restando ad di sopra di ogni altra, perde il focus se viene aperta la finestra di un altro qualsiasi programma.
Quindi il mio codice, sostituito con il suggerimento migliore di Gianluigi, va integrato così:
Public Sub Form_Activate()
Me.Stacking = Window.Above
End
Public Sub Form_LostFocus()
Desktop.ActiveWindow = Me.Id
End
Segnalo anche:
https://gambas-es.org/showthread.php?tid=66