Newsgroup: it.comp.lang.visual-basic
Titolo: [?] MessageBox non bloccanti - (Richiesta nuove info al post di Maurizio del 19/06/2000)

Sapete dirmi come fare?
Io pensavo al caso in cui voglio far apparire una finestra con un messaggio
di Attesa (senza alcun pulsante) mentre sto preparando la visualizzazione di
dati su di un form, e toglierla dalla visualizzazione non appena sono pronto
a mostrare il form con i miei dati.
Sono state proposte due soluzioni al post:
A) suggerita da Franco - creare una piccola form
Io avevo già fatto una cosa simile, e mi ero preparato una form senza bordi
ne pulsanti in cui faccio apparire il mio bel messaggio di attesa al momento
in cui mi serve. Questo funziona bene fino a quando il form che richiede di
visualizzare il form di attesa non è stato aperto in VBModal, altrimenti non
mi è concesso di visualizzarlo (impossibile visualizzare un form non modale
da un form modale). Non sarebbe poi di nessuna utilità rendere modale il mio
form di attesa, perchè così non potrei fare proseguire le operazioni in
background mentre è visualizzato a schermo.
B) suggerita da Faber - usare l'API MessageBox usando hWnd = 0
E qui io non ho proprio capito come fare.....
Mi sono preso la dichiarazione dell'API e relativi valori per le costanti ed
ho guardato i parametri da passare e consultato MSDN (probabilmente non
abbastanza) però non trovo proprio il modo per evitare che ci siano pulsanti
sulla form del messaggio, e se non li levo dalla form questa rimane in
attesa di un click e pertanto le operazioni in background non proseguono.
So di essere stato lungo, ma non c'è proprio modo per mandare a schermo un
messaggio indipendentemente se il form sotto è aperto in VBmodal o no e far
proseguire le operazioni ?
Se qualcuno l'ha fatto può darmi almeno una traccia ?
Grazie anticipatamente

 a mostrare il form con i miei dati.
potresti fare così:
creati un form, con le seguenti proprietà:
BorderStyle = 3 (Fixed Dialog)
ControlBox = False
Caption = "" (stringa vuota)
StartUpPosition = 1 (CenterOwner)
ShowInTaskBar = False (lo dovrebbe mettere già lui)
Una bella Label con "Attendere Prego", magari una Gif animata, una Slot
Machine ehmmmm sto divagando... :)
poi, nel form principale, fai:
'Prima dell'elaborazione
Form2.Show ,Me    'Solo se hai VB5 o VB6
'DoEvents se Form2 appare 'senza il contenuto',
'oppure (meglio) Form2.Refresh
'Inizio Elaborazione
...
...
...
'Fine Elaborazione
Unload Form2
ta-daaaaaa
Ciao
Faber
P.S.: se vuoi essere sicuro che l'utente non faccia nulla durante
l'elaborazione, puoi mettere
Me.Enabled = False
prima di Form2.Show ,Me
e rimetterlo a True prima (o dopo) Unload Form2
(questo sempre che non ci siano Exit Sub o simili e che il programma non si
blocchi   :))

Grazie Faber,
quello che mi hai detto di fare è proprio quello che avevo sviluppato per
risolvere il mio problema del form con il messaggio di attesa (con incluso
pure il discorso enabled per evitare che l'utente si metta a trafficare
mentre attende), però il problema mio permane...
Se ho un Form aperto con l'opzione vbModal e per qualche motivo voglio
visualizzare un Form con il messaggio di "Attendere prego.." non posso farlo
se non apro pure il Form con il messaggio con l'opzione vbModal, ma facendo
così le operazioni in background non proseguono percui perde di utilità.
L'unico modo che ho trovato per risolvere il problema è quello di modificare
il MousePointer in vbHourglass prima di iniziare le operazioni e poi
rimetterlo a vbDefault appena finito, però avrei preferito una bella
finestra con il messaggio.
Ad ogni modo grazie ancora per l'aiuto e la disponibilità

 così le operazioni in background non proseguono percui perde di utilità.
aaaaah, ora ho capito il problema!  :)
potresti fare così:
un bel frame invisibile (e senza caption) messo in mezzo alla form (sopra
tutti gli altri controlli), con una label "Attendere Prego..." o simili;
quando inizi l'elaborazione lo rendi visibile, quando hai finito lo riporti
invisibile
è l'unica cosa che mi viene in mente...
Ciao  :)
Faber


E se provassi con una bella Picture in primo piano piantata al centro del
Form?

Ringrazio entrambi per il suggerimento, non avevo minimamente pensato a
quella soluzione.
A buon rendere.