Newsgroup: it.comp.lang.visual-basic
Titolo: [?]Limitazioni del movimento del form rispetto ad un form padre

Scusate, devo creare un'applicazioni che somigli ad un MDI.
Ho trovato il modo per creare la relazione Form_Padre e Form_Figlio usando
SetParent, ma non riesco a ricordarmi come creare la limitazione di movimeto
del Form_Figlio nel Form_Padre. Mi spiego meglio:
vorrei che il lato destro del Form_Figlio possa muoversi non oltre il lato
destro del Form_Padre, e cosě per tutti gli altri lati.
Qualcuno ricorda come fare?
Sono ben accetti anche consigli su come realizzare meglio il tutto.
grazie e buon inizio settimana a tutti

 Qualcuno ricorda come fare?
Prova a settare, con l'API SetWindowsLong, lo stile della finestra come
'popup', dopo averla creata e 'apparentata'
In pratica:
 Dim wl As Long
  Call SetParent(Form2.hwnd, Form1.hwnd)
  wl = GetWindowLong(Form2.hwnd, GWL_STYLE)
  'Aggiungo allo stile corrente il POPUP
  Call SetWindowLong(Form2.hwnd, GWL_STYLE, wl Or WS_POPUP)
--
Ciao, Silv:o)

Scusa, ma ho avuto dei problemi con il codice che mi hai postato, potresti
essere piů chiaro?
Grazie e scusa per l'ignoranza ;oP

 potresti essere più chiaro?
Che codice? (come dire: pare brutto ricordare a tutti di cosa si
parlava?)
E soprattutto: se hai problemi col codice, dicci almeno che problemi
hai, magari possiamo aiutarti maggiormente
finito il pistolotto, passiamo al dunque.
Il tuo problema è quello di simulare il comportamento di una finestra
child con una normale form. Hai detto di aver provato l'API SetParent
e che questa lasciava la form 'figlia' libera di muoversi oltre i
limiti della form 'genitrice'.
Ho dedotto quindi che sai usare le API e sai trovare, in rete o da
qualche altra parte, le definizioni delle funzioni e delle costanti
(sbaglio?).
Quindi non vedo dove sia il problema. Io ho fatto così (VB6 SP5,
Win2K/Win98):
1) Ho creato un progetto con due form, Form1 e Form2
2) Ho inserito nella Form1 un pulsante Command1
3) Ho inserito le dichiarazioni delle funzioni e delle costanti
4) Nell'evento Command1_Command ho messo il codice che ti ho
riportato:
Dim wl As Long
'Carica e mostra la form2
Form2.Show
'Rendila 'figlia' di Form1
Call SetParent(Form2.hwnd, Form1.hwnd)
'Leggi le impostazioni della form2
wl = GetWindowLong(Form2.hwnd, GWL_STYLE)
'Aggiung1 allo stile corrente lo stile popup
SetWindowLong Form2.hwnd, GWL_STYLE, wl Or WS_POPUP
Che problema ti da? Forse non vuoi che la finestra venga parzialmente
nascosta quando un suo margine supera quello della finestra genitrice
(ma le MDIChild fanno così!). Oppure?
--
Ciao, Silv:o)

 della finestra genitrice (ma le MDIChild fanno così!).
OK, ho visto dal post originale che quello che chiedevi era proprio
questo (in effetti dicevi "un'applicazioni che somigli ad un MDI")
Non vedo come fare se non tramite il subclassing della finestra (In
rete ci sono molti esempi, per esempio su
www.mvps.org/vbnet/code/subclass/
). Dovresti intercettare i messaggi
almeno di move e di resize, ed annullarli se vanno oltre il lecito.
Mica facile.
--
Ciao, Silv:o)

Grazie, hai colto nel segno, non volevo che il form2 (figlio) andasse oltre
i margini del form1 (padre).
Per la richiesta del codice, forse mi sono espresso male, sei stato molto
esauriente, grazie mille.
Per quel che riguarda il mio problema, ho visto delle API che permettevano
la limitazione di cui ho bisogno, ma non ricordo quali erano...vabbé, ancora
grazie per la tua disponibilità
ciao e buona giornata