Newsgroup: it.comp.lang.visual-basic
Titolo: Splash form malefico

Ciao ciao.
Forse è una domanda un pò banale:
Ho finito di creare l'applicazione (il solito MDI con tutti i suoi children
etc..). Mi sono messo a fare lo splash screen all'inizio, e ho incontrato
qualche problema (premetto che come programmatore faccio pietà).
Vorrei che questa piccola finestrella rimanesse in primo piano (devo usare
quell'api famosa setwindo... vero?), mentre, sotto, si carica e compare
l'MDI, si creano i menu (li ho fatti da codice), si connette al database,
disegna lo sfondo, e tutte queste menate.
Ora, forse non ho capito dove mettere ed usare quell'api, ma le cose,
facendo come faccio io, non funzionano bene... io seguo questo ordine:
splash (come form avvio)
splash.show e splash.refresh
poi uso quell'api
gli dico di caricare il form mdi e di farsi tutte le menate
unload dello splash
Il problema è che appena gli dico di caricare l'mdi, lo splash sparisce,
balordo! Sbaglio con l'api, o devo rivedere l'ordine delle cose? Forse devo
mettere il doevents (che casino)?
Grazie per la comprensione e la pietà, più che per l'aiuto :)
--
Starla. SP.
Sito Brutto: 
http://digilander.iol.it/starlasp
Sito Comune: 
http://www.it-lang-vb.net
star...@libero.itspam

 wrote in message
d0U_7.374$aD.1...@twister2.libero.it...


 Lokar
Ma dove dovrei metterlo? Se lo faccio sullo splash, il programma rimane
fermo al primo punto... e no carica niente in background...



Io uso una sub main, mostro lo splash, carico il form MDI, faccio tutto
quello che devo fare e poi scarico lo splash e solo alla fine mostro il
form MDI.
A me personalmente piace anche di piu' e non devo impazzire.
-- 
Ciao
Alessandro

A me personalmente piace anche di piu' e non devo impazzire.
Si si, avevo anche io fatto cosě (prendendo spunto da un post di qualche
giorno fa). Cosě funziona effettivamente, ma a me sarebbe piaciuto che
l'utente vedesse il piccolo splash sempre in primo piano, mentre sotto di
lui (dello spalsh, mica dell'utente) si creava l'mdi, e tutte le cose. Poi
sullo splash, avrei messo una label che cambiava, del tipo: "Sto caricando
la dll", "sto connettendo al db", e menate simili... non si puň fare?
Tipo lo splash dell'adode photoshop, per intenderci...
grazie comuqnue!


 Tipo lo splash dell'adode photoshop, per intenderci...
Ce l'ho presente... :)
Mi spiace ma non ho altre idee per il momento. :(
--
Ciao
Alessandro


Ok, grazie lo stesso, tanto č solo uno splash in effetti :)


 wrote in message
xNU_7.455$aD.1...@twister2.libero.it...
| >
| > Mi spiace ma non ho altre idee per il momento. :(
| >
|
| Ok, grazie lo stesso, tanto è solo uno splash in effetti :)
|
| --
| Starla. SP.
Nulla e' SOLO quello che e'.. Mai darsi per vinti  =)
Prova cosi'... A me funziona. =)
1 Modulo (modMain.bas)
1 Form MDI (MDIForm.frm)
1 Form Splash (frmSplash.frm)
******** BEGIN modMain.bas ********
Option Explicit
Const HWND_TOPMOST = -1
Const HWND_NOTOPMOST = -2
Const SWP_NOSIZE = &H1
Const SWP_NOMOVE = &H2
Const SWP_NOACTIVATE = &H10
Const SWP_SHOWWINDOW = &H40
Private Declare Sub SetWindowPos Lib "User32" (ByVal hWnd As Long, ByVal
hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long,
ByVal cy As Long, ByVal wFlags As Long)
Sub Main()
   frmSplash.Show
   SetWindowPos frmSplash.hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE Or
SWP_SHOWWINDOW Or SWP_NOMOVE Or SWP_NOSIZE
   MDIForm.Show
End Sub
******** END modMain.bas ********

 disegna lo sfondo, e tutte queste menate.
MDI_Load
    Load frmSplash
    SetWindowPos(frmSplash.hWnd, HWND_TOPMOST...)
    frmSplash.Show
    frmSplash.Refresh
    ...
    Unload frmSplash
End Sub
Ciao

Un metodo alternativo per fare lo splash screen è prendere il monitor è
buttarlo in una vasca piena d'acqua. L'effetto splash è assicurato, e
d'estate rinfreschi anche il video (da cui il famoso refresh). Se poi è una
bella giornata di sole e l'acqua è limpida noterai anche un certo zoom. :)
Fabio

    MDIForm.Show
L'unica cosa da aggiungere è che bisogna stare attenti che non capitino
errori prima che venga  scaricata la  form di Splash screen, altrimenti il
MsgBox di errore resta sotto alla form di Splash e sembra che l'applicazione
si sia bloccata.
Devi ricordarti di trappare gli errori, e di controllare se è visibile la
form di Splash. In questo caso prima la scarichi e poi mostri l'errore a
video.
La cosa è particolarmente scocciante anche quando si cerca di fare eseguire
passo a passo il programma in fase di debug. Quella maledetta finestra di
Splash screen ti sta sempre in mezzo alo schermo. ;-)
Ciao
*Roby*

 ha scritto nel messaggio
news:Qh0%7.2292$aD.7...@twister2.libero.it...

...non c'era l'api "ThrowMonitorInWater", nell'user32.dll?


Mega grazie a tutti quelli che mi hanno aiutato!
(..ora l'applicazione sembra quasi un programma vero, almeno per quei 2
secondi dello spalsh!)
