Newsgroup: it.comp.lang.visual-basic
Titolo: [!] Pulsante nella barra del titolo

Come promesso ho preparato un progetto d'esempio su come aggiungere un commandbutton sulla barra del
titolo.
Vi dicevo che avevo visto il codice su una rivista: l'articolo non era di Dan Appleman, bensì di
Matt Hart ed era stato pubblicato su VBPJ nel mese di Marzo 1999.
Però non avevo voglia di ricopiare tutto l'articolo, così ho cercato una soluzione diversa e mi sono
costruito una procedura molto più semplice.
Se per caso non vi fidate e volete il motodo usato da Matt Hart, farò lo sforzo di ricopiarlo, però
funziona anche il mio... mal fidanti... :-(((
Il progettino d'esempio lo potete trovare sul Sito Comune, dal momento che, finalmente, sono
riuscito a fare un aggioramento.
Ciao,
Moreno
#sirri#@#morenosoft#.com
(togliete "#" dall'indirizzo)
Moreno Sirri VB Site - 
http://www.morenosoft.com/MSVBSite/
---------------------------------------------------------------------------
Le risposte alle tue domande le trovi sul Sito Comune di questo NewsGroup:
 
http://www.murialdo.it/it_lang_vb
---------------------------------------------------------------------------

Ciao Moreno!
Ho provato l'esempio, ma non riesco a gestire gli eventi del pulsante!
Tra le altre cose... non ho guardato bene il codice, ma mi sembra che fai un
hook di qualcosa... sigh... il mio PC si blocca inesorabilmente...
Dove sbaglio?
Grazie!
SebaMix

hook di qualcosa... sigh... il mio PC si blocca inesorabilmente...
ho gestito solo l'evento click, ma puoi inercettare gli altri messaggi nella WindowProcedure.
La form è subclassata, quindi devi chiuderla eseguendo il codice nell'evento unload della form.


Ok. Ora il tutto quadra!

 titolo.
MORENO SEI GRANDE!!!!!!!!!!!
MORENO SEI GRANDE!!!!!!!!!!!
MORENO SEI GRANDE!!!!!!!!!!!
MORENO SEI GRANDE!!!!!!!!!!!
MORENO SEI GRANDE!!!!!!!!!!!
MORENO SEI GRANDE!!!!!!!!!!!
MORENO SEI GRANDE!!!!!!!!!!!
MORENO SEI GRANDE!!!!!!!!!!!
scusate il msg, ma ve l'ho detto che Moreno e' grande?
=)
--
Fibia "Sakamoto" FBI
URL: 
www.geocities.com/fibiafbi
E-Mail: 
fibi...@hotmail.com
ICQ UIN 63586057
Membro #25 delle Brigate Takahashi Sez. Sud

=)
ehm, mi sa che il tuo spacciatore sta scadendo... ;-))
Non esageriamo: 1.73m, forse poco più, con i tacchi.... :-)) (degli stivali, intendo...
maccheavevicapito???)
Inoltre il progetto ha un bug (grazie Ettore Maronese per avermelo fatto notare):
ATTENZIONE: BUG!
Se visualizzi un'altra form sopra quella con il pulsante aggiunto, continui a vedere il pulsante in
primo piano...
Può essere un discorso interessante da approfondire in altre situazioni, ma non in questo caso.
SOLUZIONE (che pbblicherò sul SC nel prossimo aggiornamento):
Implementare una proprietà "Attiva" di tipo booleano al form interessato, poi:
Nell'evento Load del form aggiungere:
Me.Attiva = True
Nell'evento Activate del form:
Me.Attiva = True
Nell'evento Deactivate:
Me.Attiva = False
Modificare la WindowProcedure in questo modo:
Public Function CallWndProc(ByVal nCode As Long, ByVal wParam As Long, Inf As CWPSTRUCT) As Long
    Dim FormRect As Rect
    Select Case Inf.Message
        Case WM_COMMAND
            If Inf.lParam = cmdButtonHwnd Then
                MsgBox "Per ulteriori info su questo esempio: 
si...@morenosoft.com
", vbInformation,
frmMain.Caption
            End If
        Case WM_NCPAINT Or Inf.Message = WM_MOVE
            If frmMain.Attiva = True Then
                Call GetWindowRect(frmMain.hwnd, FormRect)
                Call SetWindowPos(cmdButtonHwnd, 0, FormRect.Right - 75, FormRect.Top + 6, 17, 14,
SWP_FRAMECHANGED)
            End If
    End Select
End Function
In questo modo, se il form attivo è un altro, il pulsante non viene visualizzato...


Però se il form è disattivo ma visibile? Nel senso che il form attivo è un
altro ma quello con il bottone "in più" è comunque visibile, allora il
bottone sparirà! Non è molto elegante!
CiaoZ



mmm... hai ragione
Ora cerco una soluzione.
Il problema di prima stava nel fatto che io gli facevo visualizzare l pulsante al top (HWND_TOP = 0)
Se la form non è quella attiva, bisognerebbe dirgli di disegnarlo "sotto a quella attiva ma sopra a
quella di appartenenza"..


 ha scritto nel messaggio
news:8qoj5torq84700e6h...@4ax.com...


 ha scritto nel messaggio
news:tham5tc25d5ass4l1...@4ax.com...


in testa da anni...
Eddai, un passo alla volta....
Intanto ho trovato una soluzione: vedrai che tempo una settimana qualcuno riuscirà a correggere il
bug attuale e a farlo funzionare per NT/2000... forse io... forse tu... ;-PP


 =)
In questa occasione sarei stato disposto  tollerare un post in html con font
size=+4.
Per risparmiare righe pero' io avrei scritto:
Dim i As Long
For i = 0 To 100
    Print "MORENO SEI GRANDE " & String(i, "!")
Next i
Ciao
Aldo

In bocca al Lupo! ;)
Sul Sito COmune ho appena pubblicato la versione aggiornata con quel bug praticamente corretto...
Praticamente perché il pulsante viene nascosto quando la form attiva lo ricopre anche solo
parzialmente...
Resta ancora il problema con W2000: non so perché ma WM_COMMAND viene generato qualco clicco su
qualunque commandbutton tranne che su quello.. :-(((
Continuo a provare....


 ha scritto nel messaggio
news:2ojo5tsicql8kc2lc...@4ax.com...


 ha scritto nel messaggio
news:9onm5to7uf60dmh0a...@4ax.com...
