Article View: free.it.visual-basic
Article #3289Re: MDIChild in DLL
From: Gurumeditation
Date: Sun, 28 Jul 2002 07:40
Date: Sun, 28 Jul 2002 07:40
59 lines
3204 bytes
3204 bytes
Io Avevo lo stesso problema qualche giorno f�....
l'ho risolto ricorrendo all'API di Windows: SetParent
In pratica devi:
1) dichiarare il Form "child" che appartiene alla tua Dll come un
normale Form (propriet� MDIChild=False).
2) Prima di mostrare il Form con .show usa la seguente funzione
SetParent (NomeForm.hwnd, hwndDelFormMDI)
ovviamente per poter utilizzare questa... devi prima dichiararla nella
sezione generale (nella Dll):
'Utilizzo una API di Windows per "forzare" il Form in Modo che sia
'Figlio del Form MDI creato nell'altra libreria o nell'EXE
Private Declare Function SetParent Lib "user32" (ByVal hwndchild As Long,
ByVal hwndParent As Long) As Long
PS: hwndDelFormMDI : � l'handle del Form MDI che vuoi sia il Padre di
NomeForm. Tale Handle devi passarlo come parametro
alla Dll (ad una funzione che poi richiamer� SetParent prima di fare show
del Form)
Tale Handle ovviamente lo ottieni come:
FormMDI.hwnd
PS: s� di non essere stato molto chiaro... se non ci riesci ti mando un
esempio
al tuo indirizzo e-mail!.
Ciao.
"Maurizio Coffinardi" <coffinardi@secoges.com> ha scritto nel messaggio
news:HNdZ8.59166$K_4.1179053@twister1.libero.it...
> Ciao a tutti.
>
> In una classica applicazione .EXE scritta in Visual basic 6 ho un form
MDI.
> Quando l'utente fa click su alcuni pulsanti di una toolbar nell'MDI,
mostro
> un form con la propriet� MDIChild impostata su True.
> Il form viene visualizzato all'interno del form MDI.
> Vorrei gentilmente sapere se � possibile rimuovere il form dal progetto ed
> inserirlo il un modulo di classe e compilare questa classe in una DLL
> ActiveX.
> La DLL, logicamente, dovr� avere un metodo che consentir� la
visualizzazione
> del form, ma vorrei che questo form venga visualizzato all'interno
dell'MDI
> che per� fa parte di un progetto diverso (visto che si trova nell'EXE).
> Per quel che ne s� con gli strumento "normali" di VB questo non �
possibile,
> ma vorrei sapere se tramite qualche "trucchetto" (magari passando l'handle
> dell'MDI alla DLL e lavorando con le API) questa cosa pu� essere
fattibile.
>
> Grazie in anticipo.
> Maurizio
> coffinardi@secoges.com
>
>
>
Technical Details
Message-ID:
<NdN09.9974$n04.286066@twister2.libero.it>Path:
arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!sn-xit-01!sn-xit-04!supernews.com!news.maxwell.syr.edu!nntp.infostrada.it!twister2.libero.it.POSTED!not-for-mailReferences:
<HNdZ8.59166$K_4.1179053@twister1.libero.it>Show Full Headers
Complete Article Headers
X-Google-Language: ITALIAN,ASCII X-Google-Thread: f94ee,cb43e13bdf7d01d5 X-Google-Attributes: gidf94ee,public X-Google-ArrivalTime: 2002-07-28 00:47:54 PST Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!sn-xit-01!sn-xit-04!supernews.com!news.maxwell.syr.edu!nntp.infostrada.it!twister2.libero.it.POSTED!not-for-mail From: "Gurumeditation" <vito.dic@libero.it> Newsgroups: free.it.visual-basic References: <HNdZ8.59166$K_4.1179053@twister1.libero.it> Subject: Re: MDIChild in DLL Lines: 61 X-Newsreader: Microsoft Outlook Express 6.00.2600.0000 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2600.0000 Message-ID: <NdN09.9974$n04.286066@twister2.libero.it> Date: Sun, 28 Jul 2002 07:40:29 GMT NNTP-Posting-Host: 62.98.235.52 X-Complaints-To: abuse@inwind.it X-Trace: twister2.libero.it 1027842029 62.98.235.52 (Sun, 28 Jul 2002 09:40:29 MET DST) NNTP-Posting-Date: Sun, 28 Jul 2002 09:40:29 MET DST Organization: [Infostrada]