Newsgroup: it.comp.lang.visual-basic
Titolo: Evento non gestito dal VB??

Salve a tutto il NG.
Ho questo problema: sto svuluppando un programma che, al suo avvio,
visualizza un form (frmPrincipale) nel quale vengono visualizzate tutte le
informazioni di esecuzione. Questo form non ha caption, ne pulsanti di
maximize/minimize, niente di niente. La  proprietà ShowInTaskBar = True  per
permettermi di recuperarlo se va sotto altre finestre di altri programmi
(per ora il pulsante sulla taskbar è grigio, senza icona ne caption., ma non
ha importanza). Ora, tramite vari pulsanti presenti sul form apro altri
forms (figli) che NON hanno la ShowInTaskBar = True, altrimenti arriverei
fino a 10 pulsanti sulla taskbar per un solo programma (che non è bello..)
ma se apro Word a pieno schermo e volessi poi ritornare sul mio programma
cliccando l'unico pulsante sulla taskbar il focus passa al frmPrincipale
anche se era aperto un form figlio o un figlio di figlio.
Ho provato ad implementare un sistema di attivazione a cascata, tramite
metodi pubblici esposti da ogni form e la cosa funzionerebbe se Visual Basic
disponesse di un evento che mi informa che l'utente ha fatto click sulla
taskbar, ma così non è. Infatti Form_GotFocus non scatta, Form_Activate solo
alla prima visualizzazione, Form_Paint scatta troppo spesso o per niente e
non scatta se .AutoRedraw=True. Insomma, non ho modo di capire quando viene
riattivato il frmPrincipale da taskbar o uno qualsiasi dei form della mia
applicazione cliccando sull'area visibile del form stesso.
Vorrei tentare con il subclassing (ma non saprei di quale form) per
intercettare l'evento di riattivazione del form o di click sulla taskbar ma
non ho idea di come procedere.
Qualcuno ha già affrontato e risolto il problema?
Grazie a tutti, Massimo.


Se ho capito bene ( sai a volte non capisco quello che leggo... ) tu vuoi
fare in modo che i tuoi form figlie si riattivino con il form principale.
Giusto?
Se si, mi permetto di consigliarti di usare un MDIForm, sulla taskbar avrai
una sola applicazione e gli altri form "vivranno" all'interno del form
principale.
In pratica il funzionamento è lo stesso di Word con più documenti aperti.
Ciao
 
--------------------------------
Inviato via 
http://usenet.libero.it

 ha scritto nel messaggio
news:Zp75a.207207$0v.58...@news1.tin.it...
[cut]
per intercettare il ripristino della tua form devi tenere presente l'evento
resize.
potresti mettere un flag per capire se la form era minimizzata inserendo un
codice del genere (buttato li', non so se funziona):
private sub form_resize()
    if me.windowstate = vbminimized Then
        'se al resize questo si verifica, la form e' stata appena
minimizzata
        'quindi imposto il flag a vero
        m_bMin = True
    else
        'in ogni altro caso verifico il flag
        If m_bMin Then
            'se lo trovo vero vuol dire che la form e' stata ripristinata
            m_bMin = False
            'operazioni varie di attivazione dei form "figli"
        end if
   end if
end sub
guardati inoltre le form modali e modeless (come si traduce?), nella guida,
riguardo al metodo .show dei form; non so se le conosci, magari possono fare
al caso tuo.
ciao, assa.

 Inviato via 
http://usenet.libero.it
Scusa no Word , Access con piů tabelle o query aperte!!!


 ha scritto nel messaggio
news:194Z185Z250Z2Y1...@usenet.libero.it...


 ha scritto nel messaggio
news:b33158$1hgalu$1...@ID-60516.news.dfncis.de...

Ho fatto qualche test con l'evento Resize, ma non sono riuscito a farlo
funzionare (al ritorno da una qualsiasi applicazione non viene notificato
l'evento). Tieni presente che il mio form è un Fixed Double

 notificato l'evento). Tieni presente che il mio form è un Fixed Double
a questo punto gestisci direttamente il click sul tuo form nella tray cioe'
non lasciare a windows la riattivazione dei form ma fallo tu con una tua sub
es:
Click su form a video o in traybar => Riattivaform
sub RiattivaFom
 for each form.....
        .hide
        .show
...
che ne dici ?
-- 
<Gigio2K>
Sito Comune
Nokia -> I.T.H.N. -> 
http://www.ithn.it/
VB -> I.C.L.VB -> 
http://www.it-lang-vb.net/

Dico che nemmeno questo va.. passi per il click sul form (purché
Me.Enabled=True) ma il click sulla TaskBar proprio non riesci a beccarlo.
La suluzione l'ho trovata cona il subclassing del messaggio WM_APPACTIVATE
ma è sempre un metodo un po' pericoloso per VB..
Ma mi sa che non c'è altra soluzione.
Grazie a tutti per l'interessamento!
""Gigio2K"" <baronef...@SPAM-YOURSELFyahoo.com> ha scritto nel messaggio
news:Gxe5a.140927$ZE.40...@twister2.libero.it...



Infatti non credo ci sia altra soluzione, ma se applicata bene non è cosi
pericolosa.
Cmq il messaggio è WM_ACTIVATEAPP.
Ciaoo
