Newsgroup: it.comp.lang.delphi
Titolo: Gestione finestre interne al programma

  |
|  Use manually this address!!   |
|  ICQ#: 19577419                |
+--------------------------------+

Come posso fare?
non ti basta fare qualcosa tipo Word ?
Se hai fatto caso, quando scrivi piů documenti, questi compaiono (quando
ridotti ad icona) nella finestra base di Word. Cliccandoci sopra č possibile
ripristinarli.
Questo accade anche in Paint Shop Pro e molti altri programmi !!
Se vuoi far a tutti i costi quello che dici tu, dovrei vedere un po' l' SDK,
perchč proprio non mi č mai passato di mente realizzare una cosa simile !!
Ciaooooo !!!
Antonio Tarolla
BSSoftware Tips Mailing - List Support

 ripristinarli.
Ok, ma io non ho delle finestre MDI. Quello lo so fare, ma non è quello che
serve a me.
Mi serve fare una cosa tipo Outlook Express, quando crei un nuovo messaggio.
Non c'è per caso, un API o qualcosa del genere?
Ciao


Non c'è per caso, un API o qualcosa del genere?
buona notizia, forse ci sono riuscito. (dico forse perchè non ho nemmeno il
tempo di fare molte prove).
Fortunatamente ho trovato subito quello che mi serviva e nel tempo
cronometrico di circa 5 minuti ho messo a segno la soluzione. Cercherò di
essere preciso senza prolungarmi in altri messaggi.
Nel Win32SDK (la guida per eccellenza anche se non molto approfondita per
quanto riguarda gli esempi) c' è scritto che per rendere visibile la form
ecc... nella taskbar devi utilizzare lo stile WS_EX_APPWINDOW
nell' API CreateWindowEx. E ti pareva....sta' API sta sempre in mezzo come
Mercoledì.
Ovviamente sospettavo che CreateWindowEx c' entrasse qualcosa, però cerco di
non utilizzarla. (troppi parametri senza contare i tentativi)
Come risolvere ? Bè, vediamo quello che devi fare prima di passare al
codice.
La form Delphi utilizza degli stili predefiniti che tu setti (alcuni di
questi) tramite le proprietà nell' object inspector.
Hai presente la trasparenza di una form ? Bè, anche se non funziona
ottimamente è pur sempre uno stile non direttamente utilizzabile in Delphi
ma con qualche accorgimento puoi utilizzarli ugualmente.
TForm discende da TCustomForm dove c' è un metodo che risolve la nostra
situazione.
Si tratta di CreateParams. Per utilizzare questo metodo lo devi ridefinire,
quindi fai l' override questo modo:
procedure CreateParams(var Params:TCreateParams);override;
e poi nell' implementazione scrivi così:
procedure TForm2.CreateParams(var Params:TCreateParams);
begin
  inherited CreateParams(Params);
  Params.ExStyle:=Params.ExStyle or WS_EX_APPWINDOW;
end;
come vedi ho aggiunto lo stile trovato nel Win32SDK. Sembra funzionare. Lo
stile lo puoi sicuramente trovare guardando la CreateWindowEx. Io ci sono
arrivato dal sommario perchè speravo in qualche funzione ma poi mi sono
ritrovato li. Per quanto riguarda CreateParams trovi tutto nell' help di
Delphi.
Ho provato una sola volta perchè ho molto da fare e se non riuscivo a fare
tutto in 5 minuti ci rinunciavo.
Può anche darsi che ci sia un' altra soluzione più rapida, ma non posso più
aiutarti a cercarne perchè ho troppo da fare.
Ti saluto e buon lavoro.
Ciaoooooo !!!!


YEAH!! Ce l'ho fatta!!!!
Devo perņ svelarti un segreto: io uso C++ Builder!!
Ho dovuto 'bestemmiare' non poco per convertire il codice che mi hai proposto,
ma alla fine ci sono riuscito!!!
Ecco il risultato finale (a chi interessa):
Prototipo:
void __fastcall CreateParams(TCreateParams &Params); override();
Definizione:
void __fastcall TForm2::CreateParams(TCreateParams &Params)
{
  inherited::CreateParams(Params);
  Params.ExStyle=Params.ExStyle | WS_EX_APPWINDOW;
}
Grazie MILLE


ma alla fine ci sono riuscito!!!
se me lo dicevi ti avrei dato una mano visto che stavamo in argomento ormai.
Tu magari non l' hai detto per non essere OT (ed hai fatto bene).
E' vero che avevo da fare, ma la soluzione in Delphi era ormai trovata, per
convertirla in C++ con un po' di impegno ci sarei riuscito.
La mia versione Demo del C++ Builder è scaduta ma gli help funzionano
ancora. :-)))
Comunque il tuo codice sembra esatto, del resto è molto simile a quello di
Delphi.
Le classi si chiamano allo stesso modo, (forse qualcuna cambia) cambiano gli
operatori ecc....comunque è molto simile. Poi ho visto ora l' help ed il
prototipo era scritto proprio li.
Ok, alle prossime e buon lavoro.
Ciaooo !!
