Problemi di visualizzazione con DrawText

di il
4 risposte

Problemi di visualizzazione con DrawText

Ciao a tutti , piccolo problema di difficile soluzione con il Borland c++.
Con le funzioni:
Canvas->FillRect(TheRect);
DrawText( Canvas->Handle ,IntToStr(im + 1).c_str(), -1,&TheRect,DT_CENTER | DT_VCENTER | DT_SINGLELINE);

disegno dei rettangoli con testo su un form , e fin quà tutto ok , quando apro e chiudo una finestra esterna al mio programma sopra al mio form i rettangoli disegnati non sono più presenti , per farli riapparire devo richiamare la funzione di disegno , questa funzione è richiamata quando muovo il form ma nel caso sopra decritto non muovendo il form la funzione non viene chiamata , ho provato con l'evento OnPaint e OnResize ma dato che nella funzione di disegno viene generato l'evento Paint il tutto non mi funziona , volevo sapere se esiste la possibilità di intercettare la visualizzazione della mia form quando torna in primo piano attraverso i message o se esiste un'altra possibilità.

Grazie a tutti.

4 Risposte

  • Re: Problemi di visualizzazione con DrawText

    Se un altro form copre il tuo windows manda un WM_PAINT alla tua finestra che tu non gestisci. Non so come lavora Borland coi messaggi ma ci sarà anche lì il modo di gestire i messaggi. Se tu stesso mandi un messaggio di OnPaint allora stai faccendo la cosa nel modo sbagliato in quanto esistono API apposta x fare la stessa cosa ma meglio. Uno x cittare è RedrawWindow.
  • Re: Problemi di visualizzazione con DrawText

    Grazie della dritta , esiste anche una API per scrivere del testo in una rettangolo ???

    Ciao e grazie
  • Re: Problemi di visualizzazione con DrawText

    Si Chiama DrawText , TextOut e TabbedTextOut
  • Re: Problemi di visualizzazione con DrawText

    Confermo.
    Tutte le volte che una porzione di una finestra che era coperta torna visibile, Windows manda le un messaggio Paint, ed a questo messaggio la tua applicazione dovrebbe reagire con le "FillRect" e "DrawText" che usi tu.

    In alternativa puoi inserire nel form un'etichetta (un controllo "static text", o anche "edit text" con il flag READONLY. In questo modo il sistema gestisce automaticamente il ridisegno.

    Michele
Devi accedere o registrarti per scrivere nel forum
4 risposte