L'idea del SetFocus non è male, basta solo affinare il tutto.
Da quello che ho capito ci sono questi form:
Form1: il form principale che gestisce tutto
Form2: il prototipo di form per chattare
Form3: il prototipo di form di avviso
In un modulo scrivo la seguente dichiarazione:
codice:
Public lastform As Form
In questa variabile imposterò il riferimento all'ultimo form utilizzato.
In Form1 da qualche parte ci sarà un blocco di codice che apre le nuove finestre di chat:
codice:
Dim f As New Form2
f.Show
e un blocco di codice che apre le finestre di avviso:
codice:
Dim f As New Form3
f.Show
If (Not lastform Is Nothing) Then lastform.SetFocus
L'ultima riga ridà il focus all'ultima finestra di tipo Form1 o Form2 utilizzata.
Inoltre, sempre in Form1:
codice:
Private Sub Form_Activate()
Set lastform = Me
End Sub
In Form2 occorre aggiungere questo codice:
codice:
Private Sub Form_Activate()
Set lastform = Me
End Sub
Private Sub Form_Unload(Cancel As Integer)
Set lastform = Nothing
End Sub