Newsgroup: it.comp.lang.visual-basic
Titolo: MA PORKA LA PUPAZZA MANNARA!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Dico io ma devo incappare sempre in cose che vanno oltre la logica?
Mi serve un form che resti sempre in primo piano, sono andato sul sito
comune ho prelevato il codice di cui necessitavo e l' ho provato......
niente non funziona!
Allora mi sono messo a spulciare le MSDN ed ho trovato un file d' esempio
che fa al caso mio.... e non funziona nemmeno quello!
A parte il fatto che rimpicciolisce il form e nessuno glie lo ha detto....
ma poi il form non resta x niente in primo piano!
Di seguito metto il codice incriminato x prego qualcuno di provarlo x vedere
se anche a lui da gli stessi problemi oppure se devo andare a Lurdes (si
scrive cosě?) a farmi benedire.
----------------------------------------------------------------------------
---
In questo esempio un form viene impostato in modo che rimanga sempre in
primo piano. Per eseguire questo codice di esempio, creare un form (che non
sia un form MDI secondario) e quindi creare un menu Principale. Inserire un
sottomenu denominato Sempre in primo piano e impostare il nome su
mnuTopmost. Creare un nuovo modulo scegliendo Inserisci modulo dal menu
Progetto. Incollare l'istruzione Declare nella sezione Dichiarazioni del
nuovo modulo, assicurandosi che l'istruzione si trovi su un'unica riga senza
interruzioni o ritorno a capo. Incollare quindi la routine Sub nella sezione
Dichiarazioni del form e premere F5.
' Dichiarazione di una routine di Windows.
' Questa istruzione č relativa al modulo.
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
' Imposta alcuni valori costanti (da WIN32API.TXT).
Const conHwndTopmost = -1
Const conHwndNoTopmost = -2
Const conSwpNoActivate = &H10
Const conSwpShowWindow = &H40
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
--
Never mess with a Wizard!


Ecco...non vorrei dire una ca[ ]ata ma...  Mettendo tutti quegli zeri tu gli
hai praticamente detto di spostare la finestra alla posizione 0,0 (in alto a
sinistra) e di dimensioni 0,0 !!
E' per quello che il form si rimpicciolisce, perche' gli hai detto che la
"larghezza" e l' "altezza" deve essere 0.
Per il resto non so, non ho qui un esempio da postarti ma sicuramente
qualcun'altro lo sapra'
Ciao, spero di esserti stato utile !
DaVe

Il tuo codice contiene delle costanti errate. Beccati questo:
Private Const HWND_TOPMOST = -1
Private Const HWND_NoTopmost = -2
Private Const SWP_NOSIZE = &H1
Private Const SWP_NOMOVE = &H2
Private 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 Protagonista()
   SetWindowPos Me.hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE
End Sub
Public Sub Comparsa()
   SetWindowPos Me.hwnd, HWND_NoTopmost, 0, 0, 0, 0, SWP_NOMOVE Or
SWP_NOSIZE
End Sub
Mi raccomando occhio a ripristinare la giusta formattazione del testo.
P.S.: Se non ci riesci neanche con questo prima di andare a Lourdes (non so
se si scrive cosě), fammi sapere cosě ti invio privatamente un sorgente di
esempio perfettamente funzionante.
In attesa di tue notizie pregherň per te!

 



Per quanto riguarda le dimensioni vale l'osservazione fatta da DaVe, se non
vuoi modificarne la dimensione e la posizione devi utilizzare SWP_NOSIZE e
SWP_NOMOVE. Per il resto funziona tutto (a condizione che hWnd sia uguale
all'handle del form che vuoi portare in primo piano)
Ciao Bruno