PDA

Visualizza la versione completa : [C++] Forzare il ridisegno di tutti i controlli di un Frame (libreria MFC)


giuseppe500
04-12-2007, 13:48
Ciao.
Ho un applicazione in cui necessito di ridisegnare l'area del frame(cornice ,toolbar ecc...)
come posso forzare il ridisegno di tutti i controlli del frame?
In pratica nell'applicazione cosi come adesso scompaiono le toolbar dopo averle riposizionate in una particolare maniera e , se minimizzo la finestra e poi la ripristino le toolbar ricompaiono,
per questo che pesavo di utilizzare il ridisegno.
grazie.

giuseppe500
05-12-2007, 11:36
up

giuseppe500
10-12-2007, 10:32
up

oregon
10-12-2007, 10:37
Penso che tu possa risolvere chiamando la

Invalidate();

giuseppe500
10-12-2007, 12:11
grazie oregon.
Invalidate ma di che cosa?della finestra ?, del frame ?
Il fattaccio che se minimizzo la finestra e poi la massimizzo tutte le toolbar sono al loro posto ,altrimenti alcune spariscono.
Non riesco a capire.
l'errore deriva da una procedura di disegno opengl , su cui non so molto , quando faccio il render solido di un disegno scompare la toolbar ,di piu' nso.
sai cosa potrebbe essere?
ciao.

oregon
10-12-2007, 12:34
La Invalidate sa cosa fare ... hai provato?

Il fatto che ci sia OpenGL cambia un po' le cose ... (magari dovevi precisarlo prima ...) ... non ho capito se quello che non viene visualizzato e' renderizzato da OpenGL o dalle normali GDI ...

giuseppe500
10-12-2007, 12:51
scusa oregon se ti ho fatto perdere tempo , effettivamente nel programma si usa sia opengl sia gdi,ma sopra alle toolbar non vengono renderizzate immagini da opengl , magari pero' la finestra opengl nasconde la toolbar in parte,insomma non voglio sparare e chiedo a te se gentilmente hai dei consigli su cui lavorare.
Il codice non lo posso postare ,sarebbe troppo ampio.
ti posso dire che nella classe glview che deriva da cview ho questa inizializzazione:
BOOL CGLView::InitializeOpenGL()
{
CClientDC dc(this);

possibile che la glview si sovrapponga alle toolbar?

giuseppe500
10-12-2007, 14:25
trovato il problema:
Ho una funzione chiama movie che ruota un immagine 3d attorno ad un asse.
QUesta funzione viene richiamata da un timer ogni tot di millisecondi.
In questa funzione alla fine c' un invalidate.
L'invalidate aggiorna l'immagine , ma blocca tutto e rende tutto moooolto lento.
Se non metto l'invalidate funziona tutto correttamente solo che non ruota l'immagine.
Ho provato a settare il timer con un periodo piu' corto e tutto funziona(immagine ruotata e toolbar).
Penso che l'invalidate sia molto lento , esiste qualcos altro di piu leggero?
grazie.

giuseppe500
10-12-2007, 18:13
mi basterebbe fare un invalidate che non tocca le toolbar e i controlli del frame.
possibile?

Loading