Newsgroup: it.comp.lang.visual-basic
Titolo: [Req VB6]Posizionare una Form

Salve a tutti,
domandone:
avrei bisogno di posizionare una form esattamente sopra alla barra di
windows ed esattamente allineata a sinistra sopra il pulsante start,
indipendentemente dalla risoluzione del monitor che potrà essere variabile.
C'è un modo per calcolare queste coordinate o si va a caso?
Saluti e Grazie 1000 in Anticipo.
Marco

 C'è un modo per calcolare queste coordinate o si va a caso?
Se non prendo una cantonata, la barra di windows è sempre
larga lo stesso numero di pixel in qualunque risoluzione, quindi,
a parte il caso in cui la barra è "nascosta automaticamente" o
posizionata in uno degli altri tre lati, ti basta fare:
    MiaForm.Top = Screen.Height - MyForm.Height - (altezza della barra)
ovviamente l'altezza della barra la puoi calcolare con un po' di prove.
--
Er Roscio.

 a parte il caso in cui la barra č "nascosta automaticamente" o


 ovviamente l'altezza della barra la puoi calcolare con un po' di prove.
da quando ho schemri con un  pixelaggio decente, poiche' nel monitor si ha
parcecchio piu' spazio di fianco che sopra o sotto, tengo la barra a
sinistra o a destra, larga 3 icone del quicklaunch. lo start finisce in
alto.
programmi come photoshop o excel, che fanno un ragionamento rigido, partono
sempre nella posizione sbagliata, spesso sotto la barra...
in un vecchio programma, palarm, per far rimbalzare il form nello schermo
avevo testato lo 'screen real estate', cioe' l'area realmente praticabile,
dovunque e qualunque sia la barra. a naso, direi che si debba ricavare
quell'area e confrontarla con altezza e larghezza schermo.
codice da me, e probabilmente su parecchi siti vb, cercando appunto qc come
s.r.e.
--
ciao, a.
http://www.sundaysw.com
http://www.sundaysw.com/tmp/google.gif

 C'è un modo per calcolare queste coordinate o si va a caso?
Puoi provare con qualcosa del genere
Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" _
    (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, _
    ByVal lpsz2 As String) As Long
Declare Function GetWindowRect Lib "user32" _
    (ByVal hwnd As Long, lpRect As RECT) As Long
Type RECT
    Left As Long
    Top As Long
    Right As Long
    Bottom As Long
End Type
e quindi
Private Sub Command1_Click()
Dim hwndBar As Long
Dim hwndStart As Long
Dim rectStart As RECT
'recuperiamo l'handle della barra di windows
hwndBar = FindWindowEx(0&, 0&, "Shell_TrayWnd", vbNullString)
If hwndBar Then
    'ora prendiamo l'handle di una finestra figlia,
    'l'unica possibile con classe Button e caption Start e' proprio
    'il pulsante Start
    hwndStart = FindWindowEx(hwndBar, 0&, "Button", "Start")
    If hwndStart Then
        'Recuperiamo le coordinate (in pixel) del rettangolo che
        'delimita il pulsante
        GetWindowRect hwndStart, rectStart
        Debug.Print "Top=" & rectStart.Top
        Debug.Print "Bottom=" & rectStart.Bottom
        Debug.Print "Left=" & rectStart.Left
        Debug.Print "Right=" & rectStart.Right
    End If
End If
Ciao
-- 
Luca Dormio - 
luca....@tin.it
________________________________
"Marty, non stai ragionando in maniera quadridimensionale"
Dr. Emmett L. Brown