Newsgroup: it.comp.lang.visual-basic
Titolo: Anomalie con finestre dockable (ancorabili) in un MDI con ToolBar

Ciao a tutti,
Ho l'esigenza di ancorare un form in un MDI e ho trovato il seguente
codice:
 
    dwStyle = GetWindowLong(Form1.hWnd, GWL_STYLE)
    dwStyle = dwStyle Or WS_CHILD
    dwStyle = dwStyle And (Not WS_POPUP)
    SetParent Form1.hWnd, MDIForm1.hWnd
    SetWindowLong Form1.hWnd, GWL_STYLE, dwStyle
che funziona benissimo e rende dockable (ancorabile) la form1.
Poi ho piazzato una bella ToolBar nel MDI e fin qui tutto bene, ma se
tento di ridimensionare l'MDI (o se lo massimizzo), la mia ToolBar
scompare come per magia!!! Spy++ mi indica che è ancora presente, ma
non si vede, ho provato anche a fare il refresh, scrivere
MDIForm1.Toolbar1.visible=TRUE, ma niente! Esiste ma non viene
visualizzata, perchè!?
P.S per comodità per chi volesse provare il codice riporto qui sotto
le definizioni delle API e delle costanti utilizzate:
Private Declare Function GetWindowLong Lib "user32" Alias
"GetWindowLongA" _(ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetParent Lib "user32" (ByVal hWndChild As
Long, _ ByVal hWndNewParent As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias
"SetWindowLongA" _ (ByVal hWnd As Long, ByVal nIndex As Long, ByVal
dwNewLong As Long) As Long
Private Const GWL_STYLE = (-16)
Private Const WS_CHILD = &H40000000
Private Const WS_POPUP = &H80000000
Grazie in anticipo, 
Templar

 scompare come per magia!!!
Provato a verificare la proprieta' Negoziabletoolbar della MDI ? Non e' che
forse e' quella a fare un po di "casino" ?

Gigio2k [work] ha scritto:


Si ho provato, ma niente! Qualche altra idea!?
Templar
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 Si ho provato, ma niente! Qualche altra idea!?
bha per me solo quella proprieta' poteva influire sulla Toolbar della
child... bho prova a chiarirmi le idee, in pratica dopo il "docking" della
finestra la toolbar "sparisce" ma l'area occupata in precedenza dalla
toolbar e' vuota o viene riempita dall'area della form ? bha !

 toolbar e' vuota o viene riempita dall'area della form ? bha !
No dopo il docking, ma dopo un resize dell'MDI !! Lo spazio della toolbar
rimane vuoto! E' più semplice da vedere che da spiegare. Il codice è
questo:
' -----------------------------------------------------------------------
' -----------------------------------------------------------------------
Private Declare Function GetWindowLong Lib "user32" Alias
"GetWindowLongA"_ (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long,_
ByVal hWndNewParent As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias
"SetWindowLongA"_ (ByVal hWnd As Long, ByVal nIndex As Long, ByVal
dwNewLong As Long) As Long
Private Const GWL_STYLE = (-16)
Private Const WS_CHILD = &H40000000
Private Const WS_POPUP = &H80000000
Private Sub Form_Load()
    Dim dwStyle As Long
 
    dwStyle = GetWindowLong(Me.hWnd, GWL_STYLE)
    dwStyle = dwStyle Or WS_CHILD
    dwStyle = dwStyle And (Not WS_POPUP)
    SetParent Me.hWnd, MDIForm1.hWnd
    SetWindowLong Me.hWnd, GWL_STYLE, dwStyle
 
End Sub
' -----------------------------------------------------------------------
' -----------------------------------------------------------------------


 Templar
    Mi rispondo da solo!! Ho trovato il modo! Basta applicare una picture
all'MDI e poi ancorare il form a quest'ultima invece che all'MDI!! Mah...
segreti di VB e della GUI di Windows!!


 
Non so come risolvere il tuo problema.
Pero', interessato dalla cosa, ho provato questo codice.
E non mi rende ancorabile la finestra, semplicemente l'avvicina
al bordo del form.
-- 
Samuele Battarra
prova il mio newsreader:
http://space.virgilio.it/batt...@tin.it/programmi/news/