Newsgroup: it.comp.programmare.win32
Titolo: Problema...barra del titolo sempre attiva

Salve...
Vi espongo tutto il problema, non ridete.
Grosso applicativo gestionale, piuttosto verticale.
Progettato per funzionare a TUTTO SCHERMO in 1024*768, senza bordi ne' barre 
del titolo di Windows. Lo so' che sembra assurdo, ma in realta' dietro c'e' 
un suo perche' ben preciso.
Funziona , e' comodissimo, i clienti sono ultra contenti.
Problema: qua' e la' dai clienti arrivano dei monitor LCD che ovviamente 
vanno solo alla risoluzione che vogliono loro oppure lo schermo si vede di 
merda. Vabbe'...
Pero' il software diventa un disastro...e' ancora usabile, ma massimizza 
tutte le sue finestre ed il risultato e' che in alto a sinistra c'e' un'area 
di 1024*768 dove c'e' il programma, e nel resto dello schermo un bel fondo 
bianco dovuto al fondo delle finestra massimizzate ed in cui non c'e' 
grafica...
Per farla breve, ho i sorgenti del gestionale, ho gia' risolto il 99% dei 
problemi, le finestre si aprono sempre in 1024*768 e non massimizzate, si 
piazzano al centro dello schermo e non in alto a sinistra, e volendo si 
potrebbero muovere anche.
Per rendere il tutto piu' piacevole ho inserito una finestra con client area 
{0,0}, in pratica una finta barra del titolo appoggiata in cima 
all'applicazione che finge il funzionamento di una vera finestra (minimize e 
move).
Gli ultimi due punti che mi piacerebbe sistemare sono (e qui finalmente si 
arriva alle domande):
1) Fare in modo che la finestra in questione abbia la barra del titolo 
sempre attiva (o anche solo l'aspetto), anche se non lo e' visto che sono le 
finestre dell'applicazione ad essere attive di volta in volta.
2) Fare in modo che, nell'ambito dell'applicazione, la finestra resti sempre 
dietro. Il punto e' che se riuscissi a farlo, potrei impostare la client 
area della finestra a 1024*768 ed infilarci dentro il resto del software, 
dando l'illusione completa (grazie ai bordi) del fatto che il gestionale e' 
in finestra.
Se qualcuno ha da indicarmi qualche API adatta all'uopo, e' ben accetto :-)
Grazie! 

 accetto :-)
Se non vado errato, potresti semplicemente inserire i valori di TopMost con
l'API ShowWindows (o ora SendMessage?!?!)
Ora vedo...

 essere impostare il processo padre come TopMost...
No, spetta, non e' cosi' semplice...
Il software e' scritto in VB6. Consiste in una serie di finestre NON 
MdiChild che si incastrano l'una l'altra a formare una finestra in 1024*768 
pienamente utilizzata, chiamiamola Finta Finestra.
DEVO prevedere due soluzioni:
1) Lo schermo e' in 1024*768: niente barre del titolo, niente bordi, niente 
di niente oppure l'applicativo non sta sullo schermo.
2) Lo schermo e' in piu' di 1024*768: deve apparire una finta barra del 
titolo e possibilmente i bordi intorno alla Finta Finestra, in modo da dare 
l'illusione che sia un normale applicativo.
Ora, in VB6 o la finestra e' MDIChild sin dall'inizio, o non lo e': non se 
ne puo' cambiare lo stile al volo. Inoltre, dato che la Finta Finestra e' un 
collage di altre, mi troverei con un tot di barre del titolo.
La soluzione che ho adottato per ora funziona benissimo; quello che mi serve 
adesso e' capire se su Win32 esiste una API che forzi una finestra a 
rimanere sempre dietro a tutte le altre, anche se l'utente ci clicca sopra 
rendendola attiva...
Piu' chiaro, adesso? :-)

Piu' chiaro, adesso? :-)
E' piu' chiaro, ma non capisco perche' le finestre non sono
create child (non MDIchild che e' un'altra cosa...) fin
dall'inizio. Se avessero come parent la finestra principale tutto
quello che chiedi sarebbe risolto. Sarebbe ancora meglio che esse
fossero modali, ma questo forse non e' possibile per le esigenze
della tua applicazione. Comunque c'e' sempre la SetParent...
Non trovo pero' l'idea di *creare* una finestra solo per
disegnarci la barra del titolo. Io avrei subclassato la finestra
principale e avrei disegnato direttamente la barra e i bordi...
Pero', se vuoi fare le cose complesse ;) puoi sempre intercettare
il messaggio WM_NCACTIVATE della finestra principale e mandare
una SetWindowPos con posizione TOP (non TOPMOST) a tutte le
finestre aperte.

 finestre aperte.
Ci provo, ti faccio sapere :-)