Newsgroup: it.comp.lang.visual-basic
Titolo: [?] Aggiornare la barra del titolo

Salute a tutto il NewsGroup, avrei bisogno di un'informazione:
in un command button ho scritto il codice per cambiare lo stile della
finestra togliendogli la barra del titolo (con SetWindowLong), solo che la
modifica "effettiva" avviene solamente nel momento in cui la ridimensiono;
infatti se, dopo la chiamata a SetWindowLong, faccio
MainForm.Height = Mainform.Height + 100
MainForm.Height = Mainform.Height - 100
funziona benissimo. (non c'č codice nella routine Form_Resize)
Il problema č che se la form č massimizzata o ridotta ad icona non posso
ridimensionarla perchč genera errore. Effettivamente non mi sembrava un
metodo molto elegante, c'č per caso qualche sistema piů efficace per
risolvere il mio problema?
Grazie a tutti per l'interessamento
Faber
P.S.: spero di essere stato chiaro, uhhmmmmm......  :)

 risolvere il mio problema?
Me.Refresh?
--
Ciao.
Maurizio

>Me.Refresh?
eh, purtroppo no... ho provato quello e anche RedrawWindow, UpdateWindow ma
niente...
Faber

niente...
Cosa hai usato con il SetWindowLong()?

> Cosa hai usato con il SetWindowLong()?
ho usato GWL_STYLE e come terzo parametro il risultato di GetWindowLong (con
lo stesso parametro) - WS_CAPTION, naturalmente controllando che
effettivamente la finestra avesse la barra del titolo...
Faber

> Cosa hai usato con il SetWindowLong()?
ok mi sono reso conto che da quello che ho scritto prima si capisce poco o
nulla, perciò scrivo la sub:
Private Sub TogliCaption(hWnd as Long)
    Dim Res As Long
    Dim Has As Boolean
    Res = GetWindowLong(hWnd, GWL_STYLE)
    Has = CBool(Res And WS_CAPTION)
    If Has Then SetWindowLong hWnd, GWL_STYLE, Res - WS_CAPTION
End Sub
Faber

Prova un po' con le funzioni di settaggio - pes SetWindowPos con
SWP_FRAMECHANGED
----------------------------------------------------------------------
Stefano Minardi
Zetesis: 
zet...@mclink.it
----------------------------------------------------------------------

SWP_FRAMECHANGED
ti ringrazio per il suggerimento secondo me ottimo, ma ho avuto bisogno
d'intercettare nella NewWindowProc (ho effettuato il SubClassing) il
messaggio WM_SIZING, e facendo delle elaborazioni lě dentro sembra che vada
tutto a posto
grazie lo stesso!!!
Buona Giornata a tutti
Faber

Faber
Come l'80% delle domande la risposta č nell'MSDN:
WS_CAPTION   Creates a window that has a title bar (implies the WS_BORDER
style).
Prova sostituendo l'ultima linea con
If Has Then Call a.SetWindowLong(hWnd, GWL_STYLE, Res - WS_CAPTION -
WS_BORDER)
Ciao.

...
hem, cioč:
If Has Then Call SetWindowLong(hWnd, GWL_STYLE, Res - WS_CAPTION -
WS_BORDER)
Ciao.

WS_BORDER)
ehmmm, questo cmq non risolve il problema del refresh (nel senso che anche
facendo così le modifiche mi appaiono solo dopo che ho ridimensionato), però
risolve una cosa bruttina: cioè che se il BorderStyle originario è per es. a
1 - Fixed Single nel caso precedente toglieva i bordi, così invece li
disegna 'piatti' (una linea nera)
comunque ho scoperto che per ovviare a questo difetto basta usare
DrawMenuBar dopo il cambio di stile, spero che sia utile a qualcun'altro.
grazie comunque per gli aiuti e i suggerimenti!
Faber

disegna 'piatti' (una linea nera)
mi correggo. togliere anche WS_BORDER va bene solo se lo stile originario
della finestra non consentiva il ridimensionamento, se per es. quello
originale era a 2 - Sizable dopo non mi permette piů di ridimensionarla
(non so se mi sono fatto capire    ;)      )
Faber