Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [C] Win32 API: Forzare il Repaint di una finestra

    Salve a tutti.
    In un programma, usando le Win32 API, ho creato degli Static controls che raffiguravano ognuno un colore diverso (settandoli attraverso un WM_CTLCOLORSTATIC). Quando l'utente clicca su una di esse, si apre una MDIClient che ha a sua volta altri Static controls con altri colori. Se clicca in uno di essi, lo Static control precedentemente cliccato diventava di quel colore. Il problema è che quando cambio il colore dello Static control della finestra principale (ho creato un array di HBRUSH), in realtà non cambia colore, se non nascondendo e facendo riapparire la finestra. Quindi sono obbligato a mettere un flag che quando sarà 1 nasconderà e farà riapparire la finestra:
    codice:
    if(flagRepaint){
              ShowWindow(hwnd,SW_HIDE);
              ShowWindow(hwnd,SW_NORMAL);
              flagRepaint=0;
    }
    Ma questa soluzione appare non elegante, ed ogni volta che si nasconde e riappare c'è un istante in cui si vede che effettivamente la finestra si nasconde. Come potrei ovviare a questo problema?! Ho già provato i vari InvalidateRect(), UpdateWindow(), RedrawWindow(), ma senza risultato.

  2. #2
    Dovrebbe ridisegnarsi correttamente con InvalidateRect... come lo richiami? Che hwnd specifichi?
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.