Newsgroup: it.comp.lang.visual-basic
Titolo: Always on top: come si fa?

Ciao a tutti
Qualcuno sa dirmi come posso tenere un form sempre in primo piano con 
VB5?
Grazie anticipate
Sabino

' Window sempre in primo piano
Public Declare Function 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) As Long
Public Sub SempreInPrimoPiano(frm As Form, Flag As Boolean)
    Const HWND_TOPMOST = -1
    Const HWND_NOTOPMOST = -2
    Const SWP_NOMOVE = &H2
    Const SWP_NOSIZE = &H1
    Const SWP_NOACTIVATE = &H10
    Const SWP_SHOWWINDOW = &H40
    Const FLAGS = SWP_NOMOVE Or SWP_NOSIZE
    Dim Success As Long
    If Flag Then
        ' Form in primo piano
        Success = SetWindowPos(frm.hWnd, HWND_TOPMOST, 0, 0, 0, 0, FLAGS)
    Else
        ' Form allo stato normale
        Success = SetWindowPos(frm.hWnd, HWND_NOTOPMOST, 0, 0, 0, 0, FLAGS)
    End If
End Sub
--
Pino Saffioti
-----------------------
pi...@asl1.to.it
Civita Sabino ha scritto nel messaggio ...




Questo mettilo in un modulo bas
Declare Function SetWindowPos Lib "user32" Alias _
"SetWindowPos" (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) As Long
Global Const conHwndTopmost = -1
Global Const conHwndNoTopmost = -2
Global Const conSwpNoActivate = &H10
Global Const conSwpShowWindow = &H40
Questa è una sub che controlla il segno di spunta su un menu:
Private Sub mnuTopmost_Click ()
 ' Aggiunge o rimuove il segno di spunta dal menu.
 mnuTopmost.Checked = Not mnuTopmost.Checked
 If mnuTopmost.Checked Then
  ' Attiva l'attributo TopMost.
  SetWindowPos hWnd, conHwndTopmost, 0, 0, 0, 0, conSwpNoActivate Or
conSwpShowWindow
  Else
  ' Disattiva l'attributo TopMost.
  SetWindowPos hWnd, conHwndNoTopmost, 0, 0, 0, 0, conSwpNoActivate Or
conSwpShowWindow
 End If
End Sub

...
Ok, la mando a Ettore Maronese

...


VB5?
~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~
Gabriele Bertolucci - NT4WKSITA+SP3 - VB5PROITA+SP3
pbe...@vi.ats.it
pbe...@freemail.it
http://userspace.ats.it/free/pberto/
http://www.fortunecity.com/skyscraper/spiff/523/
ICQ #: 9732192
~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~


------------------------------
Ho utilizzato questa dichiarazione, ma purtroppo non sono riuscito a farla
funzionare. Infatti, le finestra vengono sì visualizzate sempre in primo
piano, ma sono di dimensioni ridottissime (più piccole non potrebbero
essere).
Per far funzionare questa dichiarazione, ho dovuto modificare leggermente le
costanti. Più precisamente, ho inserito (al posto di "conSwpNoActivate" e
"conSwpShowWindow"):
Public Const SWP_NOACTIVATE As Long = &H10
Public Const SWP_NOMOVE As Long = &H2
Public Const SWP_NOSIZE As Long = &H1
Poi, ho cambiato l'ultimo argomento della funzione "SetWindowPos" da
conSwpNoActivate Or conSwpShowWindow
a
SWP_NOACTIVATE Or SWP_NOMOVE Or SWP_NOSIZE
In questo modo, le finestre del programma vengono visualizzate sempre in
primo piano e conservano le dimensioni originali.
Spero di aver contribuito al problema. Ciao
Marco Minerva
http://www.geocities.com/SiliconValley/Foothills/7260/


Guarda sul Sito Comune, c'e' un esempietto nella sezione "Progettati Per Te"
Il sito comune di programmatori VB
http://members.xoom.com/it_lang_vb
--
Roal Zanazzi
z...@iol.it

...

-----------------------------
Ma ti ho detto che, con quella piccola modifica, sono riuscito a farla
funzionare correttamente. Poi, non ho scaricato l'esempio dal sito comune,
ma devo avvertire di un problema. Una particolare versione dell'API che
visualizza una finestra sempre in primo piano puň provocare un errore
"spazio dello stack esaurito" se si tentano di visualizzare in primo piano
piů di due finestre. Spero, perň, che questo non sia il caso dell'esempio
che si trova sul sito comune, ma non si puň mai sapere.
Per Ettore Maronese: se fossi in te, ci darei un'occhiata.
Ciao
Marco Minerva
http://www.geocities.com/SiliconValley/Foothills/7260
http://www.armaditaggia.com/marco/index.html

 
Provati, Tutto OK, sia per quello in "Piccole Perle" che per il progettino di Roal.  :-)
-- 
Hi, Ciao
Ettore                 By -MES-
http://freeweb.aspide.it/freeweb/ilmes
 
(con OCX per stampare i Recordset)



Le cose si fanno bene o non si fanno :-)
--
Roal Zanazzi
z...@iol.it

...

-----------------
Molto meglio cosě. Ciao ragazzi. Alla prossima
